Commit 9c6b3b51 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] ppc64: iSeries vio_dev cleanups

From: Stephen Rothwell <sfr@canb.auug.org.au>

This patch removes the archdata and driver_data members of struct vio_dev
and uses the platform_data and driver_data members of the embedded struct
device instead.  I also declared a couple of routines static.

This is part of a work in progress.
Signed-off-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 4db61881
...@@ -32,7 +32,9 @@ ...@@ -32,7 +32,9 @@
extern struct subsystem devices_subsys; /* needed for vio_find_name() */ extern struct subsystem devices_subsys; /* needed for vio_find_name() */
struct iommu_table *vio_build_iommu_table(struct vio_dev *dev); static struct iommu_table *vio_build_iommu_table(struct vio_dev *);
static const struct vio_device_id *vio_match_device(
const struct vio_device_id *, const struct vio_dev *);
#ifdef CONFIG_PPC_PSERIES #ifdef CONFIG_PPC_PSERIES
static int vio_num_address_cells; static int vio_num_address_cells;
...@@ -136,15 +138,15 @@ EXPORT_SYMBOL(vio_unregister_driver); ...@@ -136,15 +138,15 @@ EXPORT_SYMBOL(vio_unregister_driver);
* system is in its list of supported devices. Returns the matching * system is in its list of supported devices. Returns the matching
* vio_device_id structure or NULL if there is no match. * vio_device_id structure or NULL if there is no match.
*/ */
const struct vio_device_id * vio_match_device(const struct vio_device_id *ids, static const struct vio_device_id * vio_match_device(const struct vio_device_id *ids,
const struct vio_dev *dev) const struct vio_dev *dev)
{ {
DBGENTER(); DBGENTER();
#ifdef CONFIG_PPC_PSERIES #ifdef CONFIG_PPC_PSERIES
while (ids->type) { while (ids->type) {
if ((strncmp(dev->archdata->type, ids->type, strlen(ids->type)) == 0) && if ((strncmp(((struct device_node *)dev->dev.platform_data)->type, ids->type, strlen(ids->type)) == 0) &&
device_is_compatible((struct device_node*)dev->archdata, ids->compat)) device_is_compatible(dev->dev.platform_data, ids->compat))
return ids; return ids;
ids++; ids++;
} }
...@@ -263,14 +265,13 @@ static void __devinit vio_dev_release(struct device *dev) ...@@ -263,14 +265,13 @@ static void __devinit vio_dev_release(struct device *dev)
DBGENTER(); DBGENTER();
/* XXX free TCE table */ /* XXX free TCE table */
of_node_put(viodev->archdata); of_node_put(viodev->dev.platform_data);
kfree(viodev); kfree(viodev);
} }
static ssize_t viodev_show_devspec(struct device *dev, char *buf) static ssize_t viodev_show_devspec(struct device *dev, char *buf)
{ {
struct vio_dev *viodev = to_vio_dev(dev); struct device_node *of_node = dev->platform_data;
struct device_node *of_node = viodev->archdata;
return sprintf(buf, "%s\n", of_node->full_name); return sprintf(buf, "%s\n", of_node->full_name);
} }
...@@ -278,8 +279,7 @@ DEVICE_ATTR(devspec, S_IRUSR | S_IRGRP | S_IROTH, viodev_show_devspec, NULL); ...@@ -278,8 +279,7 @@ DEVICE_ATTR(devspec, S_IRUSR | S_IRGRP | S_IROTH, viodev_show_devspec, NULL);
static ssize_t viodev_show_name(struct device *dev, char *buf) static ssize_t viodev_show_name(struct device *dev, char *buf)
{ {
struct vio_dev *viodev = to_vio_dev(dev); struct device_node *of_node = dev->platform_data;
struct device_node *of_node = viodev->archdata;
return sprintf(buf, "%s\n", of_node->name); return sprintf(buf, "%s\n", of_node->name);
} }
...@@ -290,7 +290,7 @@ DEVICE_ATTR(name, S_IRUSR | S_IRGRP | S_IROTH, viodev_show_name, NULL); ...@@ -290,7 +290,7 @@ DEVICE_ATTR(name, S_IRUSR | S_IRGRP | S_IROTH, viodev_show_name, NULL);
* @of_node: The OF node for this device. * @of_node: The OF node for this device.
* *
* Creates and initializes a vio_dev structure from the data in * Creates and initializes a vio_dev structure from the data in
* of_node (archdata) and adds it to the list of virtual devices. * of_node (dev.platform_data) and adds it to the list of virtual devices.
* Returns a pointer to the created vio_dev or NULL if node has * Returns a pointer to the created vio_dev or NULL if node has
* NULL device_type or compatible fields. * NULL device_type or compatible fields.
*/ */
...@@ -324,7 +324,7 @@ struct vio_dev * __devinit vio_register_device(struct device_node *of_node) ...@@ -324,7 +324,7 @@ struct vio_dev * __devinit vio_register_device(struct device_node *of_node)
} }
memset(viodev, 0, sizeof(struct vio_dev)); memset(viodev, 0, sizeof(struct vio_dev));
viodev->archdata = (void *)of_node_get(of_node); viodev->dev.platform_data = of_node_get(of_node);
viodev->unit_address = *unit_address; viodev->unit_address = *unit_address;
viodev->iommu_table = vio_build_iommu_table(viodev); viodev->iommu_table = vio_build_iommu_table(viodev);
...@@ -380,7 +380,7 @@ EXPORT_SYMBOL(vio_unregister_device); ...@@ -380,7 +380,7 @@ EXPORT_SYMBOL(vio_unregister_device);
*/ */
const void * vio_get_attribute(struct vio_dev *vdev, void* which, int* length) const void * vio_get_attribute(struct vio_dev *vdev, void* which, int* length)
{ {
return get_property((struct device_node *)vdev->archdata, (char*)which, length); return get_property(vdev->dev.platform_data, (char*)which, length);
} }
EXPORT_SYMBOL(vio_get_attribute); EXPORT_SYMBOL(vio_get_attribute);
...@@ -427,7 +427,7 @@ EXPORT_SYMBOL(vio_find_node); ...@@ -427,7 +427,7 @@ EXPORT_SYMBOL(vio_find_node);
* Returns a pointer to the built tce tree, or NULL if it can't * Returns a pointer to the built tce tree, or NULL if it can't
* find property. * find property.
*/ */
struct iommu_table * vio_build_iommu_table(struct vio_dev *dev) static struct iommu_table * vio_build_iommu_table(struct vio_dev *dev)
{ {
unsigned int *dma_window; unsigned int *dma_window;
struct iommu_table *newTceTable; struct iommu_table *newTceTable;
...@@ -435,7 +435,7 @@ struct iommu_table * vio_build_iommu_table(struct vio_dev *dev) ...@@ -435,7 +435,7 @@ struct iommu_table * vio_build_iommu_table(struct vio_dev *dev)
unsigned long size; unsigned long size;
int dma_window_property_size; int dma_window_property_size;
dma_window = (unsigned int *) get_property((struct device_node *)dev->archdata, "ibm,my-dma-window", &dma_window_property_size); dma_window = (unsigned int *) get_property(dev->dev.platform_data, "ibm,my-dma-window", &dma_window_property_size);
if(!dma_window) { if(!dma_window) {
return NULL; return NULL;
} }
......
...@@ -901,7 +901,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_ ...@@ -901,7 +901,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
adapter = netdev->priv; adapter = netdev->priv;
memset(adapter, 0, sizeof(adapter)); memset(adapter, 0, sizeof(adapter));
dev->driver_data = netdev; dev->dev.driver_data = netdev;
adapter->vdev = dev; adapter->vdev = dev;
adapter->netdev = netdev; adapter->netdev = netdev;
...@@ -971,7 +971,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_ ...@@ -971,7 +971,7 @@ static int __devinit ibmveth_probe(struct vio_dev *dev, const struct vio_device_
static int __devexit ibmveth_remove(struct vio_dev *dev) static int __devexit ibmveth_remove(struct vio_dev *dev)
{ {
struct net_device *netdev = dev->driver_data; struct net_device *netdev = dev->dev.driver_data;
struct ibmveth_adapter *adapter = netdev->priv; struct ibmveth_adapter *adapter = netdev->priv;
unregister_netdev(netdev); unregister_netdev(netdev);
......
...@@ -43,8 +43,6 @@ struct iommu_table; ...@@ -43,8 +43,6 @@ struct iommu_table;
int vio_register_driver(struct vio_driver *drv); int vio_register_driver(struct vio_driver *drv);
void vio_unregister_driver(struct vio_driver *drv); void vio_unregister_driver(struct vio_driver *drv);
const struct vio_device_id * vio_match_device(const struct vio_device_id *ids,
const struct vio_dev *dev);
struct vio_dev * __devinit vio_register_device(struct device_node *node_vdev); struct vio_dev * __devinit vio_register_device(struct device_node *node_vdev);
void __devinit vio_unregister_device(struct vio_dev *dev); void __devinit vio_unregister_device(struct vio_dev *dev);
...@@ -52,7 +50,6 @@ struct vio_dev *vio_find_node(struct device_node *vnode); ...@@ -52,7 +50,6 @@ struct vio_dev *vio_find_node(struct device_node *vnode);
const void * vio_get_attribute(struct vio_dev *vdev, void* which, int* length); const void * vio_get_attribute(struct vio_dev *vdev, void* which, int* length);
int vio_get_irq(struct vio_dev *dev); int vio_get_irq(struct vio_dev *dev);
struct iommu_table * vio_build_iommu_table(struct vio_dev *dev);
int vio_enable_interrupts(struct vio_dev *dev); int vio_enable_interrupts(struct vio_dev *dev);
int vio_disable_interrupts(struct vio_dev *dev); int vio_disable_interrupts(struct vio_dev *dev);
...@@ -110,8 +107,6 @@ static inline struct vio_driver *to_vio_driver(struct device_driver *drv) ...@@ -110,8 +107,6 @@ static inline struct vio_driver *to_vio_driver(struct device_driver *drv)
* The vio_dev structure is used to describe virtual I/O devices. * The vio_dev structure is used to describe virtual I/O devices.
*/ */
struct vio_dev { struct vio_dev {
struct device_node *archdata; /* Open Firmware node */
void *driver_data; /* data private to the driver */
struct iommu_table *iommu_table; /* vio_map_* uses this */ struct iommu_table *iommu_table; /* vio_map_* uses this */
uint32_t unit_address; uint32_t unit_address;
unsigned int irq; unsigned int irq;
......
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