Browse Source

[smsc95xx] Fetch MAC from device tree for Raspberry Pi

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 4 years ago
parent
commit
83e0f9f377
1 changed files with 31 additions and 0 deletions
  1. 31
    0
      src/drivers/net/smsc95xx.c

+ 31
- 0
src/drivers/net/smsc95xx.c View File

33
 #include <ipxe/profile.h>
33
 #include <ipxe/profile.h>
34
 #include <ipxe/base16.h>
34
 #include <ipxe/base16.h>
35
 #include <ipxe/smbios.h>
35
 #include <ipxe/smbios.h>
36
+#include <ipxe/fdt.h>
36
 #include "smsc95xx.h"
37
 #include "smsc95xx.h"
37
 
38
 
38
 /** @file
39
 /** @file
158
 	return 0;
159
 	return 0;
159
 }
160
 }
160
 
161
 
162
+/**
163
+ * Fetch MAC address from device tree
164
+ *
165
+ * @v smscusb		SMSC USB device
166
+ * @ret rc		Return status code
167
+ */
168
+static int smsc95xx_fdt_fetch_mac ( struct smscusb_device *smscusb ) {
169
+	struct net_device *netdev = smscusb->netdev;
170
+	unsigned int offset;
171
+	int rc;
172
+
173
+	/* Look for "ethernet[0]" alias */
174
+	if ( ( rc = fdt_alias ( "ethernet", &offset ) != 0 ) &&
175
+	     ( rc = fdt_alias ( "ethernet0", &offset ) != 0 ) ) {
176
+		return rc;
177
+	}
178
+
179
+	/* Fetch MAC address */
180
+	if ( ( rc = fdt_mac ( offset, netdev ) ) != 0 )
181
+		return rc;
182
+
183
+	DBGC ( smscusb, "SMSC95XX %p using FDT MAC %s\n",
184
+	       smscusb, eth_ntoa ( netdev->hw_addr ) );
185
+	return 0;
186
+}
187
+
161
 /**
188
 /**
162
  * Fetch MAC address
189
  * Fetch MAC address
163
  *
190
  *
173
 					       SMSC95XX_E2P_BASE ) ) == 0 )
200
 					       SMSC95XX_E2P_BASE ) ) == 0 )
174
 		return 0;
201
 		return 0;
175
 
202
 
203
+	/* Read MAC address from device tree */
204
+	if ( ( rc = smsc95xx_fdt_fetch_mac ( smscusb ) ) == 0 )
205
+		return 0;
206
+
176
 	/* Construct MAC address for Honeywell VM3, if applicable */
207
 	/* Construct MAC address for Honeywell VM3, if applicable */
177
 	if ( ( rc = smsc95xx_vm3_fetch_mac ( smscusb ) ) == 0 )
208
 	if ( ( rc = smsc95xx_vm3_fetch_mac ( smscusb ) ) == 0 )
178
 		return 0;
209
 		return 0;

Loading…
Cancel
Save