Commit d706c1b0 authored by Grant Likely's avatar Grant Likely

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: default avatarGrant Likely <grant.likely@secretlab.ca>
Acked-by: default avatarGreg 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
parent efb2e014
...@@ -54,6 +54,7 @@ struct of_device *of_device_alloc(struct device_node *np, ...@@ -54,6 +54,7 @@ struct of_device *of_device_alloc(struct device_node *np,
dev->dev.parent = parent; dev->dev.parent = parent;
dev->dev.release = of_release_dev; dev->dev.release = of_release_dev;
dev->dev.archdata.of_node = np; dev->dev.archdata.of_node = np;
dev->dev.of_node = np;
if (bus_id) if (bus_id)
dev_set_name(&dev->dev, bus_id); dev_set_name(&dev->dev, bus_id);
......
...@@ -74,6 +74,7 @@ struct of_device *of_device_alloc(struct device_node *np, ...@@ -74,6 +74,7 @@ struct of_device *of_device_alloc(struct device_node *np,
dev->dev.parent = parent; dev->dev.parent = parent;
dev->dev.release = of_release_dev; dev->dev.release = of_release_dev;
dev->dev.archdata.of_node = np; dev->dev.archdata.of_node = np;
dev->dev.of_node = np;
if (bus_id) if (bus_id)
dev_set_name(&dev->dev, "%s", bus_id); dev_set_name(&dev->dev, "%s", bus_id);
......
...@@ -1097,8 +1097,9 @@ void __devinit pcibios_setup_bus_devices(struct pci_bus *bus) ...@@ -1097,8 +1097,9 @@ void __devinit pcibios_setup_bus_devices(struct pci_bus *bus)
if (dev->is_added) if (dev->is_added)
continue; continue;
/* Setup OF node pointer in archdata */ /* Setup OF node pointer in the device */
sd->of_node = pci_device_to_OF_node(dev); sd->of_node = pci_device_to_OF_node(dev);
dev->dev.of_node = pci_device_to_OF_node(dev);
/* Fixup NUMA node as it may not be setup yet by the generic /* Fixup NUMA node as it may not be setup yet by the generic
* code and is needed by the DMA init * code and is needed by the DMA init
......
...@@ -1230,7 +1230,8 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node) ...@@ -1230,7 +1230,8 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node)
if (unit_address != NULL) if (unit_address != NULL)
viodev->unit_address = *unit_address; viodev->unit_address = *unit_address;
} }
viodev->dev.archdata.of_node = of_node_get(of_node); viodev->dev.of_node = of_node_get(of_node);
viodev->dev.archdata.of_node = viodev->dev.of_node;
if (firmware_has_feature(FW_FEATURE_CMO)) if (firmware_has_feature(FW_FEATURE_CMO))
vio_cmo_set_dma_ops(viodev); vio_cmo_set_dma_ops(viodev);
......
...@@ -766,6 +766,7 @@ int ps3_system_bus_device_register(struct ps3_system_bus_device *dev) ...@@ -766,6 +766,7 @@ int ps3_system_bus_device_register(struct ps3_system_bus_device *dev)
BUG(); BUG();
}; };
dev->core.of_node = NULL;
dev->core.archdata.of_node = NULL; dev->core.archdata.of_node = NULL;
set_dev_node(&dev->core, 0); set_dev_node(&dev->core, 0);
......
...@@ -348,6 +348,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp, ...@@ -348,6 +348,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
sd->prom_node = dp; sd->prom_node = dp;
sd->op = op; sd->op = op;
op->dev.of_node = dp;
op->node = dp; op->node = dp;
op->clock_freq = of_getintprop_default(dp, "clock-frequency", op->clock_freq = of_getintprop_default(dp, "clock-frequency",
......
...@@ -643,6 +643,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp, ...@@ -643,6 +643,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
sd->prom_node = dp; sd->prom_node = dp;
sd->op = op; sd->op = op;
op->dev.of_node = dp;
op->node = dp; op->node = dp;
op->clock_freq = of_getintprop_default(dp, "clock-frequency", op->clock_freq = of_getintprop_default(dp, "clock-frequency",
......
...@@ -262,6 +262,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, ...@@ -262,6 +262,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
sd->stc = &pbm->stc; sd->stc = &pbm->stc;
sd->host_controller = pbm; sd->host_controller = pbm;
sd->prom_node = node; sd->prom_node = node;
dev->dev.of_node = node;
sd->op = op = of_find_device_by_node(node); sd->op = op = of_find_device_by_node(node);
sd->numa_node = pbm->numa_node; sd->numa_node = pbm->numa_node;
......
...@@ -80,6 +80,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) ...@@ -80,6 +80,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np)
* can be looked up later */ * can be looked up later */
of_node_get(child); of_node_get(child);
dev_archdata_set_node(&phy->dev.archdata, child); dev_archdata_set_node(&phy->dev.archdata, child);
phy->dev.of_node = child;
/* All data is now stored in the phy struct; register it */ /* All data is now stored in the phy struct; register it */
rc = phy_device_register(phy); rc = phy_device_register(phy);
......
...@@ -79,6 +79,7 @@ void of_register_spi_devices(struct spi_master *master, struct device_node *np) ...@@ -79,6 +79,7 @@ void of_register_spi_devices(struct spi_master *master, struct device_node *np)
/* Store a pointer to the node in the device structure */ /* Store a pointer to the node in the device structure */
of_node_get(nc); of_node_get(nc);
spi->dev.of_node = nc;
spi->dev.archdata.of_node = nc; spi->dev.archdata.of_node = nc;
/* Register the new device */ /* Register the new device */
......
...@@ -34,6 +34,7 @@ struct class; ...@@ -34,6 +34,7 @@ struct class;
struct class_private; struct class_private;
struct bus_type; struct bus_type;
struct bus_type_private; struct bus_type_private;
struct device_node;
struct bus_attribute { struct bus_attribute {
struct attribute attr; struct attribute attr;
...@@ -433,6 +434,9 @@ struct device { ...@@ -433,6 +434,9 @@ struct device {
override */ override */
/* arch specific additions */ /* arch specific additions */
struct dev_archdata archdata; struct dev_archdata archdata;
#ifdef CONFIG_OF
struct device_node *of_node;
#endif
dev_t devt; /* dev_t, creates the sysfs "dev" */ dev_t devt; /* dev_t, creates the sysfs "dev" */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment