]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/sparc/kernel/of_device_32.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs...
[mv-sheeva.git] / arch / sparc / kernel / of_device_32.c
index 47e63f1e719c7a2d9e4d4e757b1bf0a07e16d308..2d055a1e9cc2b483d2aebbae083b21ddea0bf5ec 100644 (file)
@@ -241,10 +241,10 @@ static int __init use_1to1_mapping(struct device_node *pp)
 
 static int of_resource_verbose;
 
-static void __init build_device_resources(struct of_device *op,
+static void __init build_device_resources(struct platform_device *op,
                                          struct device *parent)
 {
-       struct of_device *p_op;
+       struct platform_device *p_op;
        struct of_bus *bus;
        int na, ns;
        int index, num_reg;
@@ -253,7 +253,7 @@ static void __init build_device_resources(struct of_device *op,
        if (!parent)
                return;
 
-       p_op = to_of_device(parent);
+       p_op = to_platform_device(parent);
        bus = of_match_bus(p_op->dev.of_node);
        bus->count_cells(op->dev.of_node, &na, &ns);
 
@@ -267,6 +267,8 @@ static void __init build_device_resources(struct of_device *op,
        /* Conver to num-entries.  */
        num_reg /= na + ns;
 
+       op->resource = op->archdata.resource;
+       op->num_resources = num_reg;
        for (index = 0; index < num_reg; index++) {
                struct resource *r = &op->resource[index];
                u32 addr[OF_MAX_ADDR_CELLS];
@@ -333,10 +335,10 @@ static void __init build_device_resources(struct of_device *op,
        }
 }
 
-static struct of_device * __init scan_one_device(struct device_node *dp,
+static struct platform_device * __init scan_one_device(struct device_node *dp,
                                                 struct device *parent)
 {
-       struct of_device *op = kzalloc(sizeof(*op), GFP_KERNEL);
+       struct platform_device *op = kzalloc(sizeof(*op), GFP_KERNEL);
        const struct linux_prom_irqs *intr;
        struct dev_archdata *sd;
        int len, i;
@@ -349,27 +351,21 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
 
        op->dev.of_node = dp;
 
-       op->clock_freq = of_getintprop_default(dp, "clock-frequency",
-                                              (25*1000*1000));
-       op->portid = of_getintprop_default(dp, "upa-portid", -1);
-       if (op->portid == -1)
-               op->portid = of_getintprop_default(dp, "portid", -1);
-
        intr = of_get_property(dp, "intr", &len);
        if (intr) {
-               op->num_irqs = len / sizeof(struct linux_prom_irqs);
-               for (i = 0; i < op->num_irqs; i++)
-                       op->irqs[i] = intr[i].pri;
+               op->archdata.num_irqs = len / sizeof(struct linux_prom_irqs);
+               for (i = 0; i < op->archdata.num_irqs; i++)
+                       op->archdata.irqs[i] = intr[i].pri;
        } else {
                const unsigned int *irq =
                        of_get_property(dp, "interrupts", &len);
 
                if (irq) {
-                       op->num_irqs = len / sizeof(unsigned int);
-                       for (i = 0; i < op->num_irqs; i++)
-                               op->irqs[i] = irq[i];
+                       op->archdata.num_irqs = len / sizeof(unsigned int);
+                       for (i = 0; i < op->archdata.num_irqs; i++)
+                               op->archdata.irqs[i] = irq[i];
                } else {
-                       op->num_irqs = 0;
+                       op->archdata.num_irqs = 0;
                }
        }
        if (sparc_cpu_model == sun4d) {
@@ -411,8 +407,8 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
                        goto build_resources;
                }
 
-               for (i = 0; i < op->num_irqs; i++) {
-                       int this_irq = op->irqs[i];
+               for (i = 0; i < op->archdata.num_irqs; i++) {
+                       int this_irq = op->archdata.irqs[i];
                        int sbusl = pil_to_sbus[this_irq];
 
                        if (sbusl)
@@ -420,7 +416,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
                                            (sbusl << 2) +
                                            slot);
 
-                       op->irqs[i] = this_irq;
+                       op->archdata.irqs[i] = this_irq;
                }
        }
 
@@ -428,7 +424,7 @@ build_resources:
        build_device_resources(op, parent);
 
        op->dev.parent = parent;
-       op->dev.bus = &of_platform_bus_type;
+       op->dev.bus = &platform_bus_type;
        if (!parent)
                dev_set_name(&op->dev, "root");
        else
@@ -447,7 +443,7 @@ build_resources:
 static void __init scan_tree(struct device_node *dp, struct device *parent)
 {
        while (dp) {
-               struct of_device *op = scan_one_device(dp, parent);
+               struct platform_device *op = scan_one_device(dp, parent);
 
                if (op)
                        scan_tree(dp->child, &op->dev);
@@ -456,30 +452,19 @@ static void __init scan_tree(struct device_node *dp, struct device *parent)
        }
 }
 
-static void __init scan_of_devices(void)
+static int __init scan_of_devices(void)
 {
        struct device_node *root = of_find_node_by_path("/");
-       struct of_device *parent;
+       struct platform_device *parent;
 
        parent = scan_one_device(root, NULL);
        if (!parent)
-               return;
+               return 0;
 
        scan_tree(root->child, &parent->dev);
+       return 0;
 }
-
-static int __init of_bus_driver_init(void)
-{
-       int err;
-
-       err = of_bus_type_init(&of_platform_bus_type, "of");
-       if (!err)
-               scan_of_devices();
-
-       return err;
-}
-
-postcore_initcall(of_bus_driver_init);
+postcore_initcall(scan_of_devices);
 
 static int __init of_debug(char *str)
 {