]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blobdiff - arch/sparc/kernel/of_device_64.c
sparc/of: Move of_device fields into struct pdev_archdata
[mirror_ubuntu-jammy-kernel.git] / arch / sparc / kernel / of_device_64.c
index b3d4cb5d21b333c54fee00998491644397eb92d1..5e8cbb942d3dc0b4bf6c1c7d118b4d8226c65f53 100644 (file)
@@ -323,10 +323,10 @@ static void __init build_device_resources(struct of_device *op,
                return;
 
        p_op = to_of_device(parent);
-       bus = of_match_bus(p_op->node);
-       bus->count_cells(op->node, &na, &ns);
+       bus = of_match_bus(p_op->dev.of_node);
+       bus->count_cells(op->dev.of_node, &na, &ns);
 
-       preg = of_get_property(op->node, bus->addr_prop_name, &num_reg);
+       preg = of_get_property(op->dev.of_node, bus->addr_prop_name, &num_reg);
        if (!preg || num_reg == 0)
                return;
 
@@ -340,16 +340,18 @@ static void __init build_device_resources(struct of_device *op,
        if (num_reg > PROMREG_MAX) {
                printk(KERN_WARNING "%s: Too many regs (%d), "
                       "limiting to %d.\n",
-                      op->node->full_name, num_reg, PROMREG_MAX);
+                      op->dev.of_node->full_name, num_reg, PROMREG_MAX);
                num_reg = PROMREG_MAX;
        }
 
+       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];
                const u32 *reg = (preg + (index * ((na + ns) * 4)));
-               struct device_node *dp = op->node;
-               struct device_node *pp = p_op->node;
+               struct device_node *dp = op->dev.of_node;
+               struct device_node *pp = p_op->dev.of_node;
                struct of_bus *pbus, *dbus;
                u64 size, result = OF_BAD_ADDR;
                unsigned long flags;
@@ -397,7 +399,7 @@ static void __init build_device_resources(struct of_device *op,
 
                if (of_resource_verbose)
                        printk("%s reg[%d] -> %llx\n",
-                              op->node->full_name, index,
+                              op->dev.of_node->full_name, index,
                               result);
 
                if (result != OF_BAD_ADDR) {
@@ -408,7 +410,7 @@ static void __init build_device_resources(struct of_device *op,
                        r->end = result + size - 1;
                        r->flags = flags;
                }
-               r->name = op->node->name;
+               r->name = op->dev.of_node->name;
        }
 }
 
@@ -530,7 +532,7 @@ static unsigned int __init build_one_device_irq(struct of_device *op,
                                                struct device *parent,
                                                unsigned int irq)
 {
-       struct device_node *dp = op->node;
+       struct device_node *dp = op->dev.of_node;
        struct device_node *pp, *ip;
        unsigned int orig_irq = irq;
        int nid;
@@ -575,7 +577,7 @@ static unsigned int __init build_one_device_irq(struct of_device *op,
 
                        if (of_irq_verbose)
                                printk("%s: Apply [%s:%x] imap --> [%s:%x]\n",
-                                      op->node->full_name,
+                                      op->dev.of_node->full_name,
                                       pp->full_name, this_orig_irq,
                                       (iret ? iret->full_name : "NULL"), irq);
 
@@ -594,7 +596,7 @@ static unsigned int __init build_one_device_irq(struct of_device *op,
                                if (of_irq_verbose)
                                        printk("%s: PCI swizzle [%s] "
                                               "%x --> %x\n",
-                                              op->node->full_name,
+                                              op->dev.of_node->full_name,
                                               pp->full_name, this_orig_irq,
                                               irq);
 
@@ -611,11 +613,11 @@ static unsigned int __init build_one_device_irq(struct of_device *op,
        if (!ip)
                return orig_irq;
 
-       irq = ip->irq_trans->irq_build(op->node, irq,
+       irq = ip->irq_trans->irq_build(op->dev.of_node, irq,
                                       ip->irq_trans->data);
        if (of_irq_verbose)
                printk("%s: Apply IRQ trans [%s] %x --> %x\n",
-                      op->node->full_name, ip->full_name, orig_irq, irq);
+                     op->dev.of_node->full_name, ip->full_name, orig_irq, irq);
 
 out:
        nid = of_node_to_nid(dp);
@@ -640,36 +642,29 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
                return NULL;
 
        sd = &op->dev.archdata;
-       sd->prom_node = dp;
        sd->op = op;
 
-       op->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);
+       op->dev.of_node = dp;
 
        irq = of_get_property(dp, "interrupts", &len);
        if (irq) {
-               op->num_irqs = len / 4;
+               op->archdata.num_irqs = len / 4;
 
                /* Prevent overrunning the op->irqs[] array.  */
-               if (op->num_irqs > PROMINTR_MAX) {
+               if (op->archdata.num_irqs > PROMINTR_MAX) {
                        printk(KERN_WARNING "%s: Too many irqs (%d), "
                               "limiting to %d.\n",
-                              dp->full_name, op->num_irqs, PROMINTR_MAX);
-                       op->num_irqs = PROMINTR_MAX;
+                              dp->full_name, op->archdata.num_irqs, PROMINTR_MAX);
+                       op->archdata.num_irqs = PROMINTR_MAX;
                }
-               memcpy(op->irqs, irq, op->num_irqs * 4);
+               memcpy(op->archdata.irqs, irq, op->archdata.num_irqs * 4);
        } else {
-               op->num_irqs = 0;
+               op->archdata.num_irqs = 0;
        }
 
        build_device_resources(op, parent);
-       for (i = 0; i < op->num_irqs; i++)
-               op->irqs[i] = build_one_device_irq(op, parent, op->irqs[i]);
+       for (i = 0; i < op->archdata.num_irqs; i++)
+               op->archdata.irqs[i] = build_one_device_irq(op, parent, op->archdata.irqs[i]);
 
        op->dev.parent = parent;
        op->dev.bus = &of_platform_bus_type;