Message ID | 20200618144037.23392-1-narmstrong@baylibre.com |
---|---|
State | Accepted |
Commit | 6de936b011fb02d1019a69aea0184cee4a578f59 |
Headers | show |
Series | board: amlogic: Add Odroid-N2 board support | expand |
Hi Neil, On Thu, 18 Jun 2020 at 20:11, Neil Armstrong <narmstrong at baylibre.com> wrote: > > From: Pascal Vizeli <pvizeli at syshack.ch> > > Add a proper Odroid-N2 board support to handle the Ethernet MAC > address stored in the in-SoC eFuses. > This feature need to be implemented for all Amlogic SoC boards, since many boards link libretech-cc also generate random mac address for ethernet. Please add my: Tested on N2. Tested-by: Anand Moon <linux.amoon at gmail.com> -Anand > Signed-off-by: Pascal Vizeli <pvizeli at syshack.ch> > Signed-off-by: Neil Armstrong <narmstrong at baylibre.com> > --- > board/amlogic/odroid-n2/MAINTAINERS | 7 +++++ > board/amlogic/odroid-n2/Makefile | 6 ++++ > board/amlogic/odroid-n2/odroid-n2.c | 49 +++++++++++++++++++++++++++++ > board/amlogic/w400/MAINTAINERS | 2 -- > configs/odroid-n2_defconfig | 2 +- > 5 files changed, 63 insertions(+), 3 deletions(-) > create mode 100644 board/amlogic/odroid-n2/MAINTAINERS > create mode 100644 board/amlogic/odroid-n2/Makefile > create mode 100644 board/amlogic/odroid-n2/odroid-n2.c > > diff --git a/board/amlogic/odroid-n2/MAINTAINERS b/board/amlogic/odroid-n2/MAINTAINERS > new file mode 100644 > index 0000000000..5627e54058 > --- /dev/null > +++ b/board/amlogic/odroid-n2/MAINTAINERS > @@ -0,0 +1,7 @@ > +ODROID-N2 > +M: Neil Armstrong <narmstrong at baylibre.com> > +S: Maintained > +L: u-boot-amlogic at groups.io > +F: board/amlogic/odroid-n2/ > +F: configs/odroid-n2_defconfig > +F: doc/board/amlogic/odroid-n2.rst > diff --git a/board/amlogic/odroid-n2/Makefile b/board/amlogic/odroid-n2/Makefile > new file mode 100644 > index 0000000000..68e4e2a828 > --- /dev/null > +++ b/board/amlogic/odroid-n2/Makefile > @@ -0,0 +1,6 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# (C) Copyright 2020 BayLibre, SAS > +# Author: Neil Armstrong <narmstrong at baylibre.com> > + > +obj-y := odroid-n2.o > diff --git a/board/amlogic/odroid-n2/odroid-n2.c b/board/amlogic/odroid-n2/odroid-n2.c > new file mode 100644 > index 0000000000..caf7fd6810 > --- /dev/null > +++ b/board/amlogic/odroid-n2/odroid-n2.c > @@ -0,0 +1,49 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright (C) 2020 BayLibre, SAS > + * Author: Neil Armstrong <narmstrong at baylibre.com> > + */ > + > +#include <common.h> > +#include <dm.h> > +#include <env.h> > +#include <init.h> > +#include <net.h> > +#include <asm/io.h> > +#include <asm/arch/sm.h> > +#include <asm/arch/eth.h> > + > +#define EFUSE_MAC_OFFSET 20 > +#define EFUSE_MAC_SIZE 12 > +#define MAC_ADDR_LEN 6 > + > +int misc_init_r(void) > +{ > + u8 mac_addr[MAC_ADDR_LEN]; > + char efuse_mac_addr[EFUSE_MAC_SIZE], tmp[3]; > + ssize_t len; > + > + meson_eth_init(PHY_INTERFACE_MODE_RGMII, 0); > + > + if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { > + len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > + efuse_mac_addr, EFUSE_MAC_SIZE); > + if (len != EFUSE_MAC_SIZE) > + return 0; > + > + /* MAC is stored in ASCII format, 1bytes = 2characters */ > + for (int i = 0; i < 6; i++) { > + tmp[0] = efuse_mac_addr[i * 2]; > + tmp[1] = efuse_mac_addr[i * 2 + 1]; > + tmp[2] = '\0'; > + mac_addr[i] = simple_strtoul(tmp, NULL, 16); > + } > + > + if (is_valid_ethaddr(mac_addr)) > + eth_env_set_enetaddr("ethaddr", mac_addr); > + else > + meson_generate_serial_ethaddr(); > + } > + > + return 0; > +} > diff --git a/board/amlogic/w400/MAINTAINERS b/board/amlogic/w400/MAINTAINERS > index 5e837cfaef..a1b0ac8636 100644 > --- a/board/amlogic/w400/MAINTAINERS > +++ b/board/amlogic/w400/MAINTAINERS > @@ -5,8 +5,6 @@ L: u-boot-amlogic at groups.io > F: board/amlogic/w400/ > F: configs/khadas-vim3_defconfig > F: configs/khadas-vim3l_defconfig > -F: configs/odroid-n2_defconfig > F: doc/board/amlogic/w400.rst > F: doc/board/amlogic/khadas-vim3.rst > F: doc/board/amlogic/khadas-vim3l.rst > -F: doc/board/amlogic/odroid-n2.rst > diff --git a/configs/odroid-n2_defconfig b/configs/odroid-n2_defconfig > index e0cc6e3729..063809416e 100644 > --- a/configs/odroid-n2_defconfig > +++ b/configs/odroid-n2_defconfig > @@ -1,5 +1,5 @@ > CONFIG_ARM=y > -CONFIG_SYS_BOARD="w400" > +CONFIG_SYS_BOARD="odroid-n2" > CONFIG_ARCH_MESON=y > CONFIG_SYS_TEXT_BASE=0x01000000 > CONFIG_ENV_SIZE=0x2000 > -- > 2.22.0 >
Hi, On 21/06/2020 19:23, Anand Moon wrote: > Hi Neil, > > On Thu, 18 Jun 2020 at 20:11, Neil Armstrong <narmstrong at baylibre.com> wrote: >> >> From: Pascal Vizeli <pvizeli at syshack.ch> >> >> Add a proper Odroid-N2 board support to handle the Ethernet MAC >> address stored in the in-SoC eFuses. >> > > This feature need to be implemented for all Amlogic SoC boards, > since many boards link libretech-cc also generate random mac address > for ethernet. In fact, AFAIK only HardKernel stores the MAC in the fuses, now Amlogic stores the MAC in the eMMC custom partitions, but they did for GXBB and previous SoCs. Earlier I introduced meson_generate_serial_ethaddr() for GXL and later (not GXBB), to generate an unique MAC address from the SoC serial. Neil > > Please add my: Tested on N2. > Tested-by: Anand Moon <linux.amoon at gmail.com> > > -Anand > >> Signed-off-by: Pascal Vizeli <pvizeli at syshack.ch> >> Signed-off-by: Neil Armstrong <narmstrong at baylibre.com> >> --- >> board/amlogic/odroid-n2/MAINTAINERS | 7 +++++ >> board/amlogic/odroid-n2/Makefile | 6 ++++ >> board/amlogic/odroid-n2/odroid-n2.c | 49 +++++++++++++++++++++++++++++ >> board/amlogic/w400/MAINTAINERS | 2 -- >> configs/odroid-n2_defconfig | 2 +- >> 5 files changed, 63 insertions(+), 3 deletions(-) >> create mode 100644 board/amlogic/odroid-n2/MAINTAINERS >> create mode 100644 board/amlogic/odroid-n2/Makefile >> create mode 100644 board/amlogic/odroid-n2/odroid-n2.c >> >> diff --git a/board/amlogic/odroid-n2/MAINTAINERS b/board/amlogic/odroid-n2/MAINTAINERS >> new file mode 100644 >> index 0000000000..5627e54058 >> --- /dev/null >> +++ b/board/amlogic/odroid-n2/MAINTAINERS >> @@ -0,0 +1,7 @@ >> +ODROID-N2 >> +M: Neil Armstrong <narmstrong at baylibre.com> >> +S: Maintained >> +L: u-boot-amlogic at groups.io >> +F: board/amlogic/odroid-n2/ >> +F: configs/odroid-n2_defconfig >> +F: doc/board/amlogic/odroid-n2.rst >> diff --git a/board/amlogic/odroid-n2/Makefile b/board/amlogic/odroid-n2/Makefile >> new file mode 100644 >> index 0000000000..68e4e2a828 >> --- /dev/null >> +++ b/board/amlogic/odroid-n2/Makefile >> @@ -0,0 +1,6 @@ >> +# SPDX-License-Identifier: GPL-2.0+ >> +# >> +# (C) Copyright 2020 BayLibre, SAS >> +# Author: Neil Armstrong <narmstrong at baylibre.com> >> + >> +obj-y := odroid-n2.o >> diff --git a/board/amlogic/odroid-n2/odroid-n2.c b/board/amlogic/odroid-n2/odroid-n2.c >> new file mode 100644 >> index 0000000000..caf7fd6810 >> --- /dev/null >> +++ b/board/amlogic/odroid-n2/odroid-n2.c >> @@ -0,0 +1,49 @@ >> +// SPDX-License-Identifier: GPL-2.0+ >> +/* >> + * Copyright (C) 2020 BayLibre, SAS >> + * Author: Neil Armstrong <narmstrong at baylibre.com> >> + */ >> + >> +#include <common.h> >> +#include <dm.h> >> +#include <env.h> >> +#include <init.h> >> +#include <net.h> >> +#include <asm/io.h> >> +#include <asm/arch/sm.h> >> +#include <asm/arch/eth.h> >> + >> +#define EFUSE_MAC_OFFSET 20 >> +#define EFUSE_MAC_SIZE 12 >> +#define MAC_ADDR_LEN 6 >> + >> +int misc_init_r(void) >> +{ >> + u8 mac_addr[MAC_ADDR_LEN]; >> + char efuse_mac_addr[EFUSE_MAC_SIZE], tmp[3]; >> + ssize_t len; >> + >> + meson_eth_init(PHY_INTERFACE_MODE_RGMII, 0); >> + >> + if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { >> + len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, >> + efuse_mac_addr, EFUSE_MAC_SIZE); >> + if (len != EFUSE_MAC_SIZE) >> + return 0; >> + >> + /* MAC is stored in ASCII format, 1bytes = 2characters */ >> + for (int i = 0; i < 6; i++) { >> + tmp[0] = efuse_mac_addr[i * 2]; >> + tmp[1] = efuse_mac_addr[i * 2 + 1]; >> + tmp[2] = '\0'; >> + mac_addr[i] = simple_strtoul(tmp, NULL, 16); >> + } >> + >> + if (is_valid_ethaddr(mac_addr)) >> + eth_env_set_enetaddr("ethaddr", mac_addr); >> + else >> + meson_generate_serial_ethaddr(); >> + } >> + >> + return 0; >> +} >> diff --git a/board/amlogic/w400/MAINTAINERS b/board/amlogic/w400/MAINTAINERS >> index 5e837cfaef..a1b0ac8636 100644 >> --- a/board/amlogic/w400/MAINTAINERS >> +++ b/board/amlogic/w400/MAINTAINERS >> @@ -5,8 +5,6 @@ L: u-boot-amlogic at groups.io >> F: board/amlogic/w400/ >> F: configs/khadas-vim3_defconfig >> F: configs/khadas-vim3l_defconfig >> -F: configs/odroid-n2_defconfig >> F: doc/board/amlogic/w400.rst >> F: doc/board/amlogic/khadas-vim3.rst >> F: doc/board/amlogic/khadas-vim3l.rst >> -F: doc/board/amlogic/odroid-n2.rst >> diff --git a/configs/odroid-n2_defconfig b/configs/odroid-n2_defconfig >> index e0cc6e3729..063809416e 100644 >> --- a/configs/odroid-n2_defconfig >> +++ b/configs/odroid-n2_defconfig >> @@ -1,5 +1,5 @@ >> CONFIG_ARM=y >> -CONFIG_SYS_BOARD="w400" >> +CONFIG_SYS_BOARD="odroid-n2" >> CONFIG_ARCH_MESON=y >> CONFIG_SYS_TEXT_BASE=0x01000000 >> CONFIG_ENV_SIZE=0x2000 >> -- >> 2.22.0 >>
Hi Neil, On Mon, 22 Jun 2020 at 18:36, Neil Armstrong <narmstrong at baylibre.com> wrote: > > Hi, > > On 21/06/2020 19:23, Anand Moon wrote: > > Hi Neil, > > > > On Thu, 18 Jun 2020 at 20:11, Neil Armstrong <narmstrong at baylibre.com> wrote: > >> > >> From: Pascal Vizeli <pvizeli at syshack.ch> > >> > >> Add a proper Odroid-N2 board support to handle the Ethernet MAC > >> address stored in the in-SoC eFuses. > >> > > > > This feature need to be implemented for all Amlogic SoC boards, > > since many boards link libretech-cc also generate random mac address > > for ethernet. > > In fact, AFAIK only HardKernel stores the MAC in the fuses, now Amlogic stores > the MAC in the eMMC custom partitions, but they did for GXBB and previous SoCs. > Earlier I introduced meson_generate_serial_ethaddr() for GXL and later (not GXBB), > to generate an unique MAC address from the SoC serial. > > Neil > Thanks for this information. -Anand
On 18/06/2020 16:40, Neil Armstrong wrote: > From: Pascal Vizeli <pvizeli at syshack.ch> > > Add a proper Odroid-N2 board support to handle the Ethernet MAC > address stored in the in-SoC eFuses. > > Signed-off-by: Pascal Vizeli <pvizeli at syshack.ch> > Signed-off-by: Neil Armstrong <narmstrong at baylibre.com> > --- > board/amlogic/odroid-n2/MAINTAINERS | 7 +++++ > board/amlogic/odroid-n2/Makefile | 6 ++++ > board/amlogic/odroid-n2/odroid-n2.c | 49 +++++++++++++++++++++++++++++ > board/amlogic/w400/MAINTAINERS | 2 -- > configs/odroid-n2_defconfig | 2 +- > 5 files changed, 63 insertions(+), 3 deletions(-) > create mode 100644 board/amlogic/odroid-n2/MAINTAINERS > create mode 100644 board/amlogic/odroid-n2/Makefile > create mode 100644 board/amlogic/odroid-n2/odroid-n2.c > > diff --git a/board/amlogic/odroid-n2/MAINTAINERS b/board/amlogic/odroid-n2/MAINTAINERS > new file mode 100644 > index 0000000000..5627e54058 > --- /dev/null > +++ b/board/amlogic/odroid-n2/MAINTAINERS > @@ -0,0 +1,7 @@ > +ODROID-N2 > +M: Neil Armstrong <narmstrong at baylibre.com> > +S: Maintained > +L: u-boot-amlogic at groups.io > +F: board/amlogic/odroid-n2/ > +F: configs/odroid-n2_defconfig > +F: doc/board/amlogic/odroid-n2.rst > diff --git a/board/amlogic/odroid-n2/Makefile b/board/amlogic/odroid-n2/Makefile > new file mode 100644 > index 0000000000..68e4e2a828 > --- /dev/null > +++ b/board/amlogic/odroid-n2/Makefile > @@ -0,0 +1,6 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# (C) Copyright 2020 BayLibre, SAS > +# Author: Neil Armstrong <narmstrong at baylibre.com> > + > +obj-y := odroid-n2.o > diff --git a/board/amlogic/odroid-n2/odroid-n2.c b/board/amlogic/odroid-n2/odroid-n2.c > new file mode 100644 > index 0000000000..caf7fd6810 > --- /dev/null > +++ b/board/amlogic/odroid-n2/odroid-n2.c > @@ -0,0 +1,49 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright (C) 2020 BayLibre, SAS > + * Author: Neil Armstrong <narmstrong at baylibre.com> > + */ > + > +#include <common.h> > +#include <dm.h> > +#include <env.h> > +#include <init.h> > +#include <net.h> > +#include <asm/io.h> > +#include <asm/arch/sm.h> > +#include <asm/arch/eth.h> > + > +#define EFUSE_MAC_OFFSET 20 > +#define EFUSE_MAC_SIZE 12 > +#define MAC_ADDR_LEN 6 > + > +int misc_init_r(void) > +{ > + u8 mac_addr[MAC_ADDR_LEN]; > + char efuse_mac_addr[EFUSE_MAC_SIZE], tmp[3]; > + ssize_t len; > + > + meson_eth_init(PHY_INTERFACE_MODE_RGMII, 0); > + > + if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { > + len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, > + efuse_mac_addr, EFUSE_MAC_SIZE); > + if (len != EFUSE_MAC_SIZE) > + return 0; > + > + /* MAC is stored in ASCII format, 1bytes = 2characters */ > + for (int i = 0; i < 6; i++) { > + tmp[0] = efuse_mac_addr[i * 2]; > + tmp[1] = efuse_mac_addr[i * 2 + 1]; > + tmp[2] = '\0'; > + mac_addr[i] = simple_strtoul(tmp, NULL, 16); > + } > + > + if (is_valid_ethaddr(mac_addr)) > + eth_env_set_enetaddr("ethaddr", mac_addr); > + else > + meson_generate_serial_ethaddr(); > + } > + > + return 0; > +} > diff --git a/board/amlogic/w400/MAINTAINERS b/board/amlogic/w400/MAINTAINERS > index 5e837cfaef..a1b0ac8636 100644 > --- a/board/amlogic/w400/MAINTAINERS > +++ b/board/amlogic/w400/MAINTAINERS > @@ -5,8 +5,6 @@ L: u-boot-amlogic at groups.io > F: board/amlogic/w400/ > F: configs/khadas-vim3_defconfig > F: configs/khadas-vim3l_defconfig > -F: configs/odroid-n2_defconfig > F: doc/board/amlogic/w400.rst > F: doc/board/amlogic/khadas-vim3.rst > F: doc/board/amlogic/khadas-vim3l.rst > -F: doc/board/amlogic/odroid-n2.rst > diff --git a/configs/odroid-n2_defconfig b/configs/odroid-n2_defconfig > index e0cc6e3729..063809416e 100644 > --- a/configs/odroid-n2_defconfig > +++ b/configs/odroid-n2_defconfig > @@ -1,5 +1,5 @@ > CONFIG_ARM=y > -CONFIG_SYS_BOARD="w400" > +CONFIG_SYS_BOARD="odroid-n2" > CONFIG_ARCH_MESON=y > CONFIG_SYS_TEXT_BASE=0x01000000 > CONFIG_ENV_SIZE=0x2000 > Applied to u-boot-amlogic for U-Boot 2020.10 Neil
diff --git a/board/amlogic/odroid-n2/MAINTAINERS b/board/amlogic/odroid-n2/MAINTAINERS new file mode 100644 index 0000000000..5627e54058 --- /dev/null +++ b/board/amlogic/odroid-n2/MAINTAINERS @@ -0,0 +1,7 @@ +ODROID-N2 +M: Neil Armstrong <narmstrong at baylibre.com> +S: Maintained +L: u-boot-amlogic at groups.io +F: board/amlogic/odroid-n2/ +F: configs/odroid-n2_defconfig +F: doc/board/amlogic/odroid-n2.rst diff --git a/board/amlogic/odroid-n2/Makefile b/board/amlogic/odroid-n2/Makefile new file mode 100644 index 0000000000..68e4e2a828 --- /dev/null +++ b/board/amlogic/odroid-n2/Makefile @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0+ +# +# (C) Copyright 2020 BayLibre, SAS +# Author: Neil Armstrong <narmstrong at baylibre.com> + +obj-y := odroid-n2.o diff --git a/board/amlogic/odroid-n2/odroid-n2.c b/board/amlogic/odroid-n2/odroid-n2.c new file mode 100644 index 0000000000..caf7fd6810 --- /dev/null +++ b/board/amlogic/odroid-n2/odroid-n2.c @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2020 BayLibre, SAS + * Author: Neil Armstrong <narmstrong at baylibre.com> + */ + +#include <common.h> +#include <dm.h> +#include <env.h> +#include <init.h> +#include <net.h> +#include <asm/io.h> +#include <asm/arch/sm.h> +#include <asm/arch/eth.h> + +#define EFUSE_MAC_OFFSET 20 +#define EFUSE_MAC_SIZE 12 +#define MAC_ADDR_LEN 6 + +int misc_init_r(void) +{ + u8 mac_addr[MAC_ADDR_LEN]; + char efuse_mac_addr[EFUSE_MAC_SIZE], tmp[3]; + ssize_t len; + + meson_eth_init(PHY_INTERFACE_MODE_RGMII, 0); + + if (!eth_env_get_enetaddr("ethaddr", mac_addr)) { + len = meson_sm_read_efuse(EFUSE_MAC_OFFSET, + efuse_mac_addr, EFUSE_MAC_SIZE); + if (len != EFUSE_MAC_SIZE) + return 0; + + /* MAC is stored in ASCII format, 1bytes = 2characters */ + for (int i = 0; i < 6; i++) { + tmp[0] = efuse_mac_addr[i * 2]; + tmp[1] = efuse_mac_addr[i * 2 + 1]; + tmp[2] = '\0'; + mac_addr[i] = simple_strtoul(tmp, NULL, 16); + } + + if (is_valid_ethaddr(mac_addr)) + eth_env_set_enetaddr("ethaddr", mac_addr); + else + meson_generate_serial_ethaddr(); + } + + return 0; +} diff --git a/board/amlogic/w400/MAINTAINERS b/board/amlogic/w400/MAINTAINERS index 5e837cfaef..a1b0ac8636 100644 --- a/board/amlogic/w400/MAINTAINERS +++ b/board/amlogic/w400/MAINTAINERS @@ -5,8 +5,6 @@ L: u-boot-amlogic at groups.io F: board/amlogic/w400/ F: configs/khadas-vim3_defconfig F: configs/khadas-vim3l_defconfig -F: configs/odroid-n2_defconfig F: doc/board/amlogic/w400.rst F: doc/board/amlogic/khadas-vim3.rst F: doc/board/amlogic/khadas-vim3l.rst -F: doc/board/amlogic/odroid-n2.rst diff --git a/configs/odroid-n2_defconfig b/configs/odroid-n2_defconfig index e0cc6e3729..063809416e 100644 --- a/configs/odroid-n2_defconfig +++ b/configs/odroid-n2_defconfig @@ -1,5 +1,5 @@ CONFIG_ARM=y -CONFIG_SYS_BOARD="w400" +CONFIG_SYS_BOARD="odroid-n2" CONFIG_ARCH_MESON=y CONFIG_SYS_TEXT_BASE=0x01000000 CONFIG_ENV_SIZE=0x2000