diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-03-13 02:59:27 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-03-13 02:59:27 +0000 |
commit | 96640f6e55dc9220291dff9e9f0922437f32104b (patch) | |
tree | 6eb5d4753fde7c1a1f72a69f3eadefba540120fa /target/linux/atheros/patches-3.18/100-board.patch | |
parent | baf36d9f83a86e4d262dd16e05f79564b310377c (diff) | |
download | master-187ad058-96640f6e55dc9220291dff9e9f0922437f32104b.tar.gz master-187ad058-96640f6e55dc9220291dff9e9f0922437f32104b.tar.bz2 master-187ad058-96640f6e55dc9220291dff9e9f0922437f32104b.zip |
atheros: v3.18: rework early initialization
Do not use prom_init() callback, do memory initialization in
plat_mem_setup() callback and move serial port configuration to
arch_initcall stage.
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44715 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/atheros/patches-3.18/100-board.patch')
-rw-r--r-- | target/linux/atheros/patches-3.18/100-board.patch | 71 |
1 files changed, 34 insertions, 37 deletions
diff --git a/target/linux/atheros/patches-3.18/100-board.patch b/target/linux/atheros/patches-3.18/100-board.patch index 1e39990a2b..2099514523 100644 --- a/target/linux/atheros/patches-3.18/100-board.patch +++ b/target/linux/atheros/patches-3.18/100-board.patch @@ -314,7 +314,7 @@ +} --- /dev/null +++ b/arch/mips/ath25/prom.c -@@ -0,0 +1,40 @@ +@@ -0,0 +1,26 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive @@ -332,24 +332,10 @@ + */ + +#include <linux/init.h> -+#include <generated/autoconf.h> -+#include <linux/kernel.h> -+#include <linux/string.h> -+#include <linux/mm.h> -+#include <linux/bootmem.h> -+ +#include <asm/bootinfo.h> -+#include <asm/addrspace.h> -+#include "ar5312.h" -+#include "ar2315.h" -+#include "devices.h" + +void __init prom_init(void) +{ -+ if (is_ar5312()) -+ ar5312_prom_init(); -+ else -+ ar2315_prom_init(); +} + +void __init prom_free_prom_memory(void) @@ -1486,7 +1472,7 @@ +#endif /* __ASM_MACH_ATH25_AR5312_REGS_H */ --- /dev/null +++ b/arch/mips/ath25/ar5312.c -@@ -0,0 +1,450 @@ +@@ -0,0 +1,449 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive @@ -1904,8 +1890,7 @@ + mips_hpt_frequency = ar5312_cpu_frequency() / 2; +} + -+void __init -+ar5312_prom_init(void) ++void __init ar5312_plat_mem_setup(void) +{ + u32 memsize, memcfg, bank0AC, bank1AC; + u32 devid; @@ -1923,20 +1908,20 @@ + devid >>= AR5312_REV_WMAC_MIN_S; + devid &= AR5312_REV_CHIP; + ath25_board.devid = (u16)devid; -+} + -+void __init ar5312_plat_mem_setup(void) -+{ + /* Clear any lingering AHB errors */ + ar231x_read_reg(AR5312_PROCADDR); + ar231x_read_reg(AR5312_DMAADDR); + ar231x_write_reg(AR5312_WD_CTRL, AR5312_WD_CTRL_IGNORE_EXPIRATION); + + _machine_restart = ar5312_restart; ++} ++ ++void __init ar5312_arch_init(void) ++{ + ath25_serial_setup(AR5312_UART0, AR5312_MISC_IRQ_UART0, + ar5312_sys_frequency()); +} -+ --- /dev/null +++ b/arch/mips/ath25/ar2315.c @@ -0,0 +1,401 @@ @@ -2294,10 +2279,11 @@ + mips_hpt_frequency = ar2315_cpu_frequency() / 2; +} + -+void __init -+ar2315_prom_init(void) ++void __init ar2315_plat_mem_setup(void) +{ -+ u32 memsize, memcfg, devid; ++ u32 memsize, memcfg; ++ u32 devid; ++ u32 config; + + memcfg = ar231x_read_reg(AR2315_MEM_CFG); + memsize = 1 + ((memcfg & SDRAM_DATA_WIDTH_M) >> SDRAM_DATA_WIDTH_S); @@ -2324,11 +2310,6 @@ + break; + } + ath25_board.devid = devid; -+} -+ -+void __init ar2315_plat_mem_setup(void) -+{ -+ u32 config; + + /* Clear any lingering AHB errors */ + config = read_c0_config(); @@ -2338,6 +2319,10 @@ + ar231x_write_reg(AR2315_WDC, AR2315_WDC_IGNORE_EXPIRATION); + + _machine_restart = ar2315_restart; ++} ++ ++void __init ar2315_arch_init(void) ++{ + ath25_serial_setup(AR2315_UART0, AR2315_MISC_IRQ_UART0, + ar2315_apb_frequency()); +} @@ -2352,8 +2337,8 @@ +void ar2315_arch_init_irq(void); +void ar2315_init_devices(void); +void ar2315_plat_time_init(void); -+void ar2315_prom_init(void); +void ar2315_plat_mem_setup(void); ++void ar2315_arch_init(void); + +#else + @@ -2369,11 +2354,11 @@ +{ +} + -+static inline void ar2315_prom_init(void) ++static inline void ar2315_plat_mem_setup(void) +{ +} + -+static inline void ar2315_plat_mem_setup(void) ++static inline void ar2315_arch_init(void) +{ +} + @@ -2391,8 +2376,8 @@ +void ar5312_arch_init_irq(void); +void ar5312_init_devices(void); +void ar5312_plat_time_init(void); -+void ar5312_prom_init(void); +void ar5312_plat_mem_setup(void); ++void ar5312_arch_init(void); + +#else + @@ -2408,11 +2393,11 @@ +{ +} + -+static inline void ar5312_prom_init(void) ++static inline void ar5312_plat_mem_setup(void) +{ +} + -+static inline void ar5312_plat_mem_setup(void) ++static inline void ar5312_arch_init(void) +{ +} + @@ -2504,7 +2489,7 @@ +#endif --- /dev/null +++ b/arch/mips/ath25/devices.c -@@ -0,0 +1,180 @@ +@@ -0,0 +1,192 @@ +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/serial.h> @@ -2685,3 +2670,15 @@ +} + +device_initcall(ath25_register_devices); ++ ++static int __init ath25_arch_init(void) ++{ ++ if (is_ar5312()) ++ ar5312_arch_init(); ++ else ++ ar2315_arch_init(); ++ ++ return 0; ++} ++ ++arch_initcall(ath25_arch_init); |