]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/sparc/kernel/ebus.c
Merge branch 'cris' of git://www.jni.nu/cris
[linux-2.6-omap-h63xx.git] / arch / sparc / kernel / ebus.c
index 7bb86b9cdaa338be5c3ab6a54f8ab53bc5ed7938..d850785b20808716b5d843af7877712db1b9dc7d 100644 (file)
@@ -148,6 +148,7 @@ void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_device *d
 {
        const struct linux_prom_registers *regs;
        struct linux_ebus_child *child;
+       struct dev_archdata *sd;
        const int *irqs;
        int i, n, len;
        unsigned long baseaddr;
@@ -155,6 +156,8 @@ void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_device *d
        dev->prom_node = dp;
 
        regs = of_get_property(dp, "reg", &len);
+       if (!regs)
+               len = 0;
        if (len % sizeof(struct linux_prom_registers)) {
                prom_printf("UGH: proplen for %s was %d, need multiple of %d\n",
                            dev->prom_node->name, len,
@@ -234,6 +237,11 @@ void __init fill_ebus_device(struct device_node *dp, struct linux_ebus_device *d
                }
        }
 
+       sd = &dev->ofdev.dev.archdata;
+       sd->prom_node = dp;
+       sd->op = &dev->ofdev;
+       sd->iommu = dev->bus->ofdev.dev.parent->archdata.iommu;
+
        dev->ofdev.node = dp;
        dev->ofdev.dev.parent = &dev->bus->ofdev.dev;
        dev->ofdev.dev.bus = &ebus_bus_type;