Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[smsc95xx] Fetch MAC from device tree for Raspberry Pi
Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Jul 19, 2019
1 parent 6dde0f6 commit 83e0f9f
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions src/drivers/net/smsc95xx.c
Expand Up @@ -33,6 +33,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#include <ipxe/profile.h>
#include <ipxe/base16.h>
#include <ipxe/smbios.h>
#include <ipxe/fdt.h>
#include "smsc95xx.h"

/** @file
Expand Down Expand Up @@ -158,6 +159,32 @@ static int smsc95xx_vm3_fetch_mac ( struct smscusb_device *smscusb ) {
return 0;
}

/**
* Fetch MAC address from device tree
*
* @v smscusb SMSC USB device
* @ret rc Return status code
*/
static int smsc95xx_fdt_fetch_mac ( struct smscusb_device *smscusb ) {
struct net_device *netdev = smscusb->netdev;
unsigned int offset;
int rc;

/* Look for "ethernet[0]" alias */
if ( ( rc = fdt_alias ( "ethernet", &offset ) != 0 ) &&
( rc = fdt_alias ( "ethernet0", &offset ) != 0 ) ) {
return rc;
}

/* Fetch MAC address */
if ( ( rc = fdt_mac ( offset, netdev ) ) != 0 )
return rc;

DBGC ( smscusb, "SMSC95XX %p using FDT MAC %s\n",
smscusb, eth_ntoa ( netdev->hw_addr ) );
return 0;
}

/**
* Fetch MAC address
*
Expand All @@ -173,6 +200,10 @@ static int smsc95xx_fetch_mac ( struct smscusb_device *smscusb ) {
SMSC95XX_E2P_BASE ) ) == 0 )
return 0;

/* Read MAC address from device tree */
if ( ( rc = smsc95xx_fdt_fetch_mac ( smscusb ) ) == 0 )
return 0;

/* Construct MAC address for Honeywell VM3, if applicable */
if ( ( rc = smsc95xx_vm3_fetch_mac ( smscusb ) ) == 0 )
return 0;
Expand Down

0 comments on commit 83e0f9f

Please sign in to comment.