* [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 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 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
* [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
* [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
* [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
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).