Commit d706c1b050274b3bf97d7cb0542c0d070c9ccb8b

Authored by Grant Likely
1 parent efb2e014fc

driver-core: Add device node pointer to struct device

Currently, platforms using CONFIG_OF add a 'struct device_node *of_node'
to dev->archdata.  However, with CONFIG_OF becoming generic for all
architectures, it makes sense for commonality to move it out of archdata
and into struct device proper.

This patch adds a struct device_node *of_node member to struct device
and updates all locations which currently write the device_node pointer
into archdata to also update dev->of_node.  Subsequent patches will
modify callers to use the archdata location and ultimately remove
the archdata member entirely.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
CC: Michal Simek <monstr@monstr.eu>
CC: Greg Kroah-Hartman <gregkh@suse.de>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: "David S. Miller" <davem@davemloft.net>
CC: Stephen Rothwell <sfr@canb.auug.org.au>
CC: Jeremy Kerr <jeremy.kerr@canonical.com>
CC: microblaze-uclinux@itee.uq.edu.au
CC: linux-kernel@vger.kernel.org
CC: linuxppc-dev@ozlabs.org
CC: sparclinux@vger.kernel.org

Showing 11 changed files with 16 additions and 2 deletions Side-by-side Diff

arch/microblaze/kernel/of_device.c
... ... @@ -54,6 +54,7 @@
54 54 dev->dev.parent = parent;
55 55 dev->dev.release = of_release_dev;
56 56 dev->dev.archdata.of_node = np;
  57 + dev->dev.of_node = np;
57 58  
58 59 if (bus_id)
59 60 dev_set_name(&dev->dev, bus_id);
arch/powerpc/kernel/of_device.c
... ... @@ -74,6 +74,7 @@
74 74 dev->dev.parent = parent;
75 75 dev->dev.release = of_release_dev;
76 76 dev->dev.archdata.of_node = np;
  77 + dev->dev.of_node = np;
77 78  
78 79 if (bus_id)
79 80 dev_set_name(&dev->dev, "%s", bus_id);
arch/powerpc/kernel/pci-common.c
... ... @@ -1097,8 +1097,9 @@
1097 1097 if (dev->is_added)
1098 1098 continue;
1099 1099  
1100   - /* Setup OF node pointer in archdata */
  1100 + /* Setup OF node pointer in the device */
1101 1101 sd->of_node = pci_device_to_OF_node(dev);
  1102 + dev->dev.of_node = pci_device_to_OF_node(dev);
1102 1103  
1103 1104 /* Fixup NUMA node as it may not be setup yet by the generic
1104 1105 * code and is needed by the DMA init
arch/powerpc/kernel/vio.c
... ... @@ -1230,7 +1230,8 @@
1230 1230 if (unit_address != NULL)
1231 1231 viodev->unit_address = *unit_address;
1232 1232 }
1233   - viodev->dev.archdata.of_node = of_node_get(of_node);
  1233 + viodev->dev.of_node = of_node_get(of_node);
  1234 + viodev->dev.archdata.of_node = viodev->dev.of_node;
1234 1235  
1235 1236 if (firmware_has_feature(FW_FEATURE_CMO))
1236 1237 vio_cmo_set_dma_ops(viodev);
arch/powerpc/platforms/ps3/system-bus.c
... ... @@ -766,6 +766,7 @@
766 766 BUG();
767 767 };
768 768  
  769 + dev->core.of_node = NULL;
769 770 dev->core.archdata.of_node = NULL;
770 771 set_dev_node(&dev->core, 0);
771 772  
arch/sparc/kernel/of_device_32.c
... ... @@ -348,6 +348,7 @@
348 348 sd->prom_node = dp;
349 349 sd->op = op;
350 350  
  351 + op->dev.of_node = dp;
351 352 op->node = dp;
352 353  
353 354 op->clock_freq = of_getintprop_default(dp, "clock-frequency",
arch/sparc/kernel/of_device_64.c
... ... @@ -643,6 +643,7 @@
643 643 sd->prom_node = dp;
644 644 sd->op = op;
645 645  
  646 + op->dev.of_node = dp;
646 647 op->node = dp;
647 648  
648 649 op->clock_freq = of_getintprop_default(dp, "clock-frequency",
arch/sparc/kernel/pci.c
... ... @@ -262,6 +262,7 @@
262 262 sd->stc = &pbm->stc;
263 263 sd->host_controller = pbm;
264 264 sd->prom_node = node;
  265 + dev->dev.of_node = node;
265 266 sd->op = op = of_find_device_by_node(node);
266 267 sd->numa_node = pbm->numa_node;
267 268  
drivers/of/of_mdio.c
... ... @@ -80,6 +80,7 @@
80 80 * can be looked up later */
81 81 of_node_get(child);
82 82 dev_archdata_set_node(&phy->dev.archdata, child);
  83 + phy->dev.of_node = child;
83 84  
84 85 /* All data is now stored in the phy struct; register it */
85 86 rc = phy_device_register(phy);
... ... @@ -79,6 +79,7 @@
79 79  
80 80 /* Store a pointer to the node in the device structure */
81 81 of_node_get(nc);
  82 + spi->dev.of_node = nc;
82 83 spi->dev.archdata.of_node = nc;
83 84  
84 85 /* Register the new device */
include/linux/device.h
... ... @@ -34,6 +34,7 @@
34 34 struct class_private;
35 35 struct bus_type;
36 36 struct bus_type_private;
  37 +struct device_node;
37 38  
38 39 struct bus_attribute {
39 40 struct attribute attr;
... ... @@ -433,6 +434,9 @@
433 434 override */
434 435 /* arch specific additions */
435 436 struct dev_archdata archdata;
  437 +#ifdef CONFIG_OF
  438 + struct device_node *of_node;
  439 +#endif
436 440  
437 441 dev_t devt; /* dev_t, creates the sysfs "dev" */
438 442