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

Stephen Warren
2014-09-24T19:44:40Z

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@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.