]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] pcmcia: SET_NETDEV for wireless network devices
authorDominik Brodowski <linux@dominikbrodowski.de>
Tue, 11 Jan 2005 11:24:52 +0000 (03:24 -0800)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Tue, 11 Jan 2005 11:24:52 +0000 (03:24 -0800)
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>
drivers/net/wireless/airo.c
drivers/net/wireless/airo_cs.c
drivers/net/wireless/atmel_cs.c
drivers/net/wireless/netwave_cs.c
drivers/net/wireless/orinoco_cs.c
drivers/net/wireless/ray_cs.c
drivers/net/wireless/wavelan_cs.c
drivers/net/wireless/wl3501_cs.c

index aee87bb343842208b4002e8534e45cfaa01ef864..2152403888fcac4a3300c2945817c883413ccae2 100644 (file)
@@ -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;
        }
 
index 48d8ec8ac7cbd409233554cbf4e57ee2ae470fca..cee7eab30b22955095aaf70aa20a5ac9e7f2a359 100644 (file)
@@ -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;
        
        /*
index 4ac430967f45239576bcc051f75721ff7b786e30..5ceec62a57af4d9a80e35560a4dc0a393d842be9 100644 (file)
@@ -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) 
index 0e3d0ebabe8ea002e967c57463b3717bab68024d..d19e7981863d9f364e6d485cff84265e4b734b99 100644 (file)
@@ -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;
index 535ed99676348af2c48792f415959f3ab6ab8ce3..ba2f3b50a65d68944d27e9cd1cc246291c571a53 100644 (file)
@@ -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");
index b3c9d30bc3311a29459f40de62fbeeee3ab1f13c..c7c5c22c7ae2cbb768f084d83a2150ac1bfdc3a0 100644 (file)
@@ -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");
index 17fcd84c1a14a82e389abfa4bc2ef63f10b0b1b9..1509c5dadd500e0f9794a823070f8bdc2199894c 100644 (file)
@@ -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)
        {
index cfb0b18a4c40102f4ef0c78cd9d25d31b1a9ded0..5d4f4c32efb9febcb4e2c367885c2df8fa13b2a5 100644 (file)
@@ -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;