[U-Boot] [PATCH] rockchip: tinker: set ethaddr in late init
Eddie Cai
eddie.cai.linux at gmail.com
Wed Apr 19 01:07:56 UTC 2017
Hi Jonas
2017-04-19 2:04 GMT+08:00 Jonas Karlman <jonas at kwiboo.se>:
> Hi Simon,
>
> On 2017-04-18 06:01, Simon Glass wrote:
>> Hi Jonas,
>>
>> On 17 April 2017 at 15:13, Jonas Karlman <jonas at kwiboo.se
>> <mailto:jonas at kwiboo.se>> wrote:
>> > Set ethernet mac address in late init for Tinker Board,
>> > prevents getting a random mac address each boot.
>> >
>> > Read mac address from eeprom, first 6 bytes from 0x50 on i2c2.
>> > Same as /etc/init.d/rockchip.sh on Tinker OS.
>> >
>> > Signed-off-by: Jonas Karlman <jonas at kwiboo.se <mailto:jonas at kwiboo.se>>
>> > ---
>> >
>> > board/rockchip/tinker_rk3288/tinker-rk3288.c | 26
>> ++++++++++++++++++++++++++
>> > 1 file changed, 26 insertions(+)
>> >
>> > diff --git a/board/rockchip/tinker_rk3288/tinker-rk3288.c
>> b/board/rockchip/tinker_rk3288/tinker-rk3288.c
>> > index 79541a3939..48165b2545 100644
>> > --- a/board/rockchip/tinker_rk3288/tinker-rk3288.c
>> > +++ b/board/rockchip/tinker_rk3288/tinker-rk3288.c
>> > @@ -5,3 +5,29 @@
>> > */
>> >
>> > #include <common.h>
>> > +#include <i2c.h>
>> > +#include <netdev.h>
>> > +
>> > +int rk_board_late_init(void)
>> > +{
>> > + struct udevice *dev;
>> > + int ret;
>> > + u8 mac[6];
>> > +
>> > + ret = i2c_get_chip_for_busnum(2, 0x50, 1, &dev);
>> > + if (ret) {
>> > + debug("failed to get eeprom\n");
>> > + return 0;
>> > + }
>>
>> I'm sure this works, but really we should have this chip mentioned in
>> the device tree under &i2c2. Then we should be able to use the
>> i2c_eeprom driver. I cannot see this board supported in Linux to figure
>> out how it does it there.
It will be in main line when 4.12 release
https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git/commit/?h=v4.12-armsoc/dts32&id=223599514133293bb9afe7b82937140c3b275877
>
> Thanks, I will rework this patch to use the device tree and the
> i2c_eeprom driver.
>
> The device tree for Asus Tinker Board is not yet in mainline linux.
> This is the eeprom part taken from asus's tinker os device tree:
>
> m24c08 at 50 {
> compatible = "at,24c08";
> reg = <0x50>;
> };
>
>>
>> I think tinker is the CHIP board, right? Are there instructions
>> somewhere on how to load U-Boot onto it?
>>
>> > +
>> > + ret = dm_i2c_read(dev, 0x0, mac, 6);
>> > + if (ret) {
>> > + debug("failed to read mac\n");
>> > + return 0;
>> > + }
>> > +
>> > + if (is_valid_ethaddr(mac))
>> > + eth_setenv_enetaddr("ethaddr", mac);
>> > +
>> > + return 0;
>> > +}
>> > --
>> > 2.11.0
>> >
>>
>> Regards,
>> Simon
>
> Regards,
> Jonas
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
More information about the U-Boot
mailing list