Module Name:    src
Committed By:   skrll
Date:           Wed Jan  9 23:04:11 UTC 2013

Modified Files:
        src/sys/arch/evbarm/rpi: rpi_machdep.c

Log Message:
Provide the mac address for usmsc(4) as read from the firmware.


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/sys/arch/evbarm/rpi/rpi_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/evbarm/rpi/rpi_machdep.c
diff -u src/sys/arch/evbarm/rpi/rpi_machdep.c:1.24 src/sys/arch/evbarm/rpi/rpi_machdep.c:1.25
--- src/sys/arch/evbarm/rpi/rpi_machdep.c:1.24	Wed Jan  9 22:36:07 2013
+++ src/sys/arch/evbarm/rpi/rpi_machdep.c	Wed Jan  9 23:04:10 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: rpi_machdep.c,v 1.24 2013/01/09 22:36:07 jmcneill Exp $	*/
+/*	$NetBSD: rpi_machdep.c,v 1.25 2013/01/09 23:04:10 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rpi_machdep.c,v 1.24 2013/01/09 22:36:07 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rpi_machdep.c,v 1.25 2013/01/09 23:04:10 skrll Exp $");
 
 #include "opt_evbarm_boardtype.h"
 
@@ -46,6 +46,7 @@ __KERNEL_RCSID(0, "$NetBSD: rpi_machdep.
 #include <sys/termios.h>
 #include <sys/bus.h>
 
+#include <net/if_ether.h>
 #include <prop/proplib.h>
 
 #include <dev/cons.h>
@@ -402,6 +403,11 @@ rpi_bootparams(void)
 	if (vcprop_tag_success_p(&vb.vbt_armclockrate.tag))
 		curcpu()->ci_data.cpu_cc_freq = vb.vbt_armclockrate.rate;
 
+	if (vcprop_tag_success_p(&vb.vbt_macaddr.tag))
+		printf("%s: mac-address  %llx\n", __func__,
+		    vb.vbt_macaddr.addr);
+
+
 #ifdef VERBOSE_INIT_ARM
 	if (vcprop_tag_success_p(&vb.vbt_fwrev.tag))
 		printf("%s: firmware rev %x\n", __func__,
@@ -732,6 +738,26 @@ rpi_device_register(device_t dev, void *
 		    "frequency", vb.vbt_emmcclockrate.rate);
 	}
 #endif
+	if (device_is_a(dev, "usmsc") &&
+	    vcprop_tag_success_p(&vb.vbt_macaddr.tag)) {
+		const uint8_t enaddr[ETHER_ADDR_LEN] = {
+		     (vb.vbt_macaddr.addr >> 0) & 0xff,
+		     (vb.vbt_macaddr.addr >> 8) & 0xff,
+		     (vb.vbt_macaddr.addr >> 16) & 0xff,
+		     (vb.vbt_macaddr.addr >> 24) & 0xff,
+		     (vb.vbt_macaddr.addr >> 32) & 0xff,
+		     (vb.vbt_macaddr.addr >> 40) & 0xff
+		};
+
+		prop_data_t pd = prop_data_create_data(enaddr, ETHER_ADDR_LEN);
+		KASSERT(pd != NULL);
+		if (prop_dictionary_set(device_properties(dev), "mac-address",
+		    pd) == false) {
+			aprint_error_dev(dev,
+			    "WARNING: Unable to set mac-address property\n");
+		}
+		prop_object_release(pd);
+	}
 
 #if NGENFB > 0
 	if (device_is_a(dev, "genfb")) {

Reply via email to