diff options
author | Semen Protsenko | 2017-06-02 18:00:00 +0300 |
---|---|---|
committer | Tom Rini | 2017-06-09 20:34:53 -0400 |
commit | 00bbe96ebabbc83777cd8d6c6fd2791c5c8cf619 (patch) | |
tree | 8f26bd4c25b2a971e1068daefcb2477ae74a5ad3 /arch/arm/mach-omap2 | |
parent | f2d78c1cedfc58fe469ea45fa67c7dfbb91bcc52 (diff) |
arm: omap: Unify get_device_type() function
Refactor OMAP3/4/5 code so that we have only one get_device_type()
function for all platforms.
Details:
- Add ctrl variable for AM33xx and OMAP3 platforms (like it's done for
OMAP4/5), so we can obtain status register in common way
- For now ctrl structure for AM33xx/OMAP3 contains only status register
address
- Run hw_data_init() in order to assign ctrl to proper structure
- Remove DEVICE_MASK and DEVICE_GP definitions as they are not used
(DEVICE_TYPE_MASK and GP_DEVICE are used instead)
- Guard structs in omap_common.h with #ifdefs, because otherwise
including omap_common.h on non-omap4/5 board files breaks compilation
Buildman script was run for all OMAP boards. Result output:
arm: (for 38/616 boards)
all +352.5
bss -1.4
data +3.5
rodata +300.0
spl/u-boot-spl:all +284.7
spl/u-boot-spl:data +2.2
spl/u-boot-spl:rodata +252.0
spl/u-boot-spl:text +30.5
text +50.4
(no errors to report)
Tested on AM57x EVM and BeagleBoard xM.
Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
[trini: Rework the guards as to not break TI81xx]
Signed-off-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r-- | arch/arm/mach-omap2/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-omap2/am33xx/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/am33xx/board.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-omap2/am33xx/hw_data.c | 19 | ||||
-rw-r--r-- | arch/arm/mach-omap2/am33xx/prcm-regs.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-omap2/am33xx/sys_info.c | 10 | ||||
-rw-r--r-- | arch/arm/mach-omap2/hwinit-common.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap3/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap3/board.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap3/hw_data.c | 19 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap3/prcm-regs.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-omap2/omap3/sys_info.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-omap2/sysinfo-common.c | 21 |
13 files changed, 105 insertions, 27 deletions
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index aa3986dddb1..d43085ca98b 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -20,6 +20,7 @@ endif endif obj-y += utils.o +obj-y += sysinfo-common.o ifneq ($(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),) obj-y += hwinit-common.o obj-y += clocks-common.o diff --git a/arch/arm/mach-omap2/am33xx/Makefile b/arch/arm/mach-omap2/am33xx/Makefile index 1e4c04e7a65..b2f8158e733 100644 --- a/arch/arm/mach-omap2/am33xx/Makefile +++ b/arch/arm/mach-omap2/am33xx/Makefile @@ -21,6 +21,8 @@ endif obj-$(CONFIG_TI816X) += ti816x_emif4.o obj-y += board.o obj-y += mux.o +obj-y += prcm-regs.o +obj-y += hw_data.o obj-$(CONFIG_CLOCK_SYNTHESIZER) += clk_synthesizer.o diff --git a/arch/arm/mach-omap2/am33xx/board.c b/arch/arm/mach-omap2/am33xx/board.c index faf7d07a033..5f1bf9ce7c0 100644 --- a/arch/arm/mach-omap2/am33xx/board.c +++ b/arch/arm/mach-omap2/am33xx/board.c @@ -26,6 +26,7 @@ #include <asm/io.h> #include <asm/emif.h> #include <asm/gpio.h> +#include <asm/omap_common.h> #include <i2c.h> #include <miiphy.h> #include <cpsw.h> @@ -347,6 +348,7 @@ void early_system_init(void) #ifdef CONFIG_SPL_BUILD void board_init_f(ulong dummy) { + hw_data_init(); early_system_init(); board_early_init_f(); sdram_init(); @@ -361,6 +363,7 @@ void board_init_f(ulong dummy) int arch_cpu_init_dm(void) { + hw_data_init(); #ifndef CONFIG_SKIP_LOWLEVEL_INIT early_system_init(); #endif diff --git a/arch/arm/mach-omap2/am33xx/hw_data.c b/arch/arm/mach-omap2/am33xx/hw_data.c new file mode 100644 index 00000000000..63e55cff77d --- /dev/null +++ b/arch/arm/mach-omap2/am33xx/hw_data.c @@ -0,0 +1,19 @@ +/* + * HW data initialization for AM33xx. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko <semen.protsenko@linaro.org> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <asm/arch/omap.h> +#include <asm/omap_common.h> + +struct omap_sys_ctrl_regs const **ctrl = + (struct omap_sys_ctrl_regs const **)OMAP_SRAM_SCRATCH_SYS_CTRL; + +void hw_data_init(void) +{ + *ctrl = &am33xx_ctrl; +} diff --git a/arch/arm/mach-omap2/am33xx/prcm-regs.c b/arch/arm/mach-omap2/am33xx/prcm-regs.c new file mode 100644 index 00000000000..c9a3af65849 --- /dev/null +++ b/arch/arm/mach-omap2/am33xx/prcm-regs.c @@ -0,0 +1,15 @@ +/* + * HW regs data for AM33xx. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko <semen.protsenko@linaro.org> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <asm/arch/hardware.h> +#include <asm/omap_common.h> + +struct omap_sys_ctrl_regs const am33xx_ctrl = { + .control_status = CTRL_BASE + 0x40, +}; diff --git a/arch/arm/mach-omap2/am33xx/sys_info.c b/arch/arm/mach-omap2/am33xx/sys_info.c index 564bae67936..ea434aaf33f 100644 --- a/arch/arm/mach-omap2/am33xx/sys_info.c +++ b/arch/arm/mach-omap2/am33xx/sys_info.c @@ -51,16 +51,6 @@ u32 get_cpu_type(void) } /** - * get_device_type(): tell if GP/HS/EMU/TST - */ -u32 get_device_type(void) -{ - int mode; - mode = readl(&cstat->statusreg) & (DEVICE_MASK); - return mode >>= 8; -} - -/** * get_sysboot_value(void) - return SYS_BOOT[4:0] */ u32 get_sysboot_value(void) diff --git a/arch/arm/mach-omap2/hwinit-common.c b/arch/arm/mach-omap2/hwinit-common.c index c090442598e..7f6db3cf371 100644 --- a/arch/arm/mach-omap2/hwinit-common.c +++ b/arch/arm/mach-omap2/hwinit-common.c @@ -278,15 +278,6 @@ int checkboard(void) return 0; } -/* - * get_device_type(): tell if GP/HS/EMU/TST - */ -u32 get_device_type(void) -{ - return (readl((*ctrl)->control_status) & - (DEVICE_TYPE_MASK)) >> DEVICE_TYPE_SHIFT; -} - #if defined(CONFIG_DISPLAY_CPUINFO) /* * Print CPU information diff --git a/arch/arm/mach-omap2/omap3/Makefile b/arch/arm/mach-omap2/omap3/Makefile index 06cc9f26587..61a76b6f66b 100644 --- a/arch/arm/mach-omap2/omap3/Makefile +++ b/arch/arm/mach-omap2/omap3/Makefile @@ -14,6 +14,8 @@ obj-y += board.o obj-y += boot.o obj-y += clock.o obj-y += sys_info.o +obj-y += prcm-regs.o +obj-y += hw_data.o ifdef CONFIG_SPL_BUILD obj-$(CONFIG_SPL_OMAP3_ID_NAND) += spl_id_nand.o endif diff --git a/arch/arm/mach-omap2/omap3/board.c b/arch/arm/mach-omap2/omap3/board.c index 01df579df28..cd8e3022729 100644 --- a/arch/arm/mach-omap2/omap3/board.c +++ b/arch/arm/mach-omap2/omap3/board.c @@ -173,6 +173,11 @@ void try_unlock_memory(void) return; } +void early_system_init(void) +{ + hw_data_init(); +} + /****************************************************************************** * Routine: s_init * Description: Does early system init of muxing and clocks. @@ -181,6 +186,7 @@ void try_unlock_memory(void) void s_init(void) { watchdog_init(); + early_system_init(); try_unlock_memory(); @@ -204,6 +210,7 @@ void s_init(void) #ifdef CONFIG_SPL_BUILD void board_init_f(ulong dummy) { + early_system_init(); mem_init(); } #endif diff --git a/arch/arm/mach-omap2/omap3/hw_data.c b/arch/arm/mach-omap2/omap3/hw_data.c new file mode 100644 index 00000000000..53b220aec3c --- /dev/null +++ b/arch/arm/mach-omap2/omap3/hw_data.c @@ -0,0 +1,19 @@ +/* + * HW data initialization for OMAP3. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko <semen.protsenko@linaro.org> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <asm/arch/omap.h> +#include <asm/omap_common.h> + +struct omap_sys_ctrl_regs const **ctrl = + (struct omap_sys_ctrl_regs const **)OMAP_SRAM_SCRATCH_SYS_CTRL; + +void hw_data_init(void) +{ + *ctrl = &omap3_ctrl; +} diff --git a/arch/arm/mach-omap2/omap3/prcm-regs.c b/arch/arm/mach-omap2/omap3/prcm-regs.c new file mode 100644 index 00000000000..ca29ce9bda8 --- /dev/null +++ b/arch/arm/mach-omap2/omap3/prcm-regs.c @@ -0,0 +1,15 @@ +/* + * HW regs data for OMAP3. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko <semen.protsenko@linaro.org> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <asm/arch/omap.h> +#include <asm/omap_common.h> + +struct omap_sys_ctrl_regs const omap3_ctrl = { + .control_status = OMAP34XX_CTRL_BASE + 0x2F0, +}; diff --git a/arch/arm/mach-omap2/omap3/sys_info.c b/arch/arm/mach-omap2/omap3/sys_info.c index 7e6c2633f9b..155f5b245d7 100644 --- a/arch/arm/mach-omap2/omap3/sys_info.c +++ b/arch/arm/mach-omap2/omap3/sys_info.c @@ -17,6 +17,7 @@ #include <asm/arch/mem.h> /* get mem tables */ #include <asm/arch/sys_proto.h> #include <asm/bootm.h> +#include <asm/omap_common.h> #include <i2c.h> #include <linux/compiler.h> @@ -236,14 +237,6 @@ u32 get_boot_type(void) return (readl(&ctrl_base->status) & SYSBOOT_MASK); } -/************************************************************* - * get_device_type(): tell if GP/HS/EMU/TST - *************************************************************/ -u32 get_device_type(void) -{ - return ((readl(&ctrl_base->status) & (DEVICE_MASK)) >> 8); -} - #ifdef CONFIG_DISPLAY_CPUINFO /** * Print CPU information diff --git a/arch/arm/mach-omap2/sysinfo-common.c b/arch/arm/mach-omap2/sysinfo-common.c new file mode 100644 index 00000000000..1dc7051ab3c --- /dev/null +++ b/arch/arm/mach-omap2/sysinfo-common.c @@ -0,0 +1,21 @@ +/* + * System information routines for all OMAP based boards. + * + * (C) Copyright 2017 Linaro Ltd. + * Sam Protsenko <semen.protsenko@linaro.org> + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <asm/arch/omap.h> +#include <asm/io.h> +#include <asm/omap_common.h> + +/** + * Tell if device is GP/HS/EMU/TST. + */ +u32 get_device_type(void) +{ + return (readl((*ctrl)->control_status) & DEVICE_TYPE_MASK) >> + DEVICE_TYPE_SHIFT; +} |