aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDominik Brodowski <linux@dominikbrodowski.de>2005-01-11 03:24:52 -0800
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-01-11 03:24:52 -0800
commit9eb9ea0ee2e4ae0e9765652d49c9adca9e110f16 (patch)
tree4f5e0a42642d20047b1c9d27f8dc06bb1063a451 /drivers
parent301d0dc6bc4b1d148f23da8ac006247a6f7bb719 (diff)
downloadhistory-9eb9ea0ee2e4ae0e9765652d49c9adca9e110f16.tar.gz
[PATCH] pcmcia: SET_NETDEV for wireless network devices
This patch updates pcmcia wireless drivers so that their class devices are linked to the correct physical device. Based on an patch by Adam Belay, but adapted to a different pcmcia driver model implementation. Signed-off-by: Dominik Brodowski <linux@brodo.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/airo.c20
-rw-r--r--drivers/net/wireless/airo_cs.c4
-rw-r--r--drivers/net/wireless/atmel_cs.c14
-rw-r--r--drivers/net/wireless/netwave_cs.c2
-rw-r--r--drivers/net/wireless/orinoco_cs.c1
-rw-r--r--drivers/net/wireless/ray_cs.c1
-rw-r--r--drivers/net/wireless/wavelan_cs.c1
-rw-r--r--drivers/net/wireless/wl3501_cs.c1
8 files changed, 19 insertions, 25 deletions
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
index aee87bb3438422..2152403888fcac 100644
--- a/drivers/net/wireless/airo.c
+++ b/drivers/net/wireless/airo.c
@@ -2697,7 +2697,8 @@ int reset_card( struct net_device *dev , int lock) {
}
struct net_device *_init_airo_card( unsigned short irq, int port,
- int is_pcmcia, struct pci_dev *pci )
+ int is_pcmcia, struct pci_dev *pci,
+ struct device *dmdev )
{
struct net_device *dev;
struct airo_info *ai;
@@ -2759,10 +2760,8 @@ struct net_device *_init_airo_card( unsigned short irq, int port,
dev->irq = irq;
dev->base_addr = port;
- /* what is with PCMCIA ??? */
- if (pci) {
- SET_NETDEV_DEV(dev, &pci->dev);
- }
+ SET_NETDEV_DEV(dev, dmdev);
+
if (test_bit(FLAG_MPI,&ai->flags))
reset_card (dev, 1);
@@ -2844,9 +2843,10 @@ err_out_free:
return NULL;
}
-struct net_device *init_airo_card( unsigned short irq, int port, int is_pcmcia )
+struct net_device *init_airo_card( unsigned short irq, int port, int is_pcmcia,
+ struct device *dmdev)
{
- return _init_airo_card ( irq, port, is_pcmcia, NULL);
+ return _init_airo_card ( irq, port, is_pcmcia, NULL, dmdev);
}
EXPORT_SYMBOL(init_airo_card);
@@ -5455,9 +5455,9 @@ static int __devinit airo_pci_probe(struct pci_dev *pdev,
pci_set_master(pdev);
if (pdev->device == 0x5000 || pdev->device == 0xa504)
- dev = _init_airo_card(pdev->irq, pdev->resource[0].start, 0, pdev);
+ dev = _init_airo_card(pdev->irq, pdev->resource[0].start, 0, pdev, &pdev->dev);
else
- dev = _init_airo_card(pdev->irq, pdev->resource[2].start, 0, pdev);
+ dev = _init_airo_card(pdev->irq, pdev->resource[2].start, 0, pdev, &pdev->dev);
if (!dev)
return -ENODEV;
@@ -5559,7 +5559,7 @@ static int __init airo_init_module( void )
printk( KERN_INFO
"airo: Trying to configure ISA adapter at irq=%d io=0x%x\n",
irq[i], io[i] );
- if (init_airo_card( irq[i], io[i], 0 ))
+ if (init_airo_card( irq[i], io[i], 0, NULL ))
have_isa_dev = 1;
}
diff --git a/drivers/net/wireless/airo_cs.c b/drivers/net/wireless/airo_cs.c
index 48d8ec8ac7cbd4..cee7eab30b2295 100644
--- a/drivers/net/wireless/airo_cs.c
+++ b/drivers/net/wireless/airo_cs.c
@@ -89,7 +89,7 @@ module_param_array(irq_list, int, NULL, 0);
event handler.
*/
-struct net_device *init_airo_card( int, int, int );
+struct net_device *init_airo_card( int, int, int, struct device * );
void stop_airo_card( struct net_device *, int );
int reset_airo_card( struct net_device * );
@@ -450,7 +450,7 @@ static void airo_config(dev_link_t *link)
CS_CHECK(RequestConfiguration, pcmcia_request_configuration(link->handle, &link->conf));
((local_info_t*)link->priv)->eth_dev =
init_airo_card( link->irq.AssignedIRQ,
- link->io.BasePort1, 1 );
+ link->io.BasePort1, 1, &handle_to_dev(handle) );
if (!((local_info_t*)link->priv)->eth_dev) goto cs_failed;
/*
diff --git a/drivers/net/wireless/atmel_cs.c b/drivers/net/wireless/atmel_cs.c
index 4ac430967f4523..5ceec62a57af4d 100644
--- a/drivers/net/wireless/atmel_cs.c
+++ b/drivers/net/wireless/atmel_cs.c
@@ -347,18 +347,6 @@ static struct {
{ 0, 0, "11WAVE/11WP611AL-E", "atmel_at76c502e%s.bin", "11WAVE WaveBuddy" }
};
-/* This is strictly temporary, until PCMCIA devices get integrated into the device model. */
-static struct device *atmel_device(void)
-{
- static struct device dev = {
- .bus_id = "pcmcia",
- };
- kobject_set_name(&dev.kobj, "atmel_cs");
- kobject_init(&dev.kobj);
-
- return &dev;
-}
-
static void atmel_config(dev_link_t *link)
{
client_handle_t handle;
@@ -549,7 +537,7 @@ static void atmel_config(dev_link_t *link)
init_atmel_card(link->irq.AssignedIRQ,
link->io.BasePort1,
card_index == -1 ? NULL : card_table[card_index].firmware,
- atmel_device(),
+ &handle_to_dev(handle),
card_present,
link);
if (!((local_info_t*)link->priv)->eth_dev)
diff --git a/drivers/net/wireless/netwave_cs.c b/drivers/net/wireless/netwave_cs.c
index 0e3d0ebabe8ea0..d19e7981863d9f 100644
--- a/drivers/net/wireless/netwave_cs.c
+++ b/drivers/net/wireless/netwave_cs.c
@@ -1073,6 +1073,8 @@ static void netwave_pcmcia_config(dev_link_t *link) {
dev->irq = link->irq.AssignedIRQ;
dev->base_addr = link->io.BasePort1;
+ SET_NETDEV_DEV(dev, &handle_to_dev(handle));
+
if (register_netdev(dev) != 0) {
printk(KERN_DEBUG "netwave_cs: register_netdev() failed\n");
goto failed;
diff --git a/drivers/net/wireless/orinoco_cs.c b/drivers/net/wireless/orinoco_cs.c
index 535ed99676348a..ba2f3b50a65d68 100644
--- a/drivers/net/wireless/orinoco_cs.c
+++ b/drivers/net/wireless/orinoco_cs.c
@@ -454,6 +454,7 @@ orinoco_cs_config(dev_link_t *link)
/* register_netdev will give us an ethX name */
dev->name[0] = '\0';
+ SET_NETDEV_DEV(dev, &handle_to_dev(handle));
/* Tell the stack we exist */
if (register_netdev(dev) != 0) {
printk(KERN_ERR PFX "register_netdev() failed\n");
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c
index b3c9d30bc3311a..c7c5c22c7ae2cb 100644
--- a/drivers/net/wireless/ray_cs.c
+++ b/drivers/net/wireless/ray_cs.c
@@ -564,6 +564,7 @@ static void ray_config(dev_link_t *link)
return;
}
+ SET_NETDEV_DEV(dev, &handle_to_dev(handle));
i = register_netdev(dev);
if (i != 0) {
printk("ray_config register_netdev() failed\n");
diff --git a/drivers/net/wireless/wavelan_cs.c b/drivers/net/wireless/wavelan_cs.c
index 17fcd84c1a14a8..1509c5dadd500e 100644
--- a/drivers/net/wireless/wavelan_cs.c
+++ b/drivers/net/wireless/wavelan_cs.c
@@ -4068,6 +4068,7 @@ wv_pcmcia_config(dev_link_t * link)
lp->mem, dev->irq, (u_int) dev->base_addr);
#endif
+ SET_NETDEV_DEV(dev, &handle_to_dev(handle));
i = register_netdev(dev);
if(i != 0)
{
diff --git a/drivers/net/wireless/wl3501_cs.c b/drivers/net/wireless/wl3501_cs.c
index cfb0b18a4c4010..5d4f4c32efb9fe 100644
--- a/drivers/net/wireless/wl3501_cs.c
+++ b/drivers/net/wireless/wl3501_cs.c
@@ -2105,6 +2105,7 @@ static void wl3501_config(dev_link_t *link)
dev->irq = link->irq.AssignedIRQ;
dev->base_addr = link->io.BasePort1;
+ SET_NETDEV_DEV(dev, &handle_to_dev(handle));
if (register_netdev(dev)) {
printk(KERN_NOTICE "wl3501_cs: register_netdev() failed\n");
goto failed;