[RFC PATCH 6/7] devicetree: Add fdt_populate hook to pl011 device
Grant Likely
grant.likely at secretlab.ca
Wed Apr 7 14:10:28 EST 2010
Signed-off-by: Grant Likely <grant.likely at secretlab.ca>
---
hw/pl011.c | 29 +++++++++++++++++++++++++----
1 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/hw/pl011.c b/hw/pl011.c
index 81de91e..efc06d2 100644
--- a/hw/pl011.c
+++ b/hw/pl011.c
@@ -286,6 +286,27 @@ static int pl011_load(QEMUFile *f, void *opaque, int version_id)
return 0;
}
+#ifdef CONFIG_FDT
+#include <libfdt.h>
+static int pl011_fdt_populate(SysBusDevice *dev, void *fdt, int offset)
+{
+ pl011_state *s = FROM_SYSBUS(pl011_state, dev);
+ int rc;
+
+ rc = fdt_setprop_string(fdt, offset, "compatible", "arm,amba-device");
+ if (rc < 0)
+ return rc;
+
+ rc = fdt_setprop(fdt, offset, "arm,amba-deviceid", s->id, sizeof(s->id));
+ if (rc < 0)
+ return rc;
+
+ return 0;
+}
+#else
+#define pl011_fdt_populate NULL
+#endif
+
static int pl011_init(SysBusDevice *dev, const unsigned char *id)
{
int iomemtype;
@@ -322,10 +343,10 @@ static int pl011_init_luminary(SysBusDevice *dev)
static void pl011_register_devices(void)
{
- sysbus_register_dev("pl011", sizeof(pl011_state),
- pl011_init_arm);
- sysbus_register_dev("pl011_luminary", sizeof(pl011_state),
- pl011_init_luminary);
+ sysbus_register_dev_fdt("pl011", sizeof(pl011_state),
+ pl011_init_arm, pl011_fdt_populate);
+ sysbus_register_dev_fdt("pl011_luminary", sizeof(pl011_state),
+ pl011_init_luminary, pl011_fdt_populate);
}
device_init(pl011_register_devices)
More information about the devicetree-discuss
mailing list