[U-Boot] ARM: rpi_b: query internal MAC address from firmware

Stephen Warren swarren at wwwdotorg.org
Wed Sep 24 21:44:40 CEST 2014


On 09/24/2014 01:27 PM, Jeroen Hofstee wrote:
> Hello Stephan,
>
> On 24-09-14 05:45, Stephen Warren wrote:
>> The built-in SMSC 95xx chip doesn't know its own MAC address. Instead,
>> we must query it from the VC firmware; it's probably encoded in fuses
>> on the BCM2835.
>>
>> Signed-off-by: Stephen Warren <swarren at wwwdotorg.org>
>> ---
>> This depends on "usb: dwc2: Add driver for Synopsis DWC2 USB IP block
>> from Marek Vasut".
>>
>>   arch/arm/include/asm/arch-bcm2835/mbox.h | 14 ++++++++++++++
>>   board/raspberrypi/rpi_b/rpi_b.c          | 26
>> ++++++++++++++++++++++++++
>>   include/configs/rpi_b.h                  |  1 +
>>   3 files changed, 41 insertions(+)
>>
> [snip]
>> +int misc_init_r(void)
>> +{
>> +    ALLOC_ALIGN_BUFFER(struct msg_get_mac_address, msg, 1, 16);
>> +    int ret;
>> +
>> +    BCM2835_MBOX_INIT_HDR(msg);
>> +    BCM2835_MBOX_INIT_TAG(&msg->get_mac_address, GET_MAC_ADDRESS);
>> +
>> +    ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg->hdr);
>> +    if (ret) {
>> +        printf("bcm2835: Could not query MAC address\n");
>> +        /* Ignore error; not critical */
>> +        return 0;
>> +    }
>> +
>> +    eth_setenv_enetaddr("usbethaddr",
>> msg->get_mac_address.body.resp.mac);
>> +
>> +    return 0;
>> +}
>> +
>
> Normally this should be within a check for if (!getenv("usbethaddr")).
> Any reason to deviate from that?

That makes sense. I simply wasn't aware of the convention. I'll amend 
the patch.


More information about the U-Boot mailing list