* [PATCH u-boot 0/3] amlogic: clean up board files @ 2018-08-14 13:07 Beniamino Galvani 2018-08-14 13:07 ` [PATCH u-boot 1/3] boards: amlogic: remove ethernet gpio reset code from boards Beniamino Galvani ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Beniamino Galvani @ 2018-08-14 13:07 UTC (permalink / raw) To: linus-amlogic Hi, this series simplifies Amlogic board files by factorizing common code and removing unneeded parts. Also, it fixes printing the serial number read from efuse. Beniamino Galvani (3): boards: amlogic: remove ethernet gpio reset code from boards boards: amlogic: use common function for environment initialization arm: meson: null-terminate the serial number arch/arm/include/asm/arch-meson/sm.h | 1 + arch/arm/mach-meson/sm.c | 29 +++++++++++++++++++++ board/amlogic/khadas-vim/khadas-vim.c | 25 +----------------- board/amlogic/libretech-cc/libretech-cc.c | 25 +----------------- board/amlogic/nanopi-k2/nanopi-k2.c | 31 +---------------------- board/amlogic/odroid-c2/odroid-c2.c | 31 +---------------------- board/amlogic/p212/p212.c | 25 +----------------- 7 files changed, 35 insertions(+), 132 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH u-boot 1/3] boards: amlogic: remove ethernet gpio reset code from boards 2018-08-14 13:07 [PATCH u-boot 0/3] amlogic: clean up board files Beniamino Galvani @ 2018-08-14 13:07 ` Beniamino Galvani 2018-08-20 8:36 ` Neil Armstrong 2018-08-24 20:10 ` [U-Boot, u-boot, " Tom Rini 2018-08-14 13:07 ` [PATCH u-boot 2/3] boards: amlogic: use common function for environment initialization Beniamino Galvani 2018-08-14 13:07 ` [PATCH u-boot 3/3] arm: meson: null-terminate the serial number Beniamino Galvani 2 siblings, 2 replies; 7+ messages in thread From: Beniamino Galvani @ 2018-08-14 13:07 UTC (permalink / raw) To: linus-amlogic The reset is already handled by the designware driver using information from device tree. Signed-off-by: Beniamino Galvani <b.galvani@gmail.com> --- board/amlogic/nanopi-k2/nanopi-k2.c | 6 ------ board/amlogic/odroid-c2/odroid-c2.c | 6 ------ 2 files changed, 12 deletions(-) diff --git a/board/amlogic/nanopi-k2/nanopi-k2.c b/board/amlogic/nanopi-k2/nanopi-k2.c index 339dbb81db..ae29dd6fa4 100644 --- a/board/amlogic/nanopi-k2/nanopi-k2.c +++ b/board/amlogic/nanopi-k2/nanopi-k2.c @@ -30,12 +30,6 @@ int misc_init_r(void) meson_gx_eth_init(PHY_INTERFACE_MODE_RGMII, 0); - /* Reset PHY on GPIOZ_14 */ - clrbits_le32(GX_GPIO_EN(3), BIT(14)); - clrbits_le32(GX_GPIO_OUT(3), BIT(14)); - mdelay(10); - setbits_le32(GX_GPIO_OUT(3), BIT(14)); - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, mac_addr, EFUSE_MAC_SIZE); diff --git a/board/amlogic/odroid-c2/odroid-c2.c b/board/amlogic/odroid-c2/odroid-c2.c index c47b9ce9cb..2a2755c387 100644 --- a/board/amlogic/odroid-c2/odroid-c2.c +++ b/board/amlogic/odroid-c2/odroid-c2.c @@ -30,12 +30,6 @@ int misc_init_r(void) meson_gx_eth_init(PHY_INTERFACE_MODE_RGMII, 0); - /* Reset PHY on GPIOZ_14 */ - clrbits_le32(GX_GPIO_EN(3), BIT(14)); - clrbits_le32(GX_GPIO_OUT(3), BIT(14)); - mdelay(10); - setbits_le32(GX_GPIO_OUT(3), BIT(14)); - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, mac_addr, EFUSE_MAC_SIZE); -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH u-boot 1/3] boards: amlogic: remove ethernet gpio reset code from boards 2018-08-14 13:07 ` [PATCH u-boot 1/3] boards: amlogic: remove ethernet gpio reset code from boards Beniamino Galvani @ 2018-08-20 8:36 ` Neil Armstrong 2018-08-24 20:10 ` [U-Boot, u-boot, " Tom Rini 1 sibling, 0 replies; 7+ messages in thread From: Neil Armstrong @ 2018-08-20 8:36 UTC (permalink / raw) To: linus-amlogic On 14/08/2018 15:07, Beniamino Galvani wrote: > The reset is already handled by the designware driver using > information from device tree. > > Signed-off-by: Beniamino Galvani <b.galvani@gmail.com> > --- > board/amlogic/nanopi-k2/nanopi-k2.c | 6 ------ > board/amlogic/odroid-c2/odroid-c2.c | 6 ------ > 2 files changed, 12 deletions(-) > > diff --git a/board/amlogic/nanopi-k2/nanopi-k2.c b/board/amlogic/nanopi-k2/nanopi-k2.c > index 339dbb81db..ae29dd6fa4 100644 > --- a/board/amlogic/nanopi-k2/nanopi-k2.c > +++ b/board/amlogic/nanopi-k2/nanopi-k2.c > @@ -30,12 +30,6 @@ int misc_init_r(void) > > meson_gx_eth_init(PHY_INTERFACE_MODE_RGMII, 0); > > - /* Reset PHY on GPIOZ_14 */ > - clrbits_le32(GX_GPIO_EN(3), BIT(14)); > - clrbits_le32(GX_GPIO_OUT(3), BIT(14)); > - mdelay(10); > - setbits_le32(GX_GPIO_OUT(3), BIT(14)); > - > if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { > len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > mac_addr, EFUSE_MAC_SIZE); > diff --git a/board/amlogic/odroid-c2/odroid-c2.c b/board/amlogic/odroid-c2/odroid-c2.c > index c47b9ce9cb..2a2755c387 100644 > --- a/board/amlogic/odroid-c2/odroid-c2.c > +++ b/board/amlogic/odroid-c2/odroid-c2.c > @@ -30,12 +30,6 @@ int misc_init_r(void) > > meson_gx_eth_init(PHY_INTERFACE_MODE_RGMII, 0); > > - /* Reset PHY on GPIOZ_14 */ > - clrbits_le32(GX_GPIO_EN(3), BIT(14)); > - clrbits_le32(GX_GPIO_OUT(3), BIT(14)); > - mdelay(10); > - setbits_le32(GX_GPIO_OUT(3), BIT(14)); > - > if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { > len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > mac_addr, EFUSE_MAC_SIZE); > Acked-by: Neil Armstrong <narmstrong@baylibre.com> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot, u-boot, 1/3] boards: amlogic: remove ethernet gpio reset code from boards 2018-08-14 13:07 ` [PATCH u-boot 1/3] boards: amlogic: remove ethernet gpio reset code from boards Beniamino Galvani 2018-08-20 8:36 ` Neil Armstrong @ 2018-08-24 20:10 ` Tom Rini 1 sibling, 0 replies; 7+ messages in thread From: Tom Rini @ 2018-08-24 20:10 UTC (permalink / raw) To: linus-amlogic On Tue, Aug 14, 2018 at 03:07:52PM +0200, Beniamino Galvani wrote: > The reset is already handled by the designware driver using > information from device tree. > > Signed-off-by: Beniamino Galvani <b.galvani@gmail.com> > Acked-by: Neil Armstrong <narmstrong@baylibre.com> Applied to u-boot/master, thanks! -- Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-amlogic/attachments/20180824/82676d4b/attachment.sig> ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH u-boot 2/3] boards: amlogic: use common function for environment initialization 2018-08-14 13:07 [PATCH u-boot 0/3] amlogic: clean up board files Beniamino Galvani 2018-08-14 13:07 ` [PATCH u-boot 1/3] boards: amlogic: remove ethernet gpio reset code from boards Beniamino Galvani @ 2018-08-14 13:07 ` Beniamino Galvani 2018-08-20 8:43 ` Neil Armstrong 2018-08-14 13:07 ` [PATCH u-boot 3/3] arm: meson: null-terminate the serial number Beniamino Galvani 2 siblings, 1 reply; 7+ messages in thread From: Beniamino Galvani @ 2018-08-14 13:07 UTC (permalink / raw) To: linus-amlogic Clean up board files by moving the duplicate environment initialization to arch code. Signed-off-by: Beniamino Galvani <b.galvani@gmail.com> --- arch/arm/include/asm/arch-meson/sm.h | 1 + arch/arm/mach-meson/sm.c | 27 +++++++++++++++++++++++ board/amlogic/khadas-vim/khadas-vim.c | 25 +-------------------- board/amlogic/libretech-cc/libretech-cc.c | 25 +-------------------- board/amlogic/nanopi-k2/nanopi-k2.c | 25 +-------------------- board/amlogic/odroid-c2/odroid-c2.c | 25 +-------------------- board/amlogic/p212/p212.c | 25 +-------------------- 7 files changed, 33 insertions(+), 120 deletions(-) diff --git a/arch/arm/include/asm/arch-meson/sm.h b/arch/arm/include/asm/arch-meson/sm.h index 83d6441803..db2be38fc5 100644 --- a/arch/arm/include/asm/arch-meson/sm.h +++ b/arch/arm/include/asm/arch-meson/sm.h @@ -7,5 +7,6 @@ #define __MESON_SM_H__ ssize_t meson_sm_read_efuse(uintptr_t offset, void *buffer, size_t size); +void meson_init_env_from_efuse(void); #endif /* __MESON_SM_H__ */ diff --git a/arch/arm/mach-meson/sm.c b/arch/arm/mach-meson/sm.c index 0bba5e4a07..2628591fe6 100644 --- a/arch/arm/mach-meson/sm.c +++ b/arch/arm/mach-meson/sm.c @@ -6,6 +6,7 @@ */ #include <common.h> +#include <environment.h> #include <asm/arch/gx.h> #include <linux/kernel.h> @@ -14,6 +15,11 @@ #define FN_EFUSE_READ 0x82000030 #define FN_EFUSE_WRITE 0x82000031 +#define EFUSE_SN_OFFSET 20 +#define EFUSE_SN_SIZE 16 +#define EFUSE_MAC_OFFSET 52 +#define EFUSE_MAC_SIZE 6 + static void *shmem_input; static void *shmem_output; @@ -54,3 +60,24 @@ ssize_t meson_sm_read_efuse(uintptr_t offset, void *buffer, size_t size) return regs.regs[0]; } + +void meson_init_env_from_efuse(void) +{ + static u8 mac[EFUSE_MAC_SIZE]; + char serial[EFUSE_SN_SIZE]; + ssize_t len; + + if (!eth_env_get_enetaddr("ethaddr", mac)) { + len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, + mac, EFUSE_MAC_SIZE); + if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac)) + eth_env_set_enetaddr("ethaddr", mac); + } + + if (!env_get("serial#")) { + len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, + EFUSE_SN_SIZE); + if (len == EFUSE_SN_SIZE) + env_set("serial#", serial); + } +} diff --git a/board/amlogic/khadas-vim/khadas-vim.c b/board/amlogic/khadas-vim/khadas-vim.c index 692bf2add3..4483a96761 100644 --- a/board/amlogic/khadas-vim/khadas-vim.c +++ b/board/amlogic/khadas-vim/khadas-vim.c @@ -6,18 +6,12 @@ #include <common.h> #include <dm.h> -#include <environment.h> #include <asm/io.h> #include <asm/arch/gx.h> #include <asm/arch/mem.h> #include <asm/arch/sm.h> #include <asm/arch/eth.h> -#define EFUSE_SN_OFFSET 20 -#define EFUSE_SN_SIZE 16 -#define EFUSE_MAC_OFFSET 52 -#define EFUSE_MAC_SIZE 6 - int board_init(void) { return 0; @@ -25,26 +19,9 @@ int board_init(void) int misc_init_r(void) { - u8 mac_addr[EFUSE_MAC_SIZE]; - char serial[EFUSE_SN_SIZE]; - ssize_t len; - meson_gx_eth_init(PHY_INTERFACE_MODE_RMII, MESON_GXL_USE_INTERNAL_RMII_PHY); - - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { - len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, - mac_addr, EFUSE_MAC_SIZE); - if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) - eth_env_set_enetaddr("ethaddr", mac_addr); - } - - if (!env_get("serial#")) { - len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, - EFUSE_SN_SIZE); - if (len == EFUSE_SN_SIZE) - env_set("serial#", serial); - } + meson_init_env_from_efuse(); return 0; } diff --git a/board/amlogic/libretech-cc/libretech-cc.c b/board/amlogic/libretech-cc/libretech-cc.c index ccab1272c5..86b1d213ff 100644 --- a/board/amlogic/libretech-cc/libretech-cc.c +++ b/board/amlogic/libretech-cc/libretech-cc.c @@ -6,18 +6,12 @@ #include <common.h> #include <dm.h> -#include <environment.h> #include <asm/io.h> #include <asm/arch/gx.h> #include <asm/arch/sm.h> #include <asm/arch/eth.h> #include <asm/arch/mem.h> -#define EFUSE_SN_OFFSET 20 -#define EFUSE_SN_SIZE 16 -#define EFUSE_MAC_OFFSET 52 -#define EFUSE_MAC_SIZE 6 - int board_init(void) { return 0; @@ -25,26 +19,9 @@ int board_init(void) int misc_init_r(void) { - u8 mac_addr[EFUSE_MAC_SIZE]; - char serial[EFUSE_SN_SIZE]; - ssize_t len; - meson_gx_eth_init(PHY_INTERFACE_MODE_RMII, MESON_GXL_USE_INTERNAL_RMII_PHY); - - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { - len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, - mac_addr, EFUSE_MAC_SIZE); - if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) - eth_env_set_enetaddr("ethaddr", mac_addr); - } - - if (!env_get("serial#")) { - len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, - EFUSE_SN_SIZE); - if (len == EFUSE_SN_SIZE) - env_set("serial#", serial); - } + meson_init_env_from_efuse(); return 0; } diff --git a/board/amlogic/nanopi-k2/nanopi-k2.c b/board/amlogic/nanopi-k2/nanopi-k2.c index ae29dd6fa4..e61c23f8c6 100644 --- a/board/amlogic/nanopi-k2/nanopi-k2.c +++ b/board/amlogic/nanopi-k2/nanopi-k2.c @@ -5,18 +5,12 @@ #include <common.h> #include <dm.h> -#include <environment.h> #include <asm/io.h> #include <asm/arch/gx.h> #include <asm/arch/sm.h> #include <asm/arch/eth.h> #include <asm/arch/mem.h> -#define EFUSE_SN_OFFSET 20 -#define EFUSE_SN_SIZE 16 -#define EFUSE_MAC_OFFSET 52 -#define EFUSE_MAC_SIZE 6 - int board_init(void) { return 0; @@ -24,25 +18,8 @@ int board_init(void) int misc_init_r(void) { - u8 mac_addr[EFUSE_MAC_SIZE]; - char serial[EFUSE_SN_SIZE]; - ssize_t len; - meson_gx_eth_init(PHY_INTERFACE_MODE_RGMII, 0); - - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { - len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, - mac_addr, EFUSE_MAC_SIZE); - if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) - eth_env_set_enetaddr("ethaddr", mac_addr); - } - - if (!env_get("serial#")) { - len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, - EFUSE_SN_SIZE); - if (len == EFUSE_SN_SIZE) - env_set("serial#", serial); - } + meson_init_env_from_efuse(); return 0; } diff --git a/board/amlogic/odroid-c2/odroid-c2.c b/board/amlogic/odroid-c2/odroid-c2.c index 2a2755c387..fffd225485 100644 --- a/board/amlogic/odroid-c2/odroid-c2.c +++ b/board/amlogic/odroid-c2/odroid-c2.c @@ -5,18 +5,12 @@ #include <common.h> #include <dm.h> -#include <environment.h> #include <asm/io.h> #include <asm/arch/gx.h> #include <asm/arch/sm.h> #include <asm/arch/eth.h> #include <asm/arch/mem.h> -#define EFUSE_SN_OFFSET 20 -#define EFUSE_SN_SIZE 16 -#define EFUSE_MAC_OFFSET 52 -#define EFUSE_MAC_SIZE 6 - int board_init(void) { return 0; @@ -24,25 +18,8 @@ int board_init(void) int misc_init_r(void) { - u8 mac_addr[EFUSE_MAC_SIZE]; - char serial[EFUSE_SN_SIZE]; - ssize_t len; - meson_gx_eth_init(PHY_INTERFACE_MODE_RGMII, 0); - - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { - len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, - mac_addr, EFUSE_MAC_SIZE); - if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) - eth_env_set_enetaddr("ethaddr", mac_addr); - } - - if (!env_get("serial#")) { - len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, - EFUSE_SN_SIZE); - if (len == EFUSE_SN_SIZE) - env_set("serial#", serial); - } + meson_init_env_from_efuse(); return 0; } diff --git a/board/amlogic/p212/p212.c b/board/amlogic/p212/p212.c index 06c2eaee47..57f776f404 100644 --- a/board/amlogic/p212/p212.c +++ b/board/amlogic/p212/p212.c @@ -6,18 +6,12 @@ #include <common.h> #include <dm.h> -#include <environment.h> #include <asm/io.h> #include <asm/arch/gx.h> #include <asm/arch/sm.h> #include <asm/arch/eth.h> #include <asm/arch/mem.h> -#define EFUSE_SN_OFFSET 20 -#define EFUSE_SN_SIZE 16 -#define EFUSE_MAC_OFFSET 52 -#define EFUSE_MAC_SIZE 6 - int board_init(void) { return 0; @@ -25,25 +19,8 @@ int board_init(void) int misc_init_r(void) { - u8 mac_addr[EFUSE_MAC_SIZE]; - char serial[EFUSE_SN_SIZE]; - ssize_t len; - meson_gx_eth_init(PHY_INTERFACE_MODE_RMII, 0); - - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { - len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, - mac_addr, EFUSE_MAC_SIZE); - if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) - eth_env_set_enetaddr("ethaddr", mac_addr); - } - - if (!env_get("serial#")) { - len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, - EFUSE_SN_SIZE); - if (len == EFUSE_SN_SIZE) - env_set("serial#", serial); - } + meson_init_env_from_efuse(); return 0; } -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH u-boot 2/3] boards: amlogic: use common function for environment initialization 2018-08-14 13:07 ` [PATCH u-boot 2/3] boards: amlogic: use common function for environment initialization Beniamino Galvani @ 2018-08-20 8:43 ` Neil Armstrong 0 siblings, 0 replies; 7+ messages in thread From: Neil Armstrong @ 2018-08-20 8:43 UTC (permalink / raw) To: linus-amlogic Hi Beniamino, On 14/08/2018 15:07, Beniamino Galvani wrote: > Clean up board files by moving the duplicate environment > initialization to arch code. > > Signed-off-by: Beniamino Galvani <b.galvani@gmail.com> > --- > arch/arm/include/asm/arch-meson/sm.h | 1 + > arch/arm/mach-meson/sm.c | 27 +++++++++++++++++++++++ > board/amlogic/khadas-vim/khadas-vim.c | 25 +-------------------- > board/amlogic/libretech-cc/libretech-cc.c | 25 +-------------------- > board/amlogic/nanopi-k2/nanopi-k2.c | 25 +-------------------- > board/amlogic/odroid-c2/odroid-c2.c | 25 +-------------------- > board/amlogic/p212/p212.c | 25 +-------------------- > 7 files changed, 33 insertions(+), 120 deletions(-) > > diff --git a/arch/arm/include/asm/arch-meson/sm.h b/arch/arm/include/asm/arch-meson/sm.h > index 83d6441803..db2be38fc5 100644 > --- a/arch/arm/include/asm/arch-meson/sm.h > +++ b/arch/arm/include/asm/arch-meson/sm.h > @@ -7,5 +7,6 @@ > #define __MESON_SM_H__ > > ssize_t meson_sm_read_efuse(uintptr_t offset, void *buffer, size_t size); > +void meson_init_env_from_efuse(void); > > #endif /* __MESON_SM_H__ */ > diff --git a/arch/arm/mach-meson/sm.c b/arch/arm/mach-meson/sm.c > index 0bba5e4a07..2628591fe6 100644 > --- a/arch/arm/mach-meson/sm.c > +++ b/arch/arm/mach-meson/sm.c > @@ -6,6 +6,7 @@ > */ > > #include <common.h> > +#include <environment.h> > #include <asm/arch/gx.h> > #include <linux/kernel.h> > > @@ -14,6 +15,11 @@ > #define FN_EFUSE_READ 0x82000030 > #define FN_EFUSE_WRITE 0x82000031 > > +#define EFUSE_SN_OFFSET 20 > +#define EFUSE_SN_SIZE 16 > +#define EFUSE_MAC_OFFSET 52 > +#define EFUSE_MAC_SIZE 6 > + > static void *shmem_input; > static void *shmem_output; > > @@ -54,3 +60,24 @@ ssize_t meson_sm_read_efuse(uintptr_t offset, void *buffer, size_t size) > > return regs.regs[0]; > } > + > +void meson_init_env_from_efuse(void) > +{ > + static u8 mac[EFUSE_MAC_SIZE]; > + char serial[EFUSE_SN_SIZE]; > + ssize_t len; > + > + if (!eth_env_get_enetaddr("ethaddr", mac)) { > + len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > + mac, EFUSE_MAC_SIZE); > + if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac)) > + eth_env_set_enetaddr("ethaddr", mac); > + } > + > + if (!env_get("serial#")) { > + len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, > + EFUSE_SN_SIZE); > + if (len == EFUSE_SN_SIZE) > + env_set("serial#", serial); > + } > +} > diff --git a/board/amlogic/khadas-vim/khadas-vim.c b/board/amlogic/khadas-vim/khadas-vim.c > index 692bf2add3..4483a96761 100644 > --- a/board/amlogic/khadas-vim/khadas-vim.c > +++ b/board/amlogic/khadas-vim/khadas-vim.c > @@ -6,18 +6,12 @@ > > #include <common.h> > #include <dm.h> > -#include <environment.h> > #include <asm/io.h> > #include <asm/arch/gx.h> > #include <asm/arch/mem.h> > #include <asm/arch/sm.h> > #include <asm/arch/eth.h> > > -#define EFUSE_SN_OFFSET 20 > -#define EFUSE_SN_SIZE 16 > -#define EFUSE_MAC_OFFSET 52 > -#define EFUSE_MAC_SIZE 6 > - > int board_init(void) > { > return 0; > @@ -25,26 +19,9 @@ int board_init(void) > > int misc_init_r(void) > { > - u8 mac_addr[EFUSE_MAC_SIZE]; > - char serial[EFUSE_SN_SIZE]; > - ssize_t len; > - > meson_gx_eth_init(PHY_INTERFACE_MODE_RMII, > MESON_GXL_USE_INTERNAL_RMII_PHY); > - > - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { > - len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > - mac_addr, EFUSE_MAC_SIZE); > - if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) > - eth_env_set_enetaddr("ethaddr", mac_addr); > - } > - > - if (!env_get("serial#")) { > - len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, > - EFUSE_SN_SIZE); > - if (len == EFUSE_SN_SIZE) > - env_set("serial#", serial); > - } > + meson_init_env_from_efuse(); > > return 0; > } > diff --git a/board/amlogic/libretech-cc/libretech-cc.c b/board/amlogic/libretech-cc/libretech-cc.c > index ccab1272c5..86b1d213ff 100644 > --- a/board/amlogic/libretech-cc/libretech-cc.c > +++ b/board/amlogic/libretech-cc/libretech-cc.c > @@ -6,18 +6,12 @@ > > #include <common.h> > #include <dm.h> > -#include <environment.h> > #include <asm/io.h> > #include <asm/arch/gx.h> > #include <asm/arch/sm.h> > #include <asm/arch/eth.h> > #include <asm/arch/mem.h> > > -#define EFUSE_SN_OFFSET 20 > -#define EFUSE_SN_SIZE 16 > -#define EFUSE_MAC_OFFSET 52 > -#define EFUSE_MAC_SIZE 6 > - > int board_init(void) > { > return 0; > @@ -25,26 +19,9 @@ int board_init(void) > > int misc_init_r(void) > { > - u8 mac_addr[EFUSE_MAC_SIZE]; > - char serial[EFUSE_SN_SIZE]; > - ssize_t len; > - > meson_gx_eth_init(PHY_INTERFACE_MODE_RMII, > MESON_GXL_USE_INTERNAL_RMII_PHY); > - > - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { > - len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > - mac_addr, EFUSE_MAC_SIZE); > - if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) > - eth_env_set_enetaddr("ethaddr", mac_addr); > - } > - > - if (!env_get("serial#")) { > - len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, > - EFUSE_SN_SIZE); > - if (len == EFUSE_SN_SIZE) > - env_set("serial#", serial); > - } > + meson_init_env_from_efuse(); > > return 0; > } > diff --git a/board/amlogic/nanopi-k2/nanopi-k2.c b/board/amlogic/nanopi-k2/nanopi-k2.c > index ae29dd6fa4..e61c23f8c6 100644 > --- a/board/amlogic/nanopi-k2/nanopi-k2.c > +++ b/board/amlogic/nanopi-k2/nanopi-k2.c > @@ -5,18 +5,12 @@ > > #include <common.h> > #include <dm.h> > -#include <environment.h> > #include <asm/io.h> > #include <asm/arch/gx.h> > #include <asm/arch/sm.h> > #include <asm/arch/eth.h> > #include <asm/arch/mem.h> > > -#define EFUSE_SN_OFFSET 20 > -#define EFUSE_SN_SIZE 16 > -#define EFUSE_MAC_OFFSET 52 > -#define EFUSE_MAC_SIZE 6 > - > int board_init(void) > { > return 0; > @@ -24,25 +18,8 @@ int board_init(void) > > int misc_init_r(void) > { > - u8 mac_addr[EFUSE_MAC_SIZE]; > - char serial[EFUSE_SN_SIZE]; > - ssize_t len; > - > meson_gx_eth_init(PHY_INTERFACE_MODE_RGMII, 0); > - > - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { > - len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > - mac_addr, EFUSE_MAC_SIZE); > - if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) > - eth_env_set_enetaddr("ethaddr", mac_addr); > - } > - > - if (!env_get("serial#")) { > - len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, > - EFUSE_SN_SIZE); > - if (len == EFUSE_SN_SIZE) > - env_set("serial#", serial); > - } > + meson_init_env_from_efuse(); > > return 0; > } > diff --git a/board/amlogic/odroid-c2/odroid-c2.c b/board/amlogic/odroid-c2/odroid-c2.c > index 2a2755c387..fffd225485 100644 > --- a/board/amlogic/odroid-c2/odroid-c2.c > +++ b/board/amlogic/odroid-c2/odroid-c2.c > @@ -5,18 +5,12 @@ > > #include <common.h> > #include <dm.h> > -#include <environment.h> > #include <asm/io.h> > #include <asm/arch/gx.h> > #include <asm/arch/sm.h> > #include <asm/arch/eth.h> > #include <asm/arch/mem.h> > > -#define EFUSE_SN_OFFSET 20 > -#define EFUSE_SN_SIZE 16 > -#define EFUSE_MAC_OFFSET 52 > -#define EFUSE_MAC_SIZE 6 > - > int board_init(void) > { > return 0; > @@ -24,25 +18,8 @@ int board_init(void) > > int misc_init_r(void) > { > - u8 mac_addr[EFUSE_MAC_SIZE]; > - char serial[EFUSE_SN_SIZE]; > - ssize_t len; > - > meson_gx_eth_init(PHY_INTERFACE_MODE_RGMII, 0); > - > - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { > - len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > - mac_addr, EFUSE_MAC_SIZE); > - if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) > - eth_env_set_enetaddr("ethaddr", mac_addr); > - } > - > - if (!env_get("serial#")) { > - len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, > - EFUSE_SN_SIZE); > - if (len == EFUSE_SN_SIZE) > - env_set("serial#", serial); > - } > + meson_init_env_from_efuse(); > > return 0; > } > diff --git a/board/amlogic/p212/p212.c b/board/amlogic/p212/p212.c > index 06c2eaee47..57f776f404 100644 > --- a/board/amlogic/p212/p212.c > +++ b/board/amlogic/p212/p212.c > @@ -6,18 +6,12 @@ > > #include <common.h> > #include <dm.h> > -#include <environment.h> > #include <asm/io.h> > #include <asm/arch/gx.h> > #include <asm/arch/sm.h> > #include <asm/arch/eth.h> > #include <asm/arch/mem.h> > > -#define EFUSE_SN_OFFSET 20 > -#define EFUSE_SN_SIZE 16 > -#define EFUSE_MAC_OFFSET 52 > -#define EFUSE_MAC_SIZE 6 > - > int board_init(void) > { > return 0; > @@ -25,25 +19,8 @@ int board_init(void) > > int misc_init_r(void) > { > - u8 mac_addr[EFUSE_MAC_SIZE]; > - char serial[EFUSE_SN_SIZE]; > - ssize_t len; > - > meson_gx_eth_init(PHY_INTERFACE_MODE_RMII, 0); > - > - if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { > - len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > - mac_addr, EFUSE_MAC_SIZE); > - if (len == EFUSE_MAC_SIZE && is_valid_ethaddr(mac_addr)) > - eth_env_set_enetaddr("ethaddr", mac_addr); > - } > - > - if (!env_get("serial#")) { > - len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, > - EFUSE_SN_SIZE); > - if (len == EFUSE_SN_SIZE) > - env_set("serial#", serial); > - } > + meson_init_env_from_efuse(); > > return 0; > } > In fact, only the "Odroid-C2" board uses these EFUSE offsets for MAC and Serial, so this was a task on my infinite TODO list to fix the MAC readout on the other boards and use the Serial number from ATF and drop reading it from the Efuses. For the story, it seems that the early GXBB does not implement the Secure Monitor ChipID call, but the later and GXL/GXM does. User can still store a serial number at offset : 18 with size 16 For MAC Address, for most products, they derive an unique mac address from the ChipID and allmost never store it on the Efuse... And another weird stuff, Hardkernel uses a weird Efuse offset, because amlogic uses a smaller offset : 0 and size 6 At least you could refactor by passing the offsets to the meson_init_env_from_efuse() call. Neil ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH u-boot 3/3] arm: meson: null-terminate the serial number 2018-08-14 13:07 [PATCH u-boot 0/3] amlogic: clean up board files Beniamino Galvani 2018-08-14 13:07 ` [PATCH u-boot 1/3] boards: amlogic: remove ethernet gpio reset code from boards Beniamino Galvani 2018-08-14 13:07 ` [PATCH u-boot 2/3] boards: amlogic: use common function for environment initialization Beniamino Galvani @ 2018-08-14 13:07 ` Beniamino Galvani 2 siblings, 0 replies; 7+ messages in thread From: Beniamino Galvani @ 2018-08-14 13:07 UTC (permalink / raw) To: linus-amlogic Terminate the serial number variable with null to avoid printing trailing garbage. Signed-off-by: Beniamino Galvani <b.galvani@gmail.com> --- arch/arm/mach-meson/sm.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-meson/sm.c b/arch/arm/mach-meson/sm.c index 2628591fe6..23eafe87b4 100644 --- a/arch/arm/mach-meson/sm.c +++ b/arch/arm/mach-meson/sm.c @@ -64,7 +64,7 @@ ssize_t meson_sm_read_efuse(uintptr_t offset, void *buffer, size_t size) void meson_init_env_from_efuse(void) { static u8 mac[EFUSE_MAC_SIZE]; - char serial[EFUSE_SN_SIZE]; + char serial[EFUSE_SN_SIZE + 1]; ssize_t len; if (!eth_env_get_enetaddr("ethaddr", mac)) { @@ -77,7 +77,9 @@ void meson_init_env_from_efuse(void) if (!env_get("serial#")) { len = meson_sm_read_efuse(EFUSE_SN_OFFSET, serial, EFUSE_SN_SIZE); - if (len == EFUSE_SN_SIZE) + if (len == EFUSE_SN_SIZE) { + serial[EFUSE_SN_SIZE] = '\0'; env_set("serial#", serial); + } } } -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-08-24 20:10 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-08-14 13:07 [PATCH u-boot 0/3] amlogic: clean up board files Beniamino Galvani 2018-08-14 13:07 ` [PATCH u-boot 1/3] boards: amlogic: remove ethernet gpio reset code from boards Beniamino Galvani 2018-08-20 8:36 ` Neil Armstrong 2018-08-24 20:10 ` [U-Boot, u-boot, " Tom Rini 2018-08-14 13:07 ` [PATCH u-boot 2/3] boards: amlogic: use common function for environment initialization Beniamino Galvani 2018-08-20 8:43 ` Neil Armstrong 2018-08-14 13:07 ` [PATCH u-boot 3/3] arm: meson: null-terminate the serial number Beniamino Galvani
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).