Patchwork [RFC,6/7] devicetree: Add fdt_populate hook to pl011 device

login
register
mail settings
Submitter Grant Likely
Date April 7, 2010, 4:10 a.m.
Message ID <20100407041028.20274.67952.stgit@angua>
Download mbox | patch
Permalink /patch/49567/
State New
Headers show

Comments

Grant Likely - April 7, 2010, 4:10 a.m.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
---

 hw/pl011.c |   29 +++++++++++++++++++++++++----
 1 files changed, 25 insertions(+), 4 deletions(-)

Patch

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)