[U-Boot] [PATCH 1/2] Revert "arm: omap: Unify get_device_type() function"
Siarhei Siamashka
siarhei.siamashka at gmail.com
Sun Aug 13 02:25:19 UTC 2017
This reverts commit 00bbe96ebabbc83777cd8d6c6fd2791c5c8cf619.
There were two major problems with this patch:
1. It made OMAP3530 devices non-bootable, as reported
and investigated by Derald D. Woods in
https://lists.denx.de/pipermail/u-boot/2017-August/302192.html
2. The SPL code size increased really a lot.
SPL size for omap3_beagle_defconfig build with GCC 6:
== before reverting ==
text data bss dec hex filename
49721 1505 203200 254426 3e1da spl/u-boot-spl
== after reverting ==
text data bss dec hex filename
49233 1501 203200 253934 3dfee spl/u-boot-spl
Signed-off-by: Siarhei Siamashka <siarhei.siamashka at gmail.com>
Reported-by: Derald D. Woods <woods.technical at gmail.com>
---
arch/arm/include/asm/arch-am33xx/cpu.h | 6 ++++++
arch/arm/include/asm/arch-am33xx/omap.h | 3 ---
arch/arm/include/asm/arch-omap3/omap.h | 3 ---
arch/arm/include/asm/arch-omap4/omap.h | 1 +
arch/arm/include/asm/arch-omap5/omap.h | 1 +
arch/arm/include/asm/omap_common.h | 11 +----------
arch/arm/mach-omap2/Makefile | 1 -
arch/arm/mach-omap2/am33xx/Makefile | 2 --
arch/arm/mach-omap2/am33xx/board.c | 3 ---
arch/arm/mach-omap2/am33xx/hw_data.c | 19 -------------------
arch/arm/mach-omap2/am33xx/prcm-regs.c | 15 ---------------
arch/arm/mach-omap2/am33xx/sys_info.c | 10 ++++++++++
arch/arm/mach-omap2/hwinit-common.c | 9 +++++++++
arch/arm/mach-omap2/omap3/Makefile | 2 --
arch/arm/mach-omap2/omap3/board.c | 7 -------
arch/arm/mach-omap2/omap3/hw_data.c | 19 -------------------
arch/arm/mach-omap2/omap3/prcm-regs.c | 15 ---------------
arch/arm/mach-omap2/omap3/sys_info.c | 9 ++++++++-
arch/arm/mach-omap2/sysinfo-common.c | 21 ---------------------
board/ti/am335x/board.c | 1 -
board/ti/am43xx/board.c | 1 -
21 files changed, 36 insertions(+), 123 deletions(-)
delete mode 100644 arch/arm/mach-omap2/am33xx/hw_data.c
delete mode 100644 arch/arm/mach-omap2/am33xx/prcm-regs.c
delete mode 100644 arch/arm/mach-omap2/omap3/hw_data.c
delete mode 100644 arch/arm/mach-omap2/omap3/prcm-regs.c
delete mode 100644 arch/arm/mach-omap2/sysinfo-common.c
diff --git a/arch/arm/include/asm/arch-am33xx/cpu.h b/arch/arm/include/asm/arch-am33xx/cpu.h
index e8d7d54..8cae291 100644
--- a/arch/arm/include/asm/arch-am33xx/cpu.h
+++ b/arch/arm/include/asm/arch-am33xx/cpu.h
@@ -36,6 +36,12 @@
#define TCFG_RESET BIT(0) /* software reset */
#define TCFG_EMUFREE BIT(1) /* behaviour of tmr on debug */
#define TCFG_IDLEMOD_SHIFT (2) /* power management */
+/* device type */
+#define DEVICE_MASK (BIT(8) | BIT(9) | BIT(10))
+#define TST_DEVICE 0x0
+#define EMU_DEVICE 0x1
+#define HS_DEVICE 0x2
+#define GP_DEVICE 0x3
/* cpu-id for AM43XX AM33XX and TI81XX family */
#define AM437X 0xB98C
diff --git a/arch/arm/include/asm/arch-am33xx/omap.h b/arch/arm/include/asm/arch-am33xx/omap.h
index d2c5df8..0dafb9e 100644
--- a/arch/arm/include/asm/arch-am33xx/omap.h
+++ b/arch/arm/include/asm/arch-am33xx/omap.h
@@ -41,9 +41,6 @@ struct omap_boot_parameters {
unsigned char boot_device;
unsigned char reset_reason;
};
-
-#define DEVICE_TYPE_SHIFT 0x8
-#define DEVICE_TYPE_MASK (0x7 << DEVICE_TYPE_SHIFT)
#endif
#endif
diff --git a/arch/arm/include/asm/arch-omap3/omap.h b/arch/arm/include/asm/arch-omap3/omap.h
index 8933f54..db763e4 100644
--- a/arch/arm/include/asm/arch-omap3/omap.h
+++ b/arch/arm/include/asm/arch-omap3/omap.h
@@ -91,9 +91,6 @@ struct s32ktimer {
unsigned int s32k_cr; /* 0x10 */
};
-#define DEVICE_TYPE_SHIFT 0x8
-#define DEVICE_TYPE_MASK (0x7 << DEVICE_TYPE_SHIFT)
-
#endif /* __ASSEMBLY__ */
#ifndef __ASSEMBLY__
diff --git a/arch/arm/include/asm/arch-omap4/omap.h b/arch/arm/include/asm/arch-omap4/omap.h
index 1a3ff7d..b86a776 100644
--- a/arch/arm/include/asm/arch-omap4/omap.h
+++ b/arch/arm/include/asm/arch-omap4/omap.h
@@ -100,6 +100,7 @@ struct s32ktimer {
#define DEVICE_TYPE_SHIFT (0x8)
#define DEVICE_TYPE_MASK (0x7 << DEVICE_TYPE_SHIFT)
+#define DEVICE_GP 0x3
#endif /* __ASSEMBLY__ */
diff --git a/arch/arm/include/asm/arch-omap5/omap.h b/arch/arm/include/asm/arch-omap5/omap.h
index 2f005dd..8f31da1 100644
--- a/arch/arm/include/asm/arch-omap5/omap.h
+++ b/arch/arm/include/asm/arch-omap5/omap.h
@@ -127,6 +127,7 @@ struct s32ktimer {
#define DEVICE_TYPE_SHIFT 0x6
#define DEVICE_TYPE_MASK (0x7 << DEVICE_TYPE_SHIFT)
+#define DEVICE_GP 0x3
/* Output impedance control */
#define ds_120_ohm 0x0
diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h
index ef5c481..6aaa1ba 100644
--- a/arch/arm/include/asm/omap_common.h
+++ b/arch/arm/include/asm/omap_common.h
@@ -484,7 +484,6 @@ struct omap_sys_ctrl_regs {
u32 ctrl_core_sma_sw_1;
};
-#if defined(CONFIG_OMAP44XX) || defined(CONFIG_OMAP54XX)
struct dpll_params {
u32 m;
u32 n;
@@ -517,7 +516,6 @@ struct dpll_regs {
u32 cm_div_h23_dpll;
u32 cm_div_h24_dpll;
};
-#endif /* CONFIG_OMAP44XX || CONFIG_OMAP54XX */
struct dplls {
const struct dpll_params *mpu;
@@ -541,7 +539,6 @@ struct pmic_data {
int (*pmic_write)(u8 sa, u8 reg_addr, u8 reg_data);
};
-#if defined(CONFIG_OMAP44XX) || defined(CONFIG_OMAP54XX)
enum {
OPP_LOW,
OPP_NOM,
@@ -587,7 +584,6 @@ struct vcores_data {
struct volts eve;
struct volts iva;
};
-#endif /* CONFIG_OMAP44XX || CONFIG_OMAP54XX */
extern struct prcm_regs const **prcm;
extern struct prcm_regs const omap5_es1_prcm;
@@ -599,8 +595,6 @@ extern struct dplls dra7xx_dplls;
extern struct vcores_data const **omap_vcores;
extern const u32 sys_clk_array[8];
extern struct omap_sys_ctrl_regs const **ctrl;
-extern struct omap_sys_ctrl_regs const am33xx_ctrl;
-extern struct omap_sys_ctrl_regs const omap3_ctrl;
extern struct omap_sys_ctrl_regs const omap4_ctrl;
extern struct omap_sys_ctrl_regs const omap5_ctrl;
extern struct omap_sys_ctrl_regs const dra7xx_ctrl;
@@ -617,7 +611,6 @@ const struct dpll_params *get_iva_dpll_params(struct dplls const *);
const struct dpll_params *get_usb_dpll_params(struct dplls const *);
const struct dpll_params *get_abe_dpll_params(struct dplls const *);
-#if defined(CONFIG_OMAP44XX) || defined(CONFIG_OMAP54XX)
void do_enable_clocks(u32 const *clk_domains,
u32 const *clk_modules_hw_auto,
u32 const *clk_modules_explicit_en,
@@ -626,7 +619,6 @@ void do_enable_clocks(u32 const *clk_domains,
void do_disable_clocks(u32 const *clk_domains,
u32 const *clk_modules_disable,
u8 wait_for_disable);
-#endif /* CONFIG_OMAP44XX || CONFIG_OMAP54XX */
void setup_post_dividers(u32 const base,
const struct dpll_params *params);
@@ -638,9 +630,7 @@ void enable_basic_uboot_clocks(void);
void enable_usb_clocks(int index);
void disable_usb_clocks(int index);
-#if defined(CONFIG_OMAP44XX) || defined(CONFIG_OMAP54XX)
void scale_vcores(struct vcores_data const *);
-#endif /* CONFIG_OMAP44XX || CONFIG_OMAP54XX */
int get_voltrail_opp(int rail_offset);
u32 get_offset_code(u32 volt_offset, struct pmic_data *pmic);
void do_scale_vcore(u32 vcore_reg, u32 volt_mv, struct pmic_data *pmic);
@@ -771,6 +761,7 @@ static inline u8 is_dra72x(void)
* silicon device type
* Moving to common from cpu.h, since it is shared by various omap devices
*/
+#define DEVICE_MASK (BIT(8) | BIT(9) | BIT(10))
#define TST_DEVICE 0x0
#define EMU_DEVICE 0x1
#define HS_DEVICE 0x2
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index d86643d..bf97b32 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -20,7 +20,6 @@ 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 9d4f83c..13b13fd 100644
--- a/arch/arm/mach-omap2/am33xx/Makefile
+++ b/arch/arm/mach-omap2/am33xx/Makefile
@@ -21,8 +21,6 @@ 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-y += fdt.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 913a44a..905d7dd 100644
--- a/arch/arm/mach-omap2/am33xx/board.c
+++ b/arch/arm/mach-omap2/am33xx/board.c
@@ -26,7 +26,6 @@
#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>
@@ -362,7 +361,6 @@ 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();
@@ -377,7 +375,6 @@ 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
deleted file mode 100644
index 63e55cf..0000000
--- a/arch/arm/mach-omap2/am33xx/hw_data.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * HW data initialization for AM33xx.
- *
- * (C) Copyright 2017 Linaro Ltd.
- * Sam Protsenko <semen.protsenko at 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
deleted file mode 100644
index c9a3af6..0000000
--- a/arch/arm/mach-omap2/am33xx/prcm-regs.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * HW regs data for AM33xx.
- *
- * (C) Copyright 2017 Linaro Ltd.
- * Sam Protsenko <semen.protsenko at 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 ea434aa..564bae6 100644
--- a/arch/arm/mach-omap2/am33xx/sys_info.c
+++ b/arch/arm/mach-omap2/am33xx/sys_info.c
@@ -51,6 +51,16 @@ 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 7324d52..d005430 100644
--- a/arch/arm/mach-omap2/hwinit-common.c
+++ b/arch/arm/mach-omap2/hwinit-common.c
@@ -287,6 +287,15 @@ 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 61a76b6..06cc9f2 100644
--- a/arch/arm/mach-omap2/omap3/Makefile
+++ b/arch/arm/mach-omap2/omap3/Makefile
@@ -14,8 +14,6 @@ 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 a61b933..d7c8c03 100644
--- a/arch/arm/mach-omap2/omap3/board.c
+++ b/arch/arm/mach-omap2/omap3/board.c
@@ -173,11 +173,6 @@ 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.
@@ -186,7 +181,6 @@ void early_system_init(void)
void s_init(void)
{
watchdog_init();
- early_system_init();
try_unlock_memory();
@@ -210,7 +204,6 @@ void s_init(void)
#ifdef CONFIG_SPL_BUILD
void board_init_f(ulong dummy)
{
- early_system_init();
mem_init();
/*
* Save the boot parameters passed from romcode.
diff --git a/arch/arm/mach-omap2/omap3/hw_data.c b/arch/arm/mach-omap2/omap3/hw_data.c
deleted file mode 100644
index 53b220a..0000000
--- a/arch/arm/mach-omap2/omap3/hw_data.c
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * HW data initialization for OMAP3.
- *
- * (C) Copyright 2017 Linaro Ltd.
- * Sam Protsenko <semen.protsenko at 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
deleted file mode 100644
index ca29ce9..0000000
--- a/arch/arm/mach-omap2/omap3/prcm-regs.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * HW regs data for OMAP3.
- *
- * (C) Copyright 2017 Linaro Ltd.
- * Sam Protsenko <semen.protsenko at 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 155f5b2..7e6c263 100644
--- a/arch/arm/mach-omap2/omap3/sys_info.c
+++ b/arch/arm/mach-omap2/omap3/sys_info.c
@@ -17,7 +17,6 @@
#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>
@@ -237,6 +236,14 @@ 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
deleted file mode 100644
index 1dc7051..0000000
--- a/arch/arm/mach-omap2/sysinfo-common.c
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * System information routines for all OMAP based boards.
- *
- * (C) Copyright 2017 Linaro Ltd.
- * Sam Protsenko <semen.protsenko at 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;
-}
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c
index 0a16529..3f967c9 100644
--- a/board/ti/am335x/board.c
+++ b/board/ti/am335x/board.c
@@ -26,7 +26,6 @@
#include <asm/io.h>
#include <asm/emif.h>
#include <asm/gpio.h>
-#include <asm/omap_common.h>
#include <asm/omap_sec_common.h>
#include <asm/omap_mmc.h>
#include <i2c.h>
diff --git a/board/ti/am43xx/board.c b/board/ti/am43xx/board.c
index 933596d..18c027b 100644
--- a/board/ti/am43xx/board.c
+++ b/board/ti/am43xx/board.c
@@ -20,7 +20,6 @@
#include <asm/arch/ddr_defs.h>
#include <asm/arch/gpio.h>
#include <asm/emif.h>
-#include <asm/omap_common.h>
#include "../common/board_detect.h"
#include "board.h"
#include <power/pmic.h>
--
2.7.3
More information about the U-Boot
mailing list