[U-Boot] [PATCH 1/7] omap-common: Common omap_die_id definition

This introduces a common definition for omap_die_id, that aims at providing a common interface for accessing omap platform's die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr --- arch/arm/cpu/armv7/omap-common/utils.c | 5 +++++ arch/arm/include/asm/omap_common.h | 2 ++ 2 files changed, 7 insertions(+)
diff --git a/arch/arm/cpu/armv7/omap-common/utils.c b/arch/arm/cpu/armv7/omap-common/utils.c index df5f817..acff16b 100644 --- a/arch/arm/cpu/armv7/omap-common/utils.c +++ b/arch/arm/cpu/armv7/omap-common/utils.c @@ -41,6 +41,11 @@ void cancel_out(u32 *num, u32 *den, u32 den_limit) } }
+__weak void omap_die_id(unsigned int *die_id) +{ + die_id[0] = die_id[1] = die_id[2] = die_id[3] = 0; +} + void __weak usb_fake_mac_from_die_id(u32 *id) { uint8_t device_mac[6]; diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index b67d4b6..b46e467 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -605,6 +605,8 @@ void omap_smc1(u32 service, u32 val); void enable_edma3_clocks(void); void disable_edma3_clocks(void);
+void omap_die_id(unsigned int *die_id); + /* ABB */ #define OMAP_ABB_NOMINAL_OPP 0 #define OMAP_ABB_FAST_OPP 1

This replaces the previous get_dieid definition with omap_die_id, that matches the common omap_die_id definition.
Signed-off-by: Paul Kocialkowski contact@paulk.fr --- arch/arm/cpu/armv7/omap3/sys_info.c | 15 ++++++--------- arch/arm/include/asm/arch-omap3/sys_proto.h | 1 - board/lge/sniper/sniper.c | 6 +++--- board/ti/beagle/beagle.c | 6 +++--- 4 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/arch/arm/cpu/armv7/omap3/sys_info.c b/arch/arm/cpu/armv7/omap3/sys_info.c index ab60a03..497dc13 100644 --- a/arch/arm/cpu/armv7/omap3/sys_info.c +++ b/arch/arm/cpu/armv7/omap3/sys_info.c @@ -42,17 +42,14 @@ static char *rev_s_37xx[CPU_37XX_MAX_REV] = { "1.2"}; #endif /* CONFIG_DISPLAY_CPUINFO */
-/***************************************************************** - * get_dieid(u32 *id) - read die ID - *****************************************************************/ -void get_dieid(u32 *id) +void omap_die_id(unsigned int *die_id) { struct ctrl_id *id_base = (struct ctrl_id *)OMAP34XX_ID_L4_IO_BASE;
- id[3] = readl(&id_base->die_id_0); - id[2] = readl(&id_base->die_id_1); - id[1] = readl(&id_base->die_id_2); - id[0] = readl(&id_base->die_id_3); + die_id[0] = readl(&id_base->die_id_0); + die_id[1] = readl(&id_base->die_id_1); + die_id[2] = readl(&id_base->die_id_2); + die_id[3] = readl(&id_base->die_id_3); }
/***************************************************************** @@ -68,7 +65,7 @@ void dieid_num_r(void) uid_s = getenv("dieid#");
if (uid_s == NULL) { - get_dieid(id); + omap_die_id(id); sprintf(die_id, "%08x%08x%08x%08x", id[0], id[1], id[2], id[3]); setenv("dieid#", die_id); uid_s = die_id; diff --git a/arch/arm/include/asm/arch-omap3/sys_proto.h b/arch/arm/include/asm/arch-omap3/sys_proto.h index 94f29fd..a0809fc 100644 --- a/arch/arm/include/asm/arch-omap3/sys_proto.h +++ b/arch/arm/include/asm/arch-omap3/sys_proto.h @@ -70,7 +70,6 @@ void make_cs1_contiguous(void); void omap_nand_switch_ecc(uint32_t, uint32_t); void power_init_r(void); void dieid_num_r(void); -void get_dieid(u32 *id); void do_omap3_emu_romcode_call(u32 service_id, u32 parameters); void omap3_set_aux_cr_secure(u32 acr); u32 warm_reset(void); diff --git a/board/lge/sniper/sniper.c b/board/lge/sniper/sniper.c index a43f640..ae9fe69 100644 --- a/board/lge/sniper/sniper.c +++ b/board/lge/sniper/sniper.c @@ -92,9 +92,9 @@ int board_init(void) int misc_init_r(void) { unsigned char keypad_matrix[64] = { 0 }; + unsigned int die_id[4] = { 0 }; char serial_string[17] = { 0 }; char reboot_mode[2] = { 0 }; - u32 dieid[4] = { 0 }; unsigned char keys[3]; unsigned char data = 0;
@@ -140,11 +140,11 @@ int misc_init_r(void)
/* Serial number */
- get_dieid((u32 *)&dieid); + omap_die_id(die_id);
if (!getenv("serial#")) { snprintf(serial_string, sizeof(serial_string), - "%08x%08x", dieid[0], dieid[3]); + "%08x%08x", die_id[0], die_id[3]);
setenv("serial#", serial_string); } diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c index 3b0a9e7..b0d06a5 100644 --- a/board/ti/beagle/beagle.c +++ b/board/ti/beagle/beagle.c @@ -507,10 +507,10 @@ int misc_init_r(void) #endif
if (generate_fake_mac) { - u32 id[4]; + unsigned int die_id[4] = { 0 };
- get_dieid(id); - usb_fake_mac_from_die_id(id); + omap_die_id(die_id); + usb_fake_mac_from_die_id(die_id); }
return 0;

On Thu, Aug 27, 2015 at 07:37:09PM +0200, Paul Kocialkowski wrote:
This replaces the previous get_dieid definition with omap_die_id, that matches the common omap_die_id definition.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Reviewed-by: Tom Rini trini@konsulko.com

On Thu, Aug 27, 2015 at 07:37:09PM +0200, Paul Kocialkowski wrote:
This replaces the previous get_dieid definition with omap_die_id, that matches the common omap_die_id definition.
Signed-off-by: Paul Kocialkowski contact@paulk.fr Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

This introduces omap4 support for omap_die_id, which matches the common omap_die_id definition. It replaces board-specific code to grab the die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr --- arch/arm/cpu/armv7/omap4/hwinit.c | 8 ++++++++ arch/arm/cpu/armv7/omap4/prcm-regs.c | 5 ++++- arch/arm/include/asm/arch-omap4/omap.h | 4 ---- board/ti/panda/panda.c | 9 +++------ 4 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/arch/arm/cpu/armv7/omap4/hwinit.c b/arch/arm/cpu/armv7/omap4/hwinit.c index a68947f..7c6638c 100644 --- a/arch/arm/cpu/armv7/omap4/hwinit.c +++ b/arch/arm/cpu/armv7/omap4/hwinit.c @@ -156,6 +156,14 @@ void init_omap_revision(void) } }
+void omap_die_id(unsigned int *die_id) +{ + die_id[0] = readl((*ctrl)->control_std_fuse_die_id_0); + die_id[1] = readl((*ctrl)->control_std_fuse_die_id_1); + die_id[2] = readl((*ctrl)->control_std_fuse_die_id_2); + die_id[3] = readl((*ctrl)->control_std_fuse_die_id_3); +} + #ifndef CONFIG_SYS_L2CACHE_OFF void v7_outer_cache_enable(void) { diff --git a/arch/arm/cpu/armv7/omap4/prcm-regs.c b/arch/arm/cpu/armv7/omap4/prcm-regs.c index 8698ec7..a09581e 100644 --- a/arch/arm/cpu/armv7/omap4/prcm-regs.c +++ b/arch/arm/cpu/armv7/omap4/prcm-regs.c @@ -280,7 +280,10 @@ struct prcm_regs const omap4_prcm = {
struct omap_sys_ctrl_regs const omap4_ctrl = { .control_status = 0x4A0022C4, - .control_id_code = 0x4A002204, + .control_std_fuse_die_id_0 = 0x4A002200, + .control_std_fuse_die_id_1 = 0x4A002208, + .control_std_fuse_die_id_2 = 0x4A00220C, + .control_std_fuse_die_id_3 = 0x4A002210, .control_std_fuse_opp_bgap = 0x4a002260, .control_status = 0x4a0022c4, .control_ldosram_iva_voltage_ctrl = 0x4A002320, diff --git a/arch/arm/include/asm/arch-omap4/omap.h b/arch/arm/include/asm/arch-omap4/omap.h index 12b1a09..4712722 100644 --- a/arch/arm/include/asm/arch-omap4/omap.h +++ b/arch/arm/include/asm/arch-omap4/omap.h @@ -33,10 +33,6 @@
/* CONTROL_ID_CODE */ #define CONTROL_ID_CODE 0x4A002204 -#define STD_FUSE_DIE_ID_0 0x4A002200 -#define STD_FUSE_DIE_ID_1 0x4A002208 -#define STD_FUSE_DIE_ID_2 0x4A00220c -#define STD_FUSE_DIE_ID_3 0x4A002210
#define OMAP4_CONTROL_ID_CODE_ES1_0 0x0B85202F #define OMAP4_CONTROL_ID_CODE_ES2_0 0x1B85202F diff --git a/board/ti/panda/panda.c b/board/ti/panda/panda.c index 783ba35..79ec69e 100644 --- a/board/ti/panda/panda.c +++ b/board/ti/panda/panda.c @@ -209,7 +209,7 @@ int misc_init_r(void) { int phy_type; u32 auxclk, altclksrc; - u32 id[4]; + unsigned int die_id[4] = { 0 };
/* EHCI is not supported on ES1.0 */ if (omap_revision() == OMAP4430_ES1_0) @@ -263,11 +263,8 @@ int misc_init_r(void)
writel(altclksrc, &scrm->altclksrc);
- id[0] = readl(STD_FUSE_DIE_ID_0); - id[1] = readl(STD_FUSE_DIE_ID_1); - id[2] = readl(STD_FUSE_DIE_ID_2); - id[3] = readl(STD_FUSE_DIE_ID_3); - usb_fake_mac_from_die_id(id); + omap_die_id(die_id); + usb_fake_mac_from_die_id(die_id);
return 0; }

On Thu, Aug 27, 2015 at 07:37:10PM +0200, Paul Kocialkowski wrote:
This introduces omap4 support for omap_die_id, which matches the common omap_die_id definition. It replaces board-specific code to grab the die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Reviewed-by: Tom Rini trini@konsulko.com

On Thu, Aug 27, 2015 at 07:37:10PM +0200, Paul Kocialkowski wrote:
This introduces omap4 support for omap_die_id, which matches the common omap_die_id definition. It replaces board-specific code to grab the die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

This introduces omap5 support for omap_die_id, which matches the common omap_die_id definition. It replaces board-specific code to grab the die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr --- arch/arm/cpu/armv7/omap5/hwinit.c | 8 ++++++++ arch/arm/cpu/armv7/omap5/prcm-regs.c | 4 ++++ board/ti/dra7xx/evm.c | 7 +++---- board/ti/omap5_uevm/evm.c | 12 +++--------- 4 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/arch/arm/cpu/armv7/omap5/hwinit.c b/arch/arm/cpu/armv7/omap5/hwinit.c index 3699050..d0ac029 100644 --- a/arch/arm/cpu/armv7/omap5/hwinit.c +++ b/arch/arm/cpu/armv7/omap5/hwinit.c @@ -376,6 +376,14 @@ void init_omap_revision(void) init_cpu_configuration(); }
+void omap_die_id(unsigned int *die_id) +{ + die_id[0] = readl((*ctrl)->control_std_fuse_die_id_0); + die_id[1] = readl((*ctrl)->control_std_fuse_die_id_1); + die_id[2] = readl((*ctrl)->control_std_fuse_die_id_2); + die_id[3] = readl((*ctrl)->control_std_fuse_die_id_3); +} + void reset_cpu(ulong ignored) { u32 omap_rev = omap_revision(); diff --git a/arch/arm/cpu/armv7/omap5/prcm-regs.c b/arch/arm/cpu/armv7/omap5/prcm-regs.c index d01ce88..9c182b0 100644 --- a/arch/arm/cpu/armv7/omap5/prcm-regs.c +++ b/arch/arm/cpu/armv7/omap5/prcm-regs.c @@ -297,6 +297,10 @@ struct prcm_regs const omap5_es1_prcm = { struct omap_sys_ctrl_regs const omap5_ctrl = { .control_status = 0x4A002134, .control_std_fuse_opp_vdd_mpu_2 = 0x4A0021B4, + .control_std_fuse_die_id_0 = 0x4A002200, + .control_std_fuse_die_id_1 = 0x4A002208, + .control_std_fuse_die_id_2 = 0x4A00220C, + .control_std_fuse_die_id_3 = 0x4A002210, .control_phy_power_usb = 0x4A002370, .control_phy_power_sata = 0x4A002374, .control_padconf_core_base = 0x4A002800, diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c index 94a1a8c..ed5ec07 100644 --- a/board/ti/dra7xx/evm.c +++ b/board/ti/dra7xx/evm.c @@ -57,16 +57,15 @@ int board_init(void) int board_late_init(void) { #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG - u32 id[4]; + unsigned int die_id[4] = { 0 };
if (omap_revision() == DRA722_ES1_0) setenv("board_name", "dra72x"); else setenv("board_name", "dra7xx");
- id[0] = readl((*ctrl)->control_std_fuse_die_id_0); - id[1] = readl((*ctrl)->control_std_fuse_die_id_1); - usb_set_serial_num_from_die_id(id); + omap_die_id(die_id); + usb_set_serial_num_from_die_id(die_id); #endif return 0; } diff --git a/board/ti/omap5_uevm/evm.c b/board/ti/omap5_uevm/evm.c index 833ffe9..1b922a8 100644 --- a/board/ti/omap5_uevm/evm.c +++ b/board/ti/omap5_uevm/evm.c @@ -112,20 +112,14 @@ static void enable_host_clocks(void) */ int misc_init_r(void) { - int reg; - u32 id[4]; + unsigned int die_id[4] = { 0 };
#ifdef CONFIG_PALMAS_POWER palmas_init_settings(); #endif
- reg = DIE_ID_REG_BASE + DIE_ID_REG_OFFSET; - - id[0] = readl(reg); - id[1] = readl(reg + 0x8); - id[2] = readl(reg + 0xC); - id[3] = readl(reg + 0x10); - usb_fake_mac_from_die_id(id); + omap_die_id(die_id); + usb_fake_mac_from_die_id(die_id);
return 0; }

On Thu, Aug 27, 2015 at 07:37:11PM +0200, Paul Kocialkowski wrote:
This introduces omap5 support for omap_die_id, which matches the common omap_die_id definition. It replaces board-specific code to grab the die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Reviewed-by: Tom Rini trini@konsulko.com

On Thu, Aug 27, 2015 at 07:37:11PM +0200, Paul Kocialkowski wrote:
This introduces omap5 support for omap_die_id, which matches the common omap_die_id definition. It replaces board-specific code to grab the die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

Now that we have a common prototype to grab the omap die id, functions to figure out a serial number and usb ethernet address can use it directly. Those also get an omap_die_id prefix for better consistency.
Signed-off-by: Paul Kocialkowski contact@paulk.fr --- arch/arm/cpu/armv7/omap-common/utils.c | 49 +++++++++++++++++++--------------- arch/arm/include/asm/omap_common.h | 5 ++-- board/lge/sniper/sniper.c | 11 +------- board/ti/beagle/beagle.c | 8 ++---- board/ti/dra7xx/evm.c | 5 +--- board/ti/omap5_uevm/evm.c | 5 +--- board/ti/panda/panda.c | 4 +-- 7 files changed, 36 insertions(+), 51 deletions(-)
diff --git a/arch/arm/cpu/armv7/omap-common/utils.c b/arch/arm/cpu/armv7/omap-common/utils.c index acff16b..28d0f86 100644 --- a/arch/arm/cpu/armv7/omap-common/utils.c +++ b/arch/arm/cpu/armv7/omap-common/utils.c @@ -46,35 +46,40 @@ __weak void omap_die_id(unsigned int *die_id) die_id[0] = die_id[1] = die_id[2] = die_id[3] = 0; }
-void __weak usb_fake_mac_from_die_id(u32 *id) +void omap_die_id_serial(void) { - uint8_t device_mac[6]; + unsigned int die_id[4] = { 0 }; + char serial_string[17] = { 0 };
- if (!getenv("usbethaddr")) { - /* - * create a fake MAC address from the processor ID code. - * first byte is 0x02 to signify locally administered. - */ - device_mac[0] = 0x02; - device_mac[1] = id[3] & 0xff; - device_mac[2] = id[2] & 0xff; - device_mac[3] = id[1] & 0xff; - device_mac[4] = id[0] & 0xff; - device_mac[5] = (id[0] >> 8) & 0xff; + omap_die_id((unsigned int *)&die_id);
- eth_setenv_enetaddr("usbethaddr", device_mac); + if (!getenv("serial#")) { + snprintf(serial_string, sizeof(serial_string), + "%08x%08x", die_id[0], die_id[3]); + + setenv("serial#", serial_string); } }
-void __weak usb_set_serial_num_from_die_id(u32 *id) +void omap_die_id_usbethaddr(void) { - char serialno[72]; - uint32_t serialno_lo, serialno_hi; + unsigned int die_id[4] = { 0 }; + unsigned char mac[6] = { 0 };
- if (!getenv("serial#")) { - serialno_hi = id[0]; - serialno_lo = id[1]; - sprintf(serialno, "%08x%08x", serialno_hi, serialno_lo); - setenv("serial#", serialno); + omap_die_id((unsigned int *)&die_id); + + if (!getenv("usbethaddr")) { + /* + * Create a fake MAC address from the processor ID code. + * First byte is 0x02 to signify locally administered. + */ + mac[0] = 0x02; + mac[1] = die_id[3] & 0xff; + mac[2] = die_id[2] & 0xff; + mac[3] = die_id[1] & 0xff; + mac[4] = die_id[0] & 0xff; + mac[5] = (die_id[0] >> 8) & 0xff; + + eth_setenv_enetaddr("usbethaddr", mac); } } diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index b46e467..725b2da 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -596,8 +596,9 @@ void abb_setup(u32 fuse, u32 ldovbb, u32 setup, u32 control, u32 txdone, u32 txdone_mask, u32 opp); s8 abb_setup_ldovbb(u32 fuse, u32 ldovbb);
-void usb_fake_mac_from_die_id(u32 *id); -void usb_set_serial_num_from_die_id(u32 *id); +void omap_die_id_serial(void); +void omap_die_id_usbethaddr(void); + void recalibrate_iodelay(void);
void omap_smc1(u32 service, u32 val); diff --git a/board/lge/sniper/sniper.c b/board/lge/sniper/sniper.c index ae9fe69..cdda76b 100644 --- a/board/lge/sniper/sniper.c +++ b/board/lge/sniper/sniper.c @@ -92,8 +92,6 @@ int board_init(void) int misc_init_r(void) { unsigned char keypad_matrix[64] = { 0 }; - unsigned int die_id[4] = { 0 }; - char serial_string[17] = { 0 }; char reboot_mode[2] = { 0 }; unsigned char keys[3]; unsigned char data = 0; @@ -140,14 +138,7 @@ int misc_init_r(void)
/* Serial number */
- omap_die_id(die_id); - - if (!getenv("serial#")) { - snprintf(serial_string, sizeof(serial_string), - "%08x%08x", die_id[0], die_id[3]); - - setenv("serial#", serial_string); - } + omap_die_id_serial();
/* MUSB */
diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c index b0d06a5..149b5db 100644 --- a/board/ti/beagle/beagle.c +++ b/board/ti/beagle/beagle.c @@ -506,12 +506,8 @@ int misc_init_r(void) musb_register(&musb_plat, &musb_board_data, (void *)MUSB_BASE); #endif
- if (generate_fake_mac) { - unsigned int die_id[4] = { 0 }; - - omap_die_id(die_id); - usb_fake_mac_from_die_id(die_id); - } + if (generate_fake_mac) + omap_die_id_usbethaddr();
return 0; } diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c index ed5ec07..2edbd05 100644 --- a/board/ti/dra7xx/evm.c +++ b/board/ti/dra7xx/evm.c @@ -57,15 +57,12 @@ int board_init(void) int board_late_init(void) { #ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG - unsigned int die_id[4] = { 0 }; - if (omap_revision() == DRA722_ES1_0) setenv("board_name", "dra72x"); else setenv("board_name", "dra7xx");
- omap_die_id(die_id); - usb_set_serial_num_from_die_id(die_id); + omap_die_id_serial(); #endif return 0; } diff --git a/board/ti/omap5_uevm/evm.c b/board/ti/omap5_uevm/evm.c index 1b922a8..f4500b4 100644 --- a/board/ti/omap5_uevm/evm.c +++ b/board/ti/omap5_uevm/evm.c @@ -112,14 +112,11 @@ static void enable_host_clocks(void) */ int misc_init_r(void) { - unsigned int die_id[4] = { 0 }; - #ifdef CONFIG_PALMAS_POWER palmas_init_settings(); #endif
- omap_die_id(die_id); - usb_fake_mac_from_die_id(die_id); + omap_die_id_usbethaddr();
return 0; } diff --git a/board/ti/panda/panda.c b/board/ti/panda/panda.c index 79ec69e..8005159 100644 --- a/board/ti/panda/panda.c +++ b/board/ti/panda/panda.c @@ -209,7 +209,6 @@ int misc_init_r(void) { int phy_type; u32 auxclk, altclksrc; - unsigned int die_id[4] = { 0 };
/* EHCI is not supported on ES1.0 */ if (omap_revision() == OMAP4430_ES1_0) @@ -263,8 +262,7 @@ int misc_init_r(void)
writel(altclksrc, &scrm->altclksrc);
- omap_die_id(die_id); - usb_fake_mac_from_die_id(die_id); + omap_die_id_usbethaddr();
return 0; }

On Thu, Aug 27, 2015 at 07:37:12PM +0200, Paul Kocialkowski wrote:
Now that we have a common prototype to grab the omap die id, functions to figure out a serial number and usb ethernet address can use it directly. Those also get an omap_die_id prefix for better consistency.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Reviewed-by: Tom Rini trini@konsulko.com

On Thu, Aug 27, 2015 at 07:37:12PM +0200, Paul Kocialkowski wrote:
Now that we have a common prototype to grab the omap die id, functions to figure out a serial number and usb ethernet address can use it directly. Those also get an omap_die_id prefix for better consistency.
Signed-off-by: Paul Kocialkowski contact@paulk.fr Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

This introduces omap_die_id_display to display the full die id. There is no need to store it in an environment variable, that no boot script is using anyway.
Signed-off-by: Paul Kocialkowski contact@paulk.fr --- arch/arm/cpu/armv7/omap-common/utils.c | 10 ++++++++++ arch/arm/cpu/armv7/omap3/board.c | 2 +- arch/arm/cpu/armv7/omap3/sys_info.c | 22 ---------------------- arch/arm/include/asm/arch-omap3/sys_proto.h | 1 - arch/arm/include/asm/omap_common.h | 1 + board/comelit/dig297/dig297.c | 2 +- board/compulab/cm_t35/cm_t35.c | 2 +- board/compulab/cm_t3517/cm_t3517.c | 2 +- board/corscience/tricorder/tricorder.c | 2 +- board/isee/igep00x0/igep00x0.c | 2 +- board/logicpd/am3517evm/am3517evm.c | 2 +- board/logicpd/zoom1/zoom1.c | 2 +- board/matrix_vision/mvblx/mvblx.c | 2 +- board/nokia/rx51/rx51.c | 2 +- board/overo/overo.c | 2 +- board/pandora/pandora.c | 2 +- board/technexion/tao3530/tao3530.c | 2 +- board/technexion/twister/twister.c | 2 +- board/teejet/mt_ventoux/mt_ventoux.c | 2 +- board/ti/am3517crane/am3517crane.c | 2 +- board/ti/beagle/beagle.c | 2 +- board/ti/evm/evm.c | 2 +- board/timll/devkit8000/devkit8000.c | 2 +- 23 files changed, 30 insertions(+), 42 deletions(-)
diff --git a/arch/arm/cpu/armv7/omap-common/utils.c b/arch/arm/cpu/armv7/omap-common/utils.c index 28d0f86..dc5a169 100644 --- a/arch/arm/cpu/armv7/omap-common/utils.c +++ b/arch/arm/cpu/armv7/omap-common/utils.c @@ -83,3 +83,13 @@ void omap_die_id_usbethaddr(void) eth_setenv_enetaddr("usbethaddr", mac); } } + +void omap_die_id_display(void) +{ + unsigned int die_id[4] = { 0 }; + + omap_die_id(die_id); + + printf("OMAP die ID: %08x%08x%08x%08x", die_id[0], die_id[1], die_id[2], + die_id[3]); +} diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c index 8252b32..0c44ea5 100644 --- a/arch/arm/cpu/armv7/omap3/board.c +++ b/arch/arm/cpu/armv7/omap3/board.c @@ -214,7 +214,7 @@ void board_init_f(ulong dummy) */ int __weak misc_init_r(void) { - dieid_num_r(); + omap_die_id_display();
return 0; } diff --git a/arch/arm/cpu/armv7/omap3/sys_info.c b/arch/arm/cpu/armv7/omap3/sys_info.c index 497dc13..6818fab 100644 --- a/arch/arm/cpu/armv7/omap3/sys_info.c +++ b/arch/arm/cpu/armv7/omap3/sys_info.c @@ -52,28 +52,6 @@ void omap_die_id(unsigned int *die_id) die_id[3] = readl(&id_base->die_id_3); }
-/***************************************************************** - * dieid_num_r(void) - read and set die ID - *****************************************************************/ -void dieid_num_r(void) -{ - char *uid_s, die_id[34]; - u32 id[4]; - - memset(die_id, 0, sizeof(die_id)); - - uid_s = getenv("dieid#"); - - if (uid_s == NULL) { - omap_die_id(id); - sprintf(die_id, "%08x%08x%08x%08x", id[0], id[1], id[2], id[3]); - setenv("dieid#", die_id); - uid_s = die_id; - } - - printf("Die ID #%s\n", uid_s); -} - /****************************************** * get_cpu_type(void) - extract cpu info ******************************************/ diff --git a/arch/arm/include/asm/arch-omap3/sys_proto.h b/arch/arm/include/asm/arch-omap3/sys_proto.h index a0809fc..24563c0 100644 --- a/arch/arm/include/asm/arch-omap3/sys_proto.h +++ b/arch/arm/include/asm/arch-omap3/sys_proto.h @@ -69,7 +69,6 @@ void sdelay(unsigned long); void make_cs1_contiguous(void); void omap_nand_switch_ecc(uint32_t, uint32_t); void power_init_r(void); -void dieid_num_r(void); void do_omap3_emu_romcode_call(u32 service_id, u32 parameters); void omap3_set_aux_cr_secure(u32 acr); u32 warm_reset(void); diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index 725b2da..0f5758d 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -598,6 +598,7 @@ s8 abb_setup_ldovbb(u32 fuse, u32 ldovbb);
void omap_die_id_serial(void); void omap_die_id_usbethaddr(void); +void omap_die_id_display(void);
void recalibrate_iodelay(void);
diff --git a/board/comelit/dig297/dig297.c b/board/comelit/dig297/dig297.c index 9d4c41b..47a3ea8 100644 --- a/board/comelit/dig297/dig297.c +++ b/board/comelit/dig297/dig297.c @@ -112,7 +112,7 @@ int misc_init_r(void) setup_net_chip(); #endif
- dieid_num_r(); + omap_die_id_display();
return 0; } diff --git a/board/compulab/cm_t35/cm_t35.c b/board/compulab/cm_t35/cm_t35.c index 374edbc..2278a50 100644 --- a/board/compulab/cm_t35/cm_t35.c +++ b/board/compulab/cm_t35/cm_t35.c @@ -110,7 +110,7 @@ u32 get_board_rev(void) int misc_init_r(void) { cl_print_pcb_info(); - dieid_num_r(); + omap_die_id_display();
return 0; } diff --git a/board/compulab/cm_t3517/cm_t3517.c b/board/compulab/cm_t3517/cm_t3517.c index b33522e..d1c74db 100644 --- a/board/compulab/cm_t3517/cm_t3517.c +++ b/board/compulab/cm_t3517/cm_t3517.c @@ -101,7 +101,7 @@ int board_init(void) int misc_init_r(void) { cl_print_pcb_info(); - dieid_num_r(); + omap_die_id_display();
return 0; } diff --git a/board/corscience/tricorder/tricorder.c b/board/corscience/tricorder/tricorder.c index 0fddf45..0009452 100644 --- a/board/corscience/tricorder/tricorder.c +++ b/board/corscience/tricorder/tricorder.c @@ -124,7 +124,7 @@ int misc_init_r(void) status_led_set(1, STATUS_LED_ON); status_led_set(2, STATUS_LED_ON);
- dieid_num_r(); + omap_die_id_display();
return 0; } diff --git a/board/isee/igep00x0/igep00x0.c b/board/isee/igep00x0/igep00x0.c index 693fce7..3be8157 100644 --- a/board/isee/igep00x0/igep00x0.c +++ b/board/isee/igep00x0/igep00x0.c @@ -171,7 +171,7 @@ int misc_init_r(void)
setup_net_chip();
- dieid_num_r(); + omap_die_id_display();
set_fdt();
diff --git a/board/logicpd/am3517evm/am3517evm.c b/board/logicpd/am3517evm/am3517evm.c index 24ff9c3..1f1e5ae 100644 --- a/board/logicpd/am3517evm/am3517evm.c +++ b/board/logicpd/am3517evm/am3517evm.c @@ -109,7 +109,7 @@ int misc_init_r(void) i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE); #endif
- dieid_num_r(); + omap_die_id_display();
am3517_evm_musb_init();
diff --git a/board/logicpd/zoom1/zoom1.c b/board/logicpd/zoom1/zoom1.c index d39203a..0a3b55b 100644 --- a/board/logicpd/zoom1/zoom1.c +++ b/board/logicpd/zoom1/zoom1.c @@ -80,7 +80,7 @@ int misc_init_r(void) { twl4030_power_init(); twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON); - dieid_num_r(); + omap_die_id_display();
/* * Board Reset diff --git a/board/matrix_vision/mvblx/mvblx.c b/board/matrix_vision/mvblx/mvblx.c index c9d615b..223da63 100644 --- a/board/matrix_vision/mvblx/mvblx.c +++ b/board/matrix_vision/mvblx/mvblx.c @@ -71,7 +71,7 @@ int misc_init_r(void)
mac_read_from_eeprom();
- dieid_num_r(); + omap_die_id_display();
return 0; } diff --git a/board/nokia/rx51/rx51.c b/board/nokia/rx51/rx51.c index 3d019b0..6a4427a 100644 --- a/board/nokia/rx51/rx51.c +++ b/board/nokia/rx51/rx51.c @@ -421,7 +421,7 @@ int misc_init_r(void) /* reuse atags from previous bootloader */ reuse_atags();
- dieid_num_r(); + omap_die_id_display(); print_cpuinfo();
/* diff --git a/board/overo/overo.c b/board/overo/overo.c index 34bf265..20cbec2 100644 --- a/board/overo/overo.c +++ b/board/overo/overo.c @@ -285,7 +285,7 @@ int misc_init_r(void) if (expansion_config.content == 1) setenv(expansion_config.env_var, expansion_config.env_setting);
- dieid_num_r(); + omap_die_id_display();
if (get_cpu_family() == CPU_OMAP34XX) setenv("boardname", "overo"); diff --git a/board/pandora/pandora.c b/board/pandora/pandora.c index 59b5a7e..b371a40 100644 --- a/board/pandora/pandora.c +++ b/board/pandora/pandora.c @@ -102,7 +102,7 @@ int misc_init_r(void) TWL4030_BB_CFG_BBCHEN | TWL4030_BB_CFG_BBSEL_3200MV | TWL4030_BB_CFG_BBISEL_500UA);
- dieid_num_r(); + omap_die_id_display();
return 0; } diff --git a/board/technexion/tao3530/tao3530.c b/board/technexion/tao3530/tao3530.c index 744ff44..d51b5d9 100644 --- a/board/technexion/tao3530/tao3530.c +++ b/board/technexion/tao3530/tao3530.c @@ -160,7 +160,7 @@ int misc_init_r(void) puts("Unknown board revision\n"); }
- dieid_num_r(); + omap_die_id_display();
return 0; } diff --git a/board/technexion/twister/twister.c b/board/technexion/twister/twister.c index a4aed3b..48d207f 100644 --- a/board/technexion/twister/twister.c +++ b/board/technexion/twister/twister.c @@ -92,7 +92,7 @@ int misc_init_r(void) struct tam3517_module_info info; int ret;
- dieid_num_r(); + omap_die_id_display();
eth_addr = getenv("ethaddr"); if (eth_addr) diff --git a/board/teejet/mt_ventoux/mt_ventoux.c b/board/teejet/mt_ventoux/mt_ventoux.c index b4a0a72..c2de1fe 100644 --- a/board/teejet/mt_ventoux/mt_ventoux.c +++ b/board/teejet/mt_ventoux/mt_ventoux.c @@ -257,7 +257,7 @@ int misc_init_r(void) int ret;
TAM3517_READ_EEPROM(&info, ret); - dieid_num_r(); + omap_die_id_display();
if (ret) return 0; diff --git a/board/ti/am3517crane/am3517crane.c b/board/ti/am3517crane/am3517crane.c index a649697..8d1c390 100644 --- a/board/ti/am3517crane/am3517crane.c +++ b/board/ti/am3517crane/am3517crane.c @@ -47,7 +47,7 @@ int misc_init_r(void) i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE); #endif
- dieid_num_r(); + omap_die_id_display();
return 0; } diff --git a/board/ti/beagle/beagle.c b/board/ti/beagle/beagle.c index 149b5db..56e3cfe 100644 --- a/board/ti/beagle/beagle.c +++ b/board/ti/beagle/beagle.c @@ -494,7 +494,7 @@ int misc_init_r(void) writel(~(GPIO31 | GPIO30 | GPIO29 | GPIO28 | GPIO22 | GPIO21 | GPIO15 | GPIO14 | GPIO13 | GPIO12), &gpio5_base->oe);
- dieid_num_r(); + omap_die_id_display();
#ifdef CONFIG_VIDEO_OMAP3 beagle_dvi_pup(); diff --git a/board/ti/evm/evm.c b/board/ti/evm/evm.c index 3f93d9c..ff3971d 100644 --- a/board/ti/evm/evm.c +++ b/board/ti/evm/evm.c @@ -159,7 +159,7 @@ int misc_init_r(void) #if defined(CONFIG_CMD_NET) reset_net_chip(); #endif - dieid_num_r(); + omap_die_id_display();
return 0; } diff --git a/board/timll/devkit8000/devkit8000.c b/board/timll/devkit8000/devkit8000.c index 4d07313..a61cc14 100644 --- a/board/timll/devkit8000/devkit8000.c +++ b/board/timll/devkit8000/devkit8000.c @@ -114,7 +114,7 @@ int misc_init_r(void) } #endif
- dieid_num_r(); + omap_die_id_display();
return 0; }

On Thu, Aug 27, 2015 at 07:37:13PM +0200, Paul Kocialkowski wrote:
This introduces omap_die_id_display to display the full die id. There is no need to store it in an environment variable, that no boot script is using anyway.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Reviewed-by: Tom Rini trini@konsulko.com

On Thu, Aug 27, 2015 at 07:37:13PM +0200, Paul Kocialkowski wrote:
This introduces omap_die_id_display to display the full die id. There is no need to store it in an environment variable, that no boot script is using anyway.
Signed-off-by: Paul Kocialkowski contact@paulk.fr Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

Since there is a common function to grab the serial number from the die id bits, it makes sense have one to parse that serial number and feed it to the serial ATAG.
Signed-off-by: Paul Kocialkowski contact@paulk.fr --- arch/arm/cpu/armv7/omap-common/utils.c | 18 ++++++++++++++++++ arch/arm/include/asm/omap_common.h | 1 + board/lge/sniper/sniper.c | 15 +-------------- 3 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/arch/arm/cpu/armv7/omap-common/utils.c b/arch/arm/cpu/armv7/omap-common/utils.c index dc5a169..602d993 100644 --- a/arch/arm/cpu/armv7/omap-common/utils.c +++ b/arch/arm/cpu/armv7/omap-common/utils.c @@ -61,6 +61,24 @@ void omap_die_id_serial(void) } }
+void omap_die_id_get_board_serial(struct tag_serialnr *serialnr) +{ + char *serial_string; + unsigned long long serial; + + serial_string = getenv("serial#"); + + if (serial_string) { + serial = simple_strtoull(serial_string, NULL, 16); + + serialnr->high = (unsigned int) (serial >> 32); + serialnr->low = (unsigned int) (serial & 0xffffffff); + } else { + serialnr->high = 0; + serialnr->low = 0; + } +} + void omap_die_id_usbethaddr(void) { unsigned int die_id[4] = { 0 }; diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index 0f5758d..1e0b8f2 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -597,6 +597,7 @@ void abb_setup(u32 fuse, u32 ldovbb, u32 setup, u32 control, s8 abb_setup_ldovbb(u32 fuse, u32 ldovbb);
void omap_die_id_serial(void); +void omap_die_id_get_board_serial(struct tag_serialnr *serialnr); void omap_die_id_usbethaddr(void); void omap_die_id_display(void);
diff --git a/board/lge/sniper/sniper.c b/board/lge/sniper/sniper.c index cdda76b..4eff01a 100644 --- a/board/lge/sniper/sniper.c +++ b/board/lge/sniper/sniper.c @@ -149,20 +149,7 @@ int misc_init_r(void)
void get_board_serial(struct tag_serialnr *serialnr) { - char *serial_string; - unsigned long long serial; - - serial_string = getenv("serial#"); - - if (serial_string) { - serial = simple_strtoull(serial_string, NULL, 16); - - serialnr->high = (unsigned int) (serial >> 32); - serialnr->low = (unsigned int) (serial & 0xffffffff); - } else { - serialnr->high = 0; - serialnr->low = 0; - } + omap_die_id_get_board_serial(serialnr); }
void reset_misc(void)

On Thu, Aug 27, 2015 at 07:37:14PM +0200, Paul Kocialkowski wrote:
Since there is a common function to grab the serial number from the die id bits, it makes sense have one to parse that serial number and feed it to the serial ATAG.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Reviewed-by: Tom Rini trini@konsulko.com

On Thu, Aug 27, 2015 at 07:37:14PM +0200, Paul Kocialkowski wrote:
Since there is a common function to grab the serial number from the die id bits, it makes sense have one to parse that serial number and feed it to the serial ATAG.
Signed-off-by: Paul Kocialkowski contact@paulk.fr Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!

Hi,
Le jeudi 27 août 2015 à 19:37 +0200, Paul Kocialkowski a écrit :
This introduces a common definition for omap_die_id, that aims at providing a common interface for accessing omap platform's die id bits.
It has been a week since I sent this series for review. Any comments?
Signed-off-by: Paul Kocialkowski contact@paulk.fr
arch/arm/cpu/armv7/omap-common/utils.c | 5 +++++ arch/arm/include/asm/omap_common.h | 2 ++ 2 files changed, 7 insertions(+)
diff --git a/arch/arm/cpu/armv7/omap-common/utils.c b/arch/arm/cpu/armv7/omap-common/utils.c index df5f817..acff16b 100644 --- a/arch/arm/cpu/armv7/omap-common/utils.c +++ b/arch/arm/cpu/armv7/omap-common/utils.c @@ -41,6 +41,11 @@ void cancel_out(u32 *num, u32 *den, u32 den_limit) } }
+__weak void omap_die_id(unsigned int *die_id) +{
- die_id[0] = die_id[1] = die_id[2] = die_id[3] = 0;
+}
void __weak usb_fake_mac_from_die_id(u32 *id) { uint8_t device_mac[6]; diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index b67d4b6..b46e467 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -605,6 +605,8 @@ void omap_smc1(u32 service, u32 val); void enable_edma3_clocks(void); void disable_edma3_clocks(void);
+void omap_die_id(unsigned int *die_id);
/* ABB */ #define OMAP_ABB_NOMINAL_OPP 0 #define OMAP_ABB_FAST_OPP 1

On Thu, Aug 27, 2015 at 07:37:08PM +0200, Paul Kocialkowski wrote:
This introduces a common definition for omap_die_id, that aims at providing a common interface for accessing omap platform's die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Reviewed-by: Tom Rini trini@konsulko.com

Hi,
Le vendredi 04 septembre 2015 à 14:14 -0400, Tom Rini a écrit :
On Thu, Aug 27, 2015 at 07:37:08PM +0200, Paul Kocialkowski wrote:
This introduces a common definition for omap_die_id, that aims at providing a common interface for accessing omap platform's die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Reviewed-by: Tom Rini trini@konsulko.com
These patches have been laying around for some time now, would you agree to merge them?
Thanks!

On Sun, Sep 20, 2015 at 12:42:26PM +0200, Paul Kocialkowski wrote:
Hi,
Le vendredi 04 septembre 2015 à 14:14 -0400, Tom Rini a écrit :
On Thu, Aug 27, 2015 at 07:37:08PM +0200, Paul Kocialkowski wrote:
This introduces a common definition for omap_die_id, that aims at providing a common interface for accessing omap platform's die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Reviewed-by: Tom Rini trini@konsulko.com
These patches have been laying around for some time now, would you agree to merge them?
I think that since this falls under cleanup I'm holding it until the next release is out. I took the earlier series so that the 'sniper' board works, yes? Thanks!

Le mardi 22 septembre 2015 à 09:06 -0400, Tom Rini a écrit :
On Sun, Sep 20, 2015 at 12:42:26PM +0200, Paul Kocialkowski wrote:
Hi,
Le vendredi 04 septembre 2015 à 14:14 -0400, Tom Rini a écrit :
On Thu, Aug 27, 2015 at 07:37:08PM +0200, Paul Kocialkowski wrote:
This introduces a common definition for omap_die_id, that aims at providing a common interface for accessing omap platform's die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr
Reviewed-by: Tom Rini trini@konsulko.com
These patches have been laying around for some time now, would you agree to merge them?
I think that since this falls under cleanup I'm holding it until the next release is out. I took the earlier series so that the 'sniper' board works, yes? Thanks!
Sure, that's fine with me, sniper support is there and it doesn't require these pathces indeed.
Thanks!

On Thu, Aug 27, 2015 at 07:37:08PM +0200, Paul Kocialkowski wrote:
This introduces a common definition for omap_die_id, that aims at providing a common interface for accessing omap platform's die id bits.
Signed-off-by: Paul Kocialkowski contact@paulk.fr Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/master, thanks!
participants (2)
-
Paul Kocialkowski
-
Tom Rini