diff options
author | gonzo <gonzo@FreeBSD.org> | 2013-01-05 23:08:58 +0000 |
---|---|---|
committer | gonzo <gonzo@FreeBSD.org> | 2013-01-05 23:08:58 +0000 |
commit | 47c050325d73daad19b9cc14091285fe246d51d9 (patch) | |
tree | a587a114cd70e425030f7076728ec3562ceaa2b2 | |
parent | c78b98152b928321523ff1b56250578a81d0ebb2 (diff) | |
download | FreeBSD-src-47c050325d73daad19b9cc14091285fe246d51d9.zip FreeBSD-src-47c050325d73daad19b9cc14091285fe246d51d9.tar.gz |
Export board serial and board revision obtained from FDT blob
-rw-r--r-- | sys/arm/broadcom/bcm2835/bcm2835_machdep.c | 19 |
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 |