diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2010-04-13 19:12:28 -0400 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2010-04-28 20:20:57 -0400 |
commit | d706c1b050274b3bf97d7cb0542c0d070c9ccb8b (patch) | |
tree | 9104c28f9028589cc4b95d8846dfc3288dcbf289 | |
parent | efb2e014fc4f2675011b802e1a84bf9a58756004 (diff) |
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
-rw-r--r-- | arch/microblaze/kernel/of_device.c | 1 | ||||
-rw-r--r-- | arch/powerpc/kernel/of_device.c | 1 | ||||
-rw-r--r-- | arch/powerpc/kernel/pci-common.c | 3 | ||||
-rw-r--r-- | arch/powerpc/kernel/vio.c | 3 | ||||
-rw-r--r-- | arch/powerpc/platforms/ps3/system-bus.c | 1 | ||||
-rw-r--r-- | arch/sparc/kernel/of_device_32.c | 1 | ||||
-rw-r--r-- | arch/sparc/kernel/of_device_64.c | 1 | ||||
-rw-r--r-- | arch/sparc/kernel/pci.c | 1 | ||||
-rw-r--r-- | drivers/of/of_mdio.c | 1 | ||||
-rw-r--r-- | drivers/of/of_spi.c | 1 | ||||
-rw-r--r-- | include/linux/device.h | 4 |
11 files changed, 16 insertions, 2 deletions
diff --git a/arch/microblaze/kernel/of_device.c b/arch/microblaze/kernel/of_device.c index 9a0f7632c47c..f6c521898ebf 100644 --- a/arch/microblaze/kernel/of_device.c +++ b/arch/microblaze/kernel/of_device.c | |||
@@ -54,6 +54,7 @@ struct of_device *of_device_alloc(struct device_node *np, | |||
54 | dev->dev.parent = parent; | 54 | dev->dev.parent = parent; |
55 | dev->dev.release = of_release_dev; | 55 | dev->dev.release = of_release_dev; |
56 | dev->dev.archdata.of_node = np; | 56 | dev->dev.archdata.of_node = np; |
57 | dev->dev.of_node = np; | ||
57 | 58 | ||
58 | if (bus_id) | 59 | if (bus_id) |
59 | dev_set_name(&dev->dev, bus_id); | 60 | dev_set_name(&dev->dev, bus_id); |
diff --git a/arch/powerpc/kernel/of_device.c b/arch/powerpc/kernel/of_device.c index a359cb08e900..9577e6f4e3bf 100644 --- a/arch/powerpc/kernel/of_device.c +++ b/arch/powerpc/kernel/of_device.c | |||
@@ -74,6 +74,7 @@ struct of_device *of_device_alloc(struct device_node *np, | |||
74 | dev->dev.parent = parent; | 74 | dev->dev.parent = parent; |
75 | dev->dev.release = of_release_dev; | 75 | dev->dev.release = of_release_dev; |
76 | dev->dev.archdata.of_node = np; | 76 | dev->dev.archdata.of_node = np; |
77 | dev->dev.of_node = np; | ||
77 | 78 | ||
78 | if (bus_id) | 79 | if (bus_id) |
79 | dev_set_name(&dev->dev, "%s", bus_id); | 80 | dev_set_name(&dev->dev, "%s", bus_id); |
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index 0c0567e58409..88da282047c3 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
@@ -1097,8 +1097,9 @@ void __devinit pcibios_setup_bus_devices(struct pci_bus *bus) | |||
1097 | if (dev->is_added) | 1097 | if (dev->is_added) |
1098 | continue; | 1098 | continue; |
1099 | 1099 | ||
1100 | /* Setup OF node pointer in archdata */ | 1100 | /* Setup OF node pointer in the device */ |
1101 | sd->of_node = pci_device_to_OF_node(dev); | 1101 | sd->of_node = pci_device_to_OF_node(dev); |
1102 | dev->dev.of_node = pci_device_to_OF_node(dev); | ||
1102 | 1103 | ||
1103 | /* Fixup NUMA node as it may not be setup yet by the generic | 1104 | /* Fixup NUMA node as it may not be setup yet by the generic |
1104 | * code and is needed by the DMA init | 1105 | * code and is needed by the DMA init |
diff --git a/arch/powerpc/kernel/vio.c b/arch/powerpc/kernel/vio.c index 82237176a2a3..d6708da114ee 100644 --- a/arch/powerpc/kernel/vio.c +++ b/arch/powerpc/kernel/vio.c | |||
@@ -1230,7 +1230,8 @@ struct vio_dev *vio_register_device_node(struct device_node *of_node) | |||
1230 | if (unit_address != NULL) | 1230 | if (unit_address != NULL) |
1231 | viodev->unit_address = *unit_address; | 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 | if (firmware_has_feature(FW_FEATURE_CMO)) | 1236 | if (firmware_has_feature(FW_FEATURE_CMO)) |
1236 | vio_cmo_set_dma_ops(viodev); | 1237 | vio_cmo_set_dma_ops(viodev); |
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c index 6d09f5e3e7e4..e546c86a539b 100644 --- a/arch/powerpc/platforms/ps3/system-bus.c +++ b/arch/powerpc/platforms/ps3/system-bus.c | |||
@@ -766,6 +766,7 @@ int ps3_system_bus_device_register(struct ps3_system_bus_device *dev) | |||
766 | BUG(); | 766 | BUG(); |
767 | }; | 767 | }; |
768 | 768 | ||
769 | dev->core.of_node = NULL; | ||
769 | dev->core.archdata.of_node = NULL; | 770 | dev->core.archdata.of_node = NULL; |
770 | set_dev_node(&dev->core, 0); | 771 | set_dev_node(&dev->core, 0); |
771 | 772 | ||
diff --git a/arch/sparc/kernel/of_device_32.c b/arch/sparc/kernel/of_device_32.c index da527b33ebc7..4926c1babd84 100644 --- a/arch/sparc/kernel/of_device_32.c +++ b/arch/sparc/kernel/of_device_32.c | |||
@@ -348,6 +348,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp, | |||
348 | sd->prom_node = dp; | 348 | sd->prom_node = dp; |
349 | sd->op = op; | 349 | sd->op = op; |
350 | 350 | ||
351 | op->dev.of_node = dp; | ||
351 | op->node = dp; | 352 | op->node = dp; |
352 | 353 | ||
353 | op->clock_freq = of_getintprop_default(dp, "clock-frequency", | 354 | op->clock_freq = of_getintprop_default(dp, "clock-frequency", |
diff --git a/arch/sparc/kernel/of_device_64.c b/arch/sparc/kernel/of_device_64.c index b3d4cb5d21b3..5bc74161667c 100644 --- a/arch/sparc/kernel/of_device_64.c +++ b/arch/sparc/kernel/of_device_64.c | |||
@@ -643,6 +643,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp, | |||
643 | sd->prom_node = dp; | 643 | sd->prom_node = dp; |
644 | sd->op = op; | 644 | sd->op = op; |
645 | 645 | ||
646 | op->dev.of_node = dp; | ||
646 | op->node = dp; | 647 | op->node = dp; |
647 | 648 | ||
648 | op->clock_freq = of_getintprop_default(dp, "clock-frequency", | 649 | op->clock_freq = of_getintprop_default(dp, "clock-frequency", |
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c index 5ac539a5930f..0c920147b4ef 100644 --- a/arch/sparc/kernel/pci.c +++ b/arch/sparc/kernel/pci.c | |||
@@ -262,6 +262,7 @@ static struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm, | |||
262 | sd->stc = &pbm->stc; | 262 | sd->stc = &pbm->stc; |
263 | sd->host_controller = pbm; | 263 | sd->host_controller = pbm; |
264 | sd->prom_node = node; | 264 | sd->prom_node = node; |
265 | dev->dev.of_node = node; | ||
265 | sd->op = op = of_find_device_by_node(node); | 266 | sd->op = op = of_find_device_by_node(node); |
266 | sd->numa_node = pbm->numa_node; | 267 | sd->numa_node = pbm->numa_node; |
267 | 268 | ||
diff --git a/drivers/of/of_mdio.c b/drivers/of/of_mdio.c index 18ecae4a4375..12090f57dc87 100644 --- a/drivers/of/of_mdio.c +++ b/drivers/of/of_mdio.c | |||
@@ -80,6 +80,7 @@ int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) | |||
80 | * can be looked up later */ | 80 | * can be looked up later */ |
81 | of_node_get(child); | 81 | of_node_get(child); |
82 | dev_archdata_set_node(&phy->dev.archdata, child); | 82 | dev_archdata_set_node(&phy->dev.archdata, child); |
83 | phy->dev.of_node = child; | ||
83 | 84 | ||
84 | /* All data is now stored in the phy struct; register it */ | 85 | /* All data is now stored in the phy struct; register it */ |
85 | rc = phy_device_register(phy); | 86 | rc = phy_device_register(phy); |
diff --git a/drivers/of/of_spi.c b/drivers/of/of_spi.c index f65f48b98448..f3119a0836af 100644 --- a/drivers/of/of_spi.c +++ b/drivers/of/of_spi.c | |||
@@ -79,6 +79,7 @@ void of_register_spi_devices(struct spi_master *master, struct device_node *np) | |||
79 | 79 | ||
80 | /* Store a pointer to the node in the device structure */ | 80 | /* Store a pointer to the node in the device structure */ |
81 | of_node_get(nc); | 81 | of_node_get(nc); |
82 | spi->dev.of_node = nc; | ||
82 | spi->dev.archdata.of_node = nc; | 83 | spi->dev.archdata.of_node = nc; |
83 | 84 | ||
84 | /* Register the new device */ | 85 | /* Register the new device */ |
diff --git a/include/linux/device.h b/include/linux/device.h index 182192892d45..7a968bdb02e2 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -34,6 +34,7 @@ struct class; | |||
34 | struct class_private; | 34 | struct class_private; |
35 | struct bus_type; | 35 | struct bus_type; |
36 | struct bus_type_private; | 36 | struct bus_type_private; |
37 | struct device_node; | ||
37 | 38 | ||
38 | struct bus_attribute { | 39 | struct bus_attribute { |
39 | struct attribute attr; | 40 | struct attribute attr; |
@@ -433,6 +434,9 @@ struct device { | |||
433 | override */ | 434 | override */ |
434 | /* arch specific additions */ | 435 | /* arch specific additions */ |
435 | struct dev_archdata archdata; | 436 | struct dev_archdata archdata; |
437 | #ifdef CONFIG_OF | ||
438 | struct device_node *of_node; | ||
439 | #endif | ||
436 | 440 | ||
437 | dev_t devt; /* dev_t, creates the sysfs "dev" */ | 441 | dev_t devt; /* dev_t, creates the sysfs "dev" */ |
438 | 442 | ||