summaryrefslogtreecommitdiffstats
path: root/sys/arm
diff options
context:
space:
mode:
authorgonzo <gonzo@FreeBSD.org>2013-01-05 23:08:58 +0000
committergonzo <gonzo@FreeBSD.org>2013-01-05 23:08:58 +0000
commit47c050325d73daad19b9cc14091285fe246d51d9 (patch)
treea587a114cd70e425030f7076728ec3562ceaa2b2 /sys/arm
parentc78b98152b928321523ff1b56250578a81d0ebb2 (diff)
downloadFreeBSD-src-47c050325d73daad19b9cc14091285fe246d51d9.zip
FreeBSD-src-47c050325d73daad19b9cc14091285fe246d51d9.tar.gz
Export board serial and board revision obtained from FDT blob
Diffstat (limited to 'sys/arm')
-rw-r--r--sys/arm/broadcom/bcm2835/bcm2835_machdep.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/arm/broadcom/bcm2835/bcm2835_machdep.c b/sys/arm/broadcom/bcm2835/bcm2835_machdep.c
index 6baa8dd..7308c0f 100644
--- a/sys/arm/broadcom/bcm2835/bcm2835_machdep.c
+++ b/sys/arm/broadcom/bcm2835/bcm2835_machdep.c
@@ -78,6 +78,25 @@ initarm_gpio_init(void)
void
initarm_late_init(void)
{
+ phandle_t system;
+ pcell_t cells[2];
+ int len;
+
+ /*
+ * It seems there is no way to let syscons framework know
+ * that framebuffer resolution has changed. So just try
+ * to fetch data from FDT and go with defaults if failed
+ */
+ system = OF_finddevice("/system");
+ if (system != 0) {
+ len = OF_getprop(system, "linux,serial", &cells, sizeof(cells));
+ if (len > 0)
+ board_set_serial(fdt64_to_cpu(*((uint64_t *)cells)));
+
+ len = OF_getprop(system, "linux,revision", &cells, sizeof(cells));
+ if (len > 0)
+ board_set_revision(fdt32_to_cpu(*((uint32_t *)cells)));
+ }
}
#define FDT_DEVMAP_MAX (2) // FIXME
OpenPOWER on IntegriCloud