PnP Changes for 2.5.66

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 07:10:07



diff -Nru a/drivers/pnp/card.c b/drivers/pnp/card.c
--- a/drivers/pnp/card.c        Thu Apr  3 23:41:22 2003

 #include "base.h"

 LIST_HEAD(pnp_cards);
+LIST_HEAD(pnp_card_drivers);


        return NULL;
 }

-static void generic_card_remove(struct pnp_dev * dev)
+static void card_remove(struct pnp_dev * dev)
 {
        dev->card_link = NULL;
 }
-
-static void generic_card_remove_first(struct pnp_dev * dev)
+
+static void card_remove_first(struct pnp_dev * dev)
 {
        struct pnp_card_driver * drv = to_pnp_card_driver(dev->driver);
        if (!dev->card || !drv)
                return;
        if (drv->remove)
                drv->remove(dev->card_link);
-       drv->link.remove = &generic_card_remove;
+       drv->link.remove = &card_remove;
        kfree(dev->card_link);
-       generic_card_remove(dev);
+       card_remove(dev);
+}
+
+static int card_probe(struct pnp_card * card, struct pnp_card_driver * drv)
+{
+       const struct pnp_card_id *id = match_card(drv,card);
+       if (id) {
+               struct pnp_card_link * clink = pnp_alloc(sizeof(struct pnp_card_link));
+               if (!clink)
+                       return 0;
+               clink->card = card;
+               clink->driver = drv;
+               if (drv->probe) {
+                       if (drv->probe(clink, id)>=0)
+                               return 1;
+                       else
+                               kfree(clink);
+               } else
+                       return 1;
+       }
+       return 0;
 }


 int pnp_add_card(struct pnp_card * card)
 {
        int error;
-       struct list_head * pos;
+       struct list_head * pos, * temp;
        if (!card || !card->protocol)
                return -EINVAL;

        card->dev.bus = NULL;
        card->dev.release = &pnp_release_card;
        error = device_register(&card->dev);
+
        if (error == 0) {
                spin_lock(&pnp_lock);

                        struct pnp_dev *dev = card_to_pnp_dev(pos);
                        __pnp_add_device(dev);
                }
+
+               /* match with card drivers */
+               list_for_each_safe(pos,temp,&pnp_card_drivers){
+                       struct pnp_card_driver * drv = list_entry(pos, struct pnp_card_driver, global_list);
+                       card_probe(card,drv);
+               }
        } else
                pnp_err("sysfs failure, card '%s' will be unavailable", card->dev.bus_id);

        if (!drv)
                return;
        down_write(&dev->dev.bus->subsys.rwsem);
-       drv->link.remove = &generic_card_remove;
+       drv->link.remove = &card_remove;
        device_release_driver(&dev->dev);
-       drv->link.remove = &generic_card_remove_first;
+       drv->link.remove = &card_remove_first;
        up_write(&dev->dev.bus->subsys.rwsem);
 }

        drv->link.id_table = NULL;   /* this will disable auto matching */
        drv->link.flags = drv->flags;
        drv->link.probe = NULL;
-       drv->link.remove = &generic_card_remove_first;
+       drv->link.remove = &card_remove_first;

+       spin_lock(&pnp_lock);
+       list_add_tail(&drv->global_list, &pnp_card_drivers);
+       spin_unlock(&pnp_lock);
        pnp_register_driver(&drv->link);

        list_for_each_safe(pos,temp,&pnp_cards){
                struct pnp_card *card = list_entry(pos, struct pnp_card, global_list);
-               const struct pnp_card_id *id = match_card(drv,card);
-               if (id) {
-                       struct pnp_card_link * clink = pnp_alloc(sizeof(struct pnp_card_link));
-                       if (!clink)
-                               continue;
-                       clink->card = card;
-                       clink->driver = drv;
-                       if (drv->probe) {
-                               if (drv->probe(clink, id)>=0)
-                                       count++;
-                       } else
-                               count++;
-               }
+               count += card_probe(card,drv);
        }
        return count;

 void pnp_unregister_card_driver(struct pnp_card_driver * drv)
 {
+       spin_lock(&pnp_lock);
+       list_del(&drv->global_list);
+       spin_unlock(&pnp_lock);
        pnp_unregister_driver(&drv->link);
-
-       pnp_dbg("the card driver '%s' has been unregistered", drv->name);
 }

 EXPORT_SYMBOL(pnp_add_card);
diff -Nru a/include/linux/pnp.h b/include/linux/pnp.h
--- a/include/linux/pnp.h       Thu Apr  3 23:41:22 2003

 #define        to_pnp_driver(drv) container_of(drv, struct pnp_driver, driver)

 struct pnp_card_driver {
+       struct list_head global_list;
        char * name;
        const struct pnp_card_id *id_table;
        unsigned int flags;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 07:20:09


diff -Nru a/drivers/pnp/manager.c b/drivers/pnp/manager.c
--- a/drivers/pnp/manager.c     Thu Apr  3 23:40:57 2003

        if (!dev)
                return -EINVAL;
        if (dev->active) {
-               pnp_info("res: The PnP device '%s' is already active.", dev->dev.bus_id);
-               return -EBUSY;
+               return 0; /* the device is already active */
        }
        /* If this condition is true, advanced configuration failed, we need to get this device up and running

         if (!dev)
                 return -EINVAL;
        if (!dev->active) {
-               pnp_info("res: The PnP device '%s' is already disabled.", dev->dev.bus_id);
-               return -EINVAL;
+               return 0; /* the device is already disabled */
        }
        if (dev->status != PNP_READY){
                pnp_info("res: Disable failed becuase the PnP device '%s' is busy.", dev->dev.bus_id);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 07:20:11


diff -Nru a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c
--- a/drivers/pnp/pnpbios/core.c        Thu Apr  3 23:41:16 2003
+++ b/drivers/pnp/pnpbios/core.c        Thu Apr  3 23:41:16 2003
@@ -32,6 +32,18 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+
+/* Change Log
+ *
+ * Adam Belay - <am...@neo.rr.com> - March 16, 2003
+ * rev 1.01    Only call pnp_bios_dev_node_info once
+ *             Added pnpbios_print_status
+ *             Added several new error messages and info messages
+ *             Added pnpbios_interface_attach_device
+ *             integrated core and proc init system
+ *             Introduced PNPMODE flags
+ *             Removed some useless includes
+ */

 #include <linux/types.h>
 #include <linux/module.h>
@@ -46,9 +58,7 @@
 #include <linux/mm.h>
 #include <linux/smp.h>
 #include <asm/desc.h>
-#include <linux/ioport.h>
 #include <linux/slab.h>
-#include <linux/pci.h>
 #include <linux/kmod.h>
 #include <linux/completion.h>
 #include <linux/spinlock.h>
@@ -93,6 +103,7 @@
 } pnp_bios_callpoint;

 static union pnp_bios_expansion_header * pnp_bios_hdr = NULL;
+struct pnp_dev_node_info node_info;

 /* The PnP BIOS entries in the GDT */
 #define PNP_GDT    (GDT_ENTRY_PNPBIOS_BASE * 8)
@@ -237,9 +248,46 @@
  *
  */

-static void pnpbios_warn_unexpected_status(const char * module, u16 status)
+static void pnpbios_print_status(const char * module, u16 status)
 {
-       printk(KERN_ERR "PnPBIOS: %s: Unexpected status 0x%x\n", module, status);
+       switch(status) {
+       case PNP_SUCCESS:
+       printk(KERN_ERR "PnPBIOS: %s: function successful\n", module);
+       case PNP_NOT_SET_STATICALLY:
+       printk(KERN_ERR "PnPBIOS: %s: unable to set static resources\n", module);
+       case PNP_UNKNOWN_FUNCTION:
+       printk(KERN_ERR "PnPBIOS: %s: invalid function number passed\n", module);
+       case PNP_FUNCTION_NOT_SUPPORTED:
+       printk(KERN_ERR "PnPBIOS: %s: function not supported on this system\n", module);
+       case PNP_INVALID_HANDLE:
+       printk(KERN_ERR "PnPBIOS: %s: invalid handle\n", module);
+       case PNP_BAD_PARAMETER:
+       printk(KERN_ERR "PnPBIOS: %s: invalid parameters were passed\n", module);
+       case PNP_SET_FAILED:
+       printk(KERN_ERR "PnPBIOS: %s: unable to set resources\n", module);
+       case PNP_EVENTS_NOT_PENDING:
+       printk(KERN_ERR "PnPBIOS: %s: no events are pending\n", module);
+       case PNP_SYSTEM_NOT_DOCKED:
+       printk(KERN_ERR "PnPBIOS: %s: the system is not docked\n", module);
+       case PNP_NO_ISA_PNP_CARDS:
+       printk(KERN_ERR "PnPBIOS: %s: no isapnp cards are installed on this system\n", module);
+       case PNP_UNABLE_TO_DETERMINE_DOCK_CAPABILITIES:
+       printk(KERN_ERR "PnPBIOS: %s: cannot determine the capabilities of the docking station\n", module);
+       case PNP_CONFIG_CHANGE_FAILED_NO_BATTERY:
+       printk(KERN_ERR "PnPBIOS: %s: unable to undock, the system does not have a battery\n", module);
+       case PNP_CONFIG_CHANGE_FAILED_RESOURCE_CONFLICT:
+       printk(KERN_ERR "PnPBIOS: %s: could not dock due to resource conflicts\n", module);
+       case PNP_BUFFER_TOO_SMALL:
+       printk(KERN_ERR "PnPBIOS: %s: the buffer passed is too small\n", module);
+       case PNP_USE_ESCD_SUPPORT:
+       printk(KERN_ERR "PnPBIOS: %s: use ESCD instead\n", module);
+       case PNP_MESSAGE_NOT_SUPPORTED:
+       printk(KERN_ERR "PnPBIOS: %s: the message is unsupported\n", module);
+       case PNP_HARDWARE_ERROR:
+       printk(KERN_ERR "PnPBIOS: %s: a hardware failure has occured\n", module);
+       default:
+       printk(KERN_ERR "PnPBIOS: %s: unexpected status 0x%x\n", module, status);
+       }
 }

 void *pnpbios_kmalloc(size_t size, int f)
@@ -299,7 +347,7 @@
 {
        int status = __pnp_bios_dev_node_info( data );
        if ( status )
-               pnpbios_warn_unexpected_status( "dev_node_info", status );
+               pnpbios_print_status( "dev_node_info", status );
        return status;
 }

@@ -334,7 +382,7 @@
        int status;
        status =  __pnp_bios_get_dev_node( nodenum, boot, data );
        if ( status )
-               pnpbios_warn_unexpected_status( "get_dev_node", status );
+               pnpbios_print_status( "get_dev_node", status );
        return status;
 }

@@ -362,7 +410,7 @@
        int status;
        status =  __pnp_bios_set_dev_node( nodenum, boot, data );
        if ( status ) {
-               pnpbios_warn_unexpected_status( "set_dev_node", status );
+               pnpbios_print_status( "set_dev_node", status );
                return status;
        }
        if ( !boot ) { /* Update devlist */
@@ -452,7 +500,7 @@
        int status;
        status = __pnp_bios_get_stat_res( info );
        if ( status )
-               pnpbios_warn_unexpected_status( "get_stat_res", status );
+               pnpbios_print_status( "get_stat_res", status );
        return status;
 }

@@ -489,7 +537,7 @@
        int status;
        status = __pnp_bios_isapnp_config( data );
        if ( status )
-               pnpbios_warn_unexpected_status( "isapnp_config", status );
+               pnpbios_print_status( "isapnp_config", status );
        return status;
 }

@@ -511,7 +559,7 @@
        int status;
        status = __pnp_bios_escd_info( data );
        if ( status )
-               pnpbios_warn_unexpected_status( "escd_info", status );
+               pnpbios_print_status( "escd_info", status );
        return status;
 }

@@ -534,7 +582,7 @@
        int status;
        status = __pnp_bios_read_escd( data, nvram_base );
        if ( status )
-               pnpbios_warn_unexpected_status( "read_escd", status );
+               pnpbios_print_status( "read_escd", status );
        return status;
 }

@@ -658,7 +706,7 @@
                                d = 1;
                                break;
                        default:
-                               pnpbios_warn_unexpected_status( "pnp_dock_thread", status );
+                               pnpbios_print_status( "pnp_dock_thread", status );
                                continue;
                }
                if(d != docked)
@@ -753,19 +801,17 @@

 static int pnpbios_get_resources(struct pnp_dev * dev, struct pnp_resource_table * res)
 {
-       struct pnp_dev_node_info node_info;
        u8 nodenum = dev->number;
        struct pnp_bios_node * node;

        /* just in case */
        if(!pnpbios_is_dynamic(dev))
                return -EPERM;
-       if (pnp_bios_dev_node_info(&node_info) != 0)
-               return -ENODEV;
+
        node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);
        if (!node)
                return -1;
-       if (pnp_bios_get_dev_node(&nodenum, (char )0, node)) {
+       if (pnp_bios_get_dev_node(&nodenum, (char )PNPMODE_DYNAMIC, node)) {
                kfree(node);
                return -ENODEV;
        }
@@ -777,7 +823,6 @@

 static int pnpbios_set_resources(struct pnp_dev * dev, struct pnp_resource_table * res)
 {
-       struct pnp_dev_node_info node_info;
        u8 nodenum = dev->number;
        struct pnp_bios_node * node;
        int ret;
@@ -785,18 +830,17 @@
        /* just in case */
        if (!pnpbios_is_dynamic(dev))
                return -EPERM;
-       if (pnp_bios_dev_node_info(&node_info) != 0)
-               return -ENODEV;
+
        node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);
        if (!node)
                return -1;
-       if (pnp_bios_get_dev_node(&nodenum, (char )1, node))
+       if (pnp_bios_get_dev_node(&nodenum, (char )PNPMODE_STATIC, node))
                return -ENODEV;
        if(!pnp_write_resources((char *)node->data,(char *)node->data + node->size,res)){
                kfree(node);
                return -1;
        }
-       ret = pnp_bios_set_dev_node(node->handle, (char)0, node);
+       ret = pnp_bios_set_dev_node(node->handle, (char)PNPMODE_DYNAMIC, node);
        kfree(node);
        if (ret > 0)
                ret = -1;
@@ -805,23 +849,18 @@

 static int pnpbios_disable_resources(struct pnp_dev *dev)
 {
-       struct pnp_dev_node_info node_info;
        struct pnp_bios_node * node;
        int ret;

        /* just in case */
        if(dev->flags & PNPBIOS_NO_DISABLE || !pnpbios_is_dynamic(dev))
                return -EPERM;
-       if (!dev || !dev->active)
-               return -EINVAL;
-       if (pnp_bios_dev_node_info(&node_info) != 0)
-               return -ENODEV;
+
        /* the value of this will be zero */
        node = pnpbios_kmalloc(node_info.max_node_size, GFP_KERNEL);
        if (!node)
                return -ENOMEM;
-       ret = pnp_bios_set_dev_node(dev->number, (char)0, node);
-       dev->active = 0;
+       ret = pnp_bios_set_dev_node(dev->number, (char)PNPMODE_DYNAMIC, node);
        kfree(node);
        if (ret > 0)
                ret = -1;
@@ -879,6 +918,8 @@
        dev->protocol = &pnpbios_protocol;

        pnp_add_device(dev);
+       pnpbios_interface_attach_device(node);
+
        return 0;
 }

@@ -903,8 +944,16 @@

        for(nodenum=0; nodenum<0xff; ) {
                u8 thisnodenum = nodenum;
-               if (pnp_bios_get_dev_node(&nodenum, (char )0, node))
-                       break;
+               /* eventually we will want to use PNPMODE_STATIC here but for now
+                * dynamic will help us catch buggy bioses to add to the blacklist.
+                */
+               if (!pnpbios_dont_use_current_config) {
+                       if (pnp_bios_get_dev_node(&nodenum, (char )PNPMODE_DYNAMIC, node))
+                               break;
+               } else {
+                       if (pnp_bios_get_dev_node(&nodenum, (char )PNPMODE_STATIC, node))
+                               break;
+               }
                nodes_got++;
                dev =  pnpbios_kmalloc(sizeof (struct pnp_dev), GFP_KERNEL);
                if (!dev)
@@ -972,7 +1021,8 @@
        if(pnpbios_disabled || (dmi_broken & BROKEN_PNP_BIOS)) {
                printk(KERN_INFO "PnPBIOS: Disabled\n");
                return -ENODEV;
-       }
+       } else
+               printk(KERN_INFO "PnPBIOS: Scanning system for PnP BIOS support...\n");

        /*
         * Search the defined area (0xf0000-0xffff0) for a valid PnP BIOS
@@ -1016,17 +1066,34 @@
                }
                break;
        }
-       if (!pnp_bios_present())
+       if (!pnp_bios_present()) {
+               printk(KERN_INFO "PnPBIOS: A PnP BIOS was not detected.\n");
                return -ENODEV;
+       }
+
+       /*
+        * we found a pnpbios, now let's load the rest of the driver
+        */
+
+       /* read the node info */
+       if (pnp_bios_dev_node_info(&node_info)) {
+               printk(KERN_ERR "PnPBIOS: Unable to get node info.  Aborting.\n");
+               return -EIO;
+       }
+
+       /* register with the pnp layer */
        pnp_register_protocol(&pnpbios_protocol);
-       build_devlist();
-       /*if ( ! dont_reserve_resources )*/
-               /*reserve_resources();*/
+
 #ifdef CONFIG_PROC_FS
+       /* start the proc interface */
        r = pnpbios_proc_init();
        if (r)
                return r;
 #endif
+
+       /* scan for pnpbios devices */
+       build_devlist();
+
        return 0;
 }

diff -Nru a/drivers/pnp/pnpbios/proc.c b/drivers/pnp/pnpbios/proc.c
--- a/drivers/pnp/pnpbios/proc.c        Thu Apr  3 23:41:16 2003
+++ b/drivers/pnp/pnpbios/proc.c        Thu Apr  3 23:41:16 2003
@@ -31,7 +31,6 @@

 static struct proc_dir_entry *proc_pnp = NULL;
 static struct proc_dir_entry *proc_pnp_boot = NULL;
-static struct pnp_dev_node_info node_info;

 static int proc_read_pnpconfig(char *buf, char **start, off_t pos,
                                int count, int *eof, void *data)
@@ -136,7 +135,7 @@
                /* 26 =
...

read more »

 
 
 

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 07:30:07


diff -Nru a/sound/isa/dt019x.c b/sound/isa/dt019x.c
--- a/sound/isa/dt019x.c        Thu Apr  3 23:40:39 2003
+++ b/sound/isa/dt019x.c        Thu Apr  3 23:40:39 2003
@@ -25,11 +25,7 @@
 #include <linux/init.h>
 #include <linux/sched.h>
 #include <linux/wait.h>
-#ifndef LINUX_ISAPNP_H
-#include <linux/isapnp.h>
-#define isapnp_card pci_bus
-#define isapnp_dev pci_dev
-#endif
+#include <linux/pnp.h>
 #include <sound/core.h>
 #define SNDRV_GET_ID
 #include <sound/initval.h>
@@ -87,159 +83,124 @@
 MODULE_PARM_SYNTAX(dma8, SNDRV_DMA8_DESC);

 struct snd_card_dt019x {
-#ifdef __ISAPNP__
-       struct isapnp_dev *dev;
-       struct isapnp_dev *devmpu;
-       struct isapnp_dev *devopl;
-#endif /* __ISAPNP__ */
+       struct pnp_dev *dev;
+       struct pnp_dev *devmpu;
+       struct pnp_dev *devopl;
 };

-static snd_card_t *snd_dt019x_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-#ifdef __ISAPNP__
-static struct isapnp_card *snd_dt019x_isapnp_cards[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
-static const struct isapnp_card_id *snd_dt019x_isapnp_id[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
-
-static struct isapnp_card_id snd_dt019x_pnpids[] __devinitdata = {
+static struct pnp_card_device_id snd_dt019x_pnpids[] __devinitdata = {
        /* DT197A30 */
-       {
-               ISAPNP_CARD_ID('R','W','B',0x1688),
-               .devs = { ISAPNP_DEVICE_ID('@','@','@',0x0001),
-                       ISAPNP_DEVICE_ID('@','X','@',0x0001),
-                       ISAPNP_DEVICE_ID('@','H','@',0x0001) }
-       },
+       { .id = "RWB1688", .devs = { { "@@@0001" }, { "@X@0001" }, { "@H@0001" }, } },
        /* DT0196 / ALS-007 */
-       {
-               ISAPNP_CARD_ID('A','L','S',0x0007),
-               .devs = { ISAPNP_DEVICE_ID('@','@','@',0x0001),
-                       ISAPNP_DEVICE_ID('@','X','@',0x0001),
-                       ISAPNP_DEVICE_ID('@','H','@',0x0001) }
-       },
-       { ISAPNP_CARD_END, }
+       { .id = "ALS0007", .devs = { { "@@@0001" }, { "@X@0001" }, { "@H@0001" }, } },
+       { .id = "",  }
 };

-ISAPNP_CARD_TABLE(snd_dt019x_pnpids);
+MODULE_DEVICE_TABLE(pnp_card, snd_dt019x_pnpids);

-#endif /* __ISAPNP__ */

 #define DRIVER_NAME    "snd-card-dt019x"

-#ifdef __ISAPNP__
-static int __init snd_card_dt019x_isapnp(int dev, struct snd_card_dt019x *acard)
+static int __init snd_card_dt019x_isapnp(int dev, struct snd_card_dt019x *acard,
+                                                          struct pnp_card_link *card,
+                                                          const struct pnp_card_device_id *pid)
 {
-       const struct isapnp_card_id *id = snd_dt019x_isapnp_id[dev];
-       struct isapnp_card *card = snd_dt019x_isapnp_cards[dev];
-       struct isapnp_dev *pdev;
-
-       acard->dev = isapnp_find_dev(card, id->devs[0].vendor, id->devs[0].function, NULL);
-       if (acard->dev->active) {
-               acard->dev = NULL;
-               return -EBUSY;
-       }
-       acard->devmpu = isapnp_find_dev(card, id->devs[1].vendor, id->devs[1].function, NULL);
-       if (acard->devmpu->active) {
-               acard->dev = acard->devmpu = NULL;
-               return -EBUSY;
-       }
-       acard->devopl = isapnp_find_dev(card, id->devs[2].vendor, id->devs[2].function, NULL);
-       if (acard->devopl->active) {
-               acard->dev = acard->devmpu = acard->devopl = NULL;
-               return -EBUSY;
+       struct pnp_dev *pdev;
+       struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
+       int err;
+
+       if (!cfg)
+               return -ENOMEM;
+
+       acard->dev = pnp_request_card_device(card, pid->devs[0].id, NULL);
+       if (acard->dev == NULL) {
+               kfree (cfg);
+               return -ENODEV;
        }
+       acard->devmpu = pnp_request_card_device(card, pid->devs[1].id, NULL);
+       acard->devopl = pnp_request_card_device(card, pid->devs[2].id, NULL);

        pdev = acard->dev;
-       if (!pdev || pdev->prepare(pdev)<0)
-               return -EAGAIN;
+       pnp_init_resource_table(cfg);

        if (port[dev] != SNDRV_AUTO_PORT)
-               isapnp_resource_change(&pdev->resource[0], port[dev], 16);
+               pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
        if (dma8[dev] != SNDRV_AUTO_DMA)
-               isapnp_resource_change(&pdev->dma_resource[0], dma8[dev],
+               pnp_resource_change(&cfg->dma_resource[0], dma8[dev],
                        1);
        if (irq[dev] != SNDRV_AUTO_IRQ)
-               isapnp_resource_change(&pdev->irq_resource[0], irq[dev], 1);
+               pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);

-       if (pdev->activate(pdev)<0) {
-               printk(KERN_ERR PFX "DT-019X AUDIO isapnp configure failure\n");
-               return -EBUSY;
-       }
-       port[dev] = pdev->resource[0].start;
-       dma8[dev] = pdev->dma_resource[0].start;
-       irq[dev] = pdev->irq_resource[0].start;
+       if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
+               printk(KERN_ERR PFX "DT-019X AUDIO the requested resources are invalid, using auto config\n");
+       err = pnp_activate_dev(pdev);
+       if (err < 0) {
+               printk(KERN_ERR PFX "DT-019X AUDIO pnp configure failure\n");
+               kfree(cfg);
+               return err;
+       }
+
+       port[dev] = pnp_port_start(pdev, 0);
+       dma8[dev] = pnp_dma(pdev, 0);
+       irq[dev] = pnp_irq(pdev, 0);
        snd_printdd("dt019x: found audio interface: port=0x%lx, irq=0x%lx, dma=0x%lx\n",
                        port[dev],irq[dev],dma8[dev]);

        pdev = acard->devmpu;
-       if (!pdev || pdev->prepare(pdev)<0)
-               return 0;
-
-       if (mpu_port[dev] != SNDRV_AUTO_PORT)
-               isapnp_resource_change(&pdev->resource[0], mpu_port[dev],
-                       2);
-       if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
-               isapnp_resource_change(&pdev->irq_resource[0], mpu_irq[dev],
-                       1);

-       if (pdev->activate(pdev)<0) {
-               printk(KERN_ERR PFX "DT-019X MPU-401 isapnp configure failure\n");
-               mpu_port[dev] = -1;
-               acard->devmpu = NULL;
-       } else {
-               mpu_port[dev] = pdev->resource[0].start;
-               mpu_irq[dev] = pdev->irq_resource[0].start;
+       if (pdev != NULL) {
+               pnp_init_resource_table(cfg);
+               if (mpu_port[dev] != SNDRV_AUTO_PORT)
+                       pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2);
+               if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
+                       pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
+                       if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
+                       printk(KERN_ERR PFX "DT-019X MPU401 the requested resources are invalid, using auto config\n");
+                       err = pnp_activate_dev(pdev);
+                       if (err < 0)
+                               goto __mpu_error;
+               mpu_port[dev] = pnp_port_start(pdev, 0);
+               mpu_irq[dev] = pnp_irq(pdev, 0);
                snd_printdd("dt019x: found MPU-401: port=0x%lx, irq=0x%lx\n",
                                mpu_port[dev],mpu_irq[dev]);
+       } else {
+               __mpu_error:
+               if (pdev) {
+                       pnp_release_card_device(pdev);
+                       printk(KERN_ERR PFX "DT-019X MPU401 pnp configure failure, skipping\n");
+               }
+               acard->devmpu = NULL;
+               mpu_port[dev] = -1;
        }

        pdev = acard->devopl;
-       if (!pdev || pdev->prepare(pdev)<0)
-               return 0;
-
-       if (fm_port[dev] != SNDRV_AUTO_PORT)
-               isapnp_resource_change(&pdev->resource[0], fm_port[dev], 4);
-
-       if (pdev->activate(pdev)<0) {
-               printk(KERN_ERR PFX "DT-019X OPL3 isapnp configure failure\n");
-               fm_port[dev] = -1;
-               acard->devopl = NULL;
-       } else {
-               fm_port[dev] = pdev->resource[0].start;
+       if (pdev != NULL) {
+               pnp_init_resource_table(cfg);
+               if (fm_port[dev] != SNDRV_AUTO_PORT)
+                       pnp_resource_change(&cfg->port_resource[0], fm_port[dev], 4);
+               if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
+                       printk(KERN_ERR PFX "DT-019X OPL3 the requested resources are invalid, using auto config\n");
+               err = pnp_activate_dev(pdev);
+               if (err < 0)
+                       goto __fm_error;
+               fm_port[dev] = pnp_port_start(pdev, 0);
                snd_printdd("dt019x: found OPL3 synth: port=0x%lx\n",fm_port[dev]);
-       }
-
-       return 0;
-}
-
-static void snd_card_dt019x_deactivate(struct snd_card_dt019x *acard)
-{
-       if (acard->dev) {
-               acard->dev->deactivate(acard->dev);
-               acard->dev = NULL;
-       }
-       if (acard->devmpu) {
-               acard->devmpu->deactivate(acard->devmpu);
-               acard->devmpu = NULL;
-       }
-       if (acard->devopl) {
-               acard->devopl->deactivate(acard->devopl);
+       } else {
+               __fm_error:
+               if (pdev) {
+                       pnp_release_card_device(pdev);
+                       printk(KERN_ERR PFX "DT-019X OPL3 pnp configure failure, skipping\n");
+               }
                acard->devopl = NULL;
+               fm_port[dev] = -1;
        }
-}
-#endif /* __ISAPNP__ */

-static void snd_card_dt019x_free(snd_card_t *card)
-{
-       struct snd_card_dt019x *acard = (struct snd_card_dt019x *)card->private_data;
-
-       if (acard != NULL) {
-#ifdef __ISAPNP__
-               snd_card_dt019x_deactivate(acard);
-#endif /* __ISAPNP__ */
-       }
+       kfree(cfg);
+       return 0;
 }

-static int __init snd_card_dt019x_probe(int dev)
+static int __init snd_card_dt019x_probe(int dev, struct pnp_card_link *pcard, const struct pnp_card_device_id *pid)
 {
        int error;
        sb_t *chip;
@@ -251,18 +212,11 @@
                                 sizeof(struct snd_card_dt019x))) == NULL)
                return -ENOMEM;
        acard = (struct snd_card_dt019x *)card->private_data;
-       card->private_free = snd_card_dt019x_free;

-#ifdef __ISAPNP__
-       if ((error = snd_card_dt019x_isapnp(dev, acard))) {
+       if ((error = snd_card_dt019x_isapnp(dev, acard, pcard, pid))) {
                snd_card_free(card);
                return error;
        }
-#else
-       printk(KERN_ERR PFX "you have to enable PnP support ...\n");
-       snd_card_free(card);
-       return -ENOSYS;
-#endif /* __ISAPNP__ */

        if ((error = snd_sbdsp_create(card, port[dev],
                                      irq[dev],
@@ -324,13 +278,12 @@
                snd_card_free(card);
                return error;
        }
-       snd_dt019x_cards[dev] = card;
+       pnp_set_card_drvdata(pcard, card);
        return 0;
 }

-#ifdef __ISAPNP__
-static int __init snd_dt019x_isapnp_detect(struct isapnp_card *card,
-                                           const struct isapnp_card_id *id)
+static int __init snd_dt019x_pnp_probe(struct pnp_card_link *card,
+                                           const struct pnp_card_device_id *pid)
 {
        static int dev;
        int res;
@@ -338,9 +291,7 @@
        for ( ; dev < SNDRV_CARDS; dev++) {
                if (!enable[dev])
                        continue;
-               snd_dt019x_isapnp_cards[dev] = card;
-               snd_dt019x_isapnp_id[dev] = id;
-               res = snd_card_dt019x_probe(dev);
+               res = snd_card_dt019x_probe(dev, card, pid);
                if (res < 0)
                        return res;
                dev++;
@@ -348,17 +299,28 @@
         }
         return -ENODEV;
 }
-#endif /* __ISAPNP__ */
+
+static void __devexit snd_dt019x_pnp_remove(struct pnp_card_link * pcard)
+{
+       snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
+       snd_card_disconnect(card);
+       snd_card_free_in_thread(card);
+}
+
+static struct pnp_card_driver dt019x_pnpc_driver = {
+       .flags          = PNP_DRIVER_RES_DISABLE,
+       .name           = "dt019x",
+       .id_table       = snd_dt019x_pnpids,
+       .probe          = snd_dt019x_pnp_probe,
+       .remove         = __devexit_p(snd_dt019x_pnp_remove),
+};

 static
...

read more »

 
 
 

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 07:30:11


diff -Nru a/sound/isa/als100.c b/sound/isa/als100.c
--- a/sound/isa/als100.c        Thu Apr  3 23:40:33 2003

                                            const struct pnp_card_device_id *id)
 {
        struct pnp_dev *pdev;
-       struct pnp_resource_table * cfg = kmalloc(GFP_ATOMIC, sizeof(struct pnp_resource_table));
+       struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
        int err;
        if (!cfg)
                return -ENOMEM;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
 
 
 

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 07:30:14


diff -Nru a/sound/isa/azt2320.c b/sound/isa/azt2320.c
--- a/sound/isa/azt2320.c       Thu Apr  3 23:40:45 2003
+++ b/sound/isa/azt2320.c       Thu Apr  3 23:40:45 2003
@@ -36,11 +36,7 @@
 #include <linux/init.h>
 #include <linux/time.h>
 #include <linux/wait.h>
-#ifndef LINUX_ISAPNP_H
-#include <linux/isapnp.h>
-#define isapnp_card pci_bus
-#define isapnp_dev pci_dev
-#endif
+#include <linux/pnp.h>
 #include <sound/core.h>
 #define SNDRV_GET_ID
 #include <sound/initval.h>
@@ -109,134 +105,112 @@
 MODULE_PARM_SYNTAX(dma2, SNDRV_DMA_DESC);

 struct snd_card_azt2320 {
-#ifdef __ISAPNP__
-       struct isapnp_dev *dev;
-       struct isapnp_dev *devmpu;
-#endif /* __ISAPNP__ */
+#ifdef CONFIG_PNP
+       int dev_no;
+       struct pnp_dev *dev;
+       struct pnp_dev *devmpu;
+#endif /* CONFIG_PNP */
 };

-static snd_card_t *snd_azt2320_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-#ifdef __ISAPNP__
-
-static struct isapnp_card *snd_azt2320_isapnp_cards[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
-static const struct isapnp_card_id *snd_azt2320_isapnp_id[SNDRV_CARDS] __devinitdata = SNDRV_DEFAULT_PTR;
-
-#define ISAPNP_AZT2320(_va, _vb, _vc, _device, _audio, _mpu401) \
-       { \
-               ISAPNP_CARD_ID(_va, _vb, _vc, _device), \
-               .devs = { ISAPNP_DEVICE_ID(_va, _vb, _vc, _audio), \
-                         ISAPNP_DEVICE_ID(_va, _vb, _vc, _mpu401), } \
-       }
-
-static struct isapnp_card_id snd_azt2320_pnpids[] __devinitdata = {
+static struct pnp_card_device_id snd_azt2320_pnpids[] __devinitdata = {
        /* PRO16V */
-       ISAPNP_AZT2320('A','Z','T',0x1008,0x1008,0x2001),
+       { .id = "AZT1008", .devs = { { "AZT1008" }, { "AZT2001" }, } },
        /* Aztech Sound Galaxy 16 */
-       ISAPNP_AZT2320('A','Z','T',0x2320,0x0001,0x0002),
+       { .id = "AZT2320", .devs = { { "AZT0001" }, { "AZT0002" }, } },
        /* Packard Bell Sound III 336 AM/SP */
-       ISAPNP_AZT2320('A','Z','T',0x3000,0x1003,0x2001),
+       { .id = "AZT3000", .devs = { { "AZT1003" }, { "AZT2001" }, } },
        /* AT3300 */
-       ISAPNP_AZT2320('A','Z','T',0x3002,0x1004,0x2001),
+       { .id = "AZT3002", .devs = { { "AZT1004" }, { "AZT2001" }, } },
        /* --- */
-       ISAPNP_AZT2320('A','Z','T',0x3005,0x1003,0x2001),
+       { .id = "AZT3005", .devs = { { "AZT1003" }, { "AZT2001" }, } },
        /* --- */
-       ISAPNP_AZT2320('A','Z','T',0x3011,0x1003,0x2001),
-       { ISAPNP_CARD_END, }    /* end */
+       { .id = "AZT3011", .devs = { { "AZT1003" }, { "AZT2001" }, } },
+       { .id = "" }  /* end */
 };

-ISAPNP_CARD_TABLE(snd_azt2320_pnpids);
-
-#endif /* __ISAPNP__ */
+MODULE_DEVICE_TABLE(pnp_card, snd_azt2320_pnpids);

 #define        DRIVER_NAME     "snd-card-azt2320"

-
-#ifdef __ISAPNP__
-static int __init snd_card_azt2320_isapnp(int dev, struct snd_card_azt2320 *acard)
+static int __init snd_card_azt2320_isapnp(int dev, struct snd_card_azt2320 *acard,
+                                                            struct pnp_card_link *card,
+                                                            const struct pnp_card_device_id *id)
 {
-       const struct isapnp_card_id *id = snd_azt2320_isapnp_id[dev];
-       struct isapnp_card *card = snd_azt2320_isapnp_cards[dev];
-       struct isapnp_dev *pdev;
-
-       acard->dev = isapnp_find_dev(card, id->devs[0].vendor, id->devs[0].function, NULL);
-       if (acard->dev->active) {
-               acard->dev = NULL;
-               return -EBUSY;
-       }
-       acard->devmpu = isapnp_find_dev(card, id->devs[1].vendor, id->devs[1].function, NULL);
-       if (acard->devmpu->active) {
-               acard->dev = acard->devmpu = NULL;
-               return -EBUSY;
+       struct pnp_dev *pdev;
+       struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
+       int err;
+
+       if (!cfg)
+               return -ENOMEM;
+
+       acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
+       if (acard->dev == NULL) {
+               kfree(cfg);
+               return -ENODEV;
        }

+       acard->devmpu = pnp_request_card_device(card, id->devs[1].id, NULL);
+
        pdev = acard->dev;
-       if (pdev->prepare(pdev) < 0)
-               return -EAGAIN;
+       pnp_init_resource_table(cfg);

+       /* override resources */
        if (port[dev] != SNDRV_AUTO_PORT)
-               isapnp_resource_change(&pdev->resource[0], port[dev], 16);
+               pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
        if (fm_port[dev] != SNDRV_AUTO_PORT)
-               isapnp_resource_change(&pdev->resource[1], fm_port[dev], 4);
+               pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4);
        if (wss_port[dev] != SNDRV_AUTO_PORT)
-               isapnp_resource_change(&pdev->resource[2], wss_port[dev],
-                       4);
+               pnp_resource_change(&cfg->port_resource[2], wss_port[dev], 4);
        if (dma1[dev] != SNDRV_AUTO_DMA)
-               isapnp_resource_change(&pdev->dma_resource[0], dma1[dev],
-                       1);
+               pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
        if (dma2[dev] != SNDRV_AUTO_DMA)
-               isapnp_resource_change(&pdev->dma_resource[1], dma2[dev],
-                       1);
+               pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
        if (irq[dev] != SNDRV_AUTO_IRQ)
-               isapnp_resource_change(&pdev->irq_resource[0], irq[dev], 1);
-
-       if (pdev->activate(pdev) < 0) {
-               printk(KERN_ERR PFX "AUDIO isapnp configure failure\n");
-               return -EBUSY;
-       }
-
-       port[dev] = pdev->resource[0].start;
-       fm_port[dev] = pdev->resource[1].start;
-       wss_port[dev] = pdev->resource[2].start;
-       dma1[dev] = pdev->dma_resource[0].start;
-       dma2[dev] = pdev->dma_resource[1].start;
-       irq[dev] = pdev->irq_resource[0].start;
+               pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
+       if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
+               printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
+
+       err = pnp_activate_dev(pdev);
+       if (err < 0) {
+               printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
+               kfree(cfg);
+               return err;
+       }
+       port[dev] = pnp_port_start(pdev, 0);
+       fm_port[dev] = pnp_port_start(pdev, 1);
+       wss_port[dev] = pnp_port_start(pdev, 2);
+       dma1[dev] = pnp_dma(pdev, 0);
+       dma2[dev] = pnp_dma(pdev, 1);
+       irq[dev] = pnp_irq(pdev, 0);

        pdev = acard->devmpu;
-       if (pdev == NULL || pdev->prepare(pdev) < 0) {
-               mpu_port[dev] = -1;
-               return 0;
-       }
-
-       if (mpu_port[dev] != SNDRV_AUTO_PORT)
-               isapnp_resource_change(&pdev->resource[0], mpu_port[dev],
-                       2);
-       if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
-               isapnp_resource_change(&pdev->irq_resource[0], mpu_irq[dev],
-                       1);
-
-       if (pdev->activate(pdev) < 0) {
-               /* not fatal error */
-               printk(KERN_ERR PFX "MPU-401 isapnp configure failure\n");
-               mpu_port[dev] = -1;
-               acard->devmpu = NULL;
+       if (pdev != NULL) {
+               pnp_init_resource_table(cfg);
+               if (mpu_port[dev] != SNDRV_AUTO_PORT)
+                       pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2);
+               if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
+                       pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
+               if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
+                       printk(KERN_ERR PFX "MPU401 the requested resources are invalid, using auto config\n");
+               err = pnp_activate_dev(pdev);
+               if (err < 0)
+                       goto __mpu_error;
+               mpu_port[dev] = pnp_port_start(pdev, 0);
+               mpu_irq[dev] = pnp_irq(pdev, 0);
        } else {
-               mpu_port[dev] = pdev->resource[0].start;
-               mpu_irq[dev] = pdev->irq_resource[0].start;
+            __mpu_error:
+               if (pdev) {
+                       pnp_release_card_device(pdev);
+                       printk(KERN_ERR PFX "MPU401 pnp configure failure, skipping\n");
+               }
+               acard->devmpu = NULL;
+               mpu_port[dev] = -1;
        }

+       kfree (cfg);
        return 0;
 }

-static void snd_card_azt2320_deactivate(struct snd_card_azt2320 *acard)
-{
-       if (acard->dev)
-               acard->dev->deactivate(acard->dev);
-       if (acard->devmpu)
-               acard->devmpu->deactivate(acard->devmpu);
-}
-#endif /* __ISAPNP__ */
-
 /* same of snd_sbdsp_command by Jaroslav Kysela */
 static int __init snd_card_azt2320_command(unsigned long port, unsigned char val)
 {
@@ -265,18 +239,9 @@
        return 0;
 }

-static void snd_card_azt2320_free(snd_card_t *card)
-{
-       struct snd_card_azt2320 *acard = (struct snd_card_azt2320 *)card->private_data;
-
-       if (acard) {
-#ifdef __ISAPNP__
-               snd_card_azt2320_deactivate(acard);
-#endif /* __ISAPNP__ */
-       }
-}
-
-static int __init snd_card_azt2320_probe(int dev)
+static int __init snd_card_azt2320_probe(int dev,
+                                                          struct pnp_card_link *pcard,
+                                                          const struct pnp_card_device_id *pid)
 {
        int error;
        snd_card_t *card;
@@ -288,14 +253,11 @@
                                 sizeof(struct snd_card_azt2320))) == NULL)
                return -ENOMEM;
        acard = (struct snd_card_azt2320 *)card->private_data;
-       card->private_free = snd_card_azt2320_free;

-#ifdef __ISAPNP__
-       if ((error = snd_card_azt2320_isapnp(dev, acard))) {
+       if ((error = snd_card_azt2320_isapnp(dev, acard, pcard, pid))) {
                snd_card_free(card);
                return error;
        }
-#endif /* __ISAPNP__ */

        if ((error = snd_card_azt2320_enable_wss(port[dev]))) {
                snd_card_free(card);
@@ -360,13 +322,12 @@
                snd_card_free(card);
                return error;
        }
-       snd_azt2320_cards[dev] = card;
+       pnp_set_card_drvdata(pcard, card);
        return 0;
 }

-#ifdef __ISAPNP__
-static int __init snd_azt2320_isapnp_detect(struct isapnp_card *card,
-                                            const struct isapnp_card_id *id)
+static int __init snd_azt2320_pnp_detect(struct pnp_card_link *card,
+                                            const struct pnp_card_device_id *id)
 {
        static int dev;
        int res;
@@ -374,9 +335,7 @@
        for ( ; dev < SNDRV_CARDS; dev++) {
                if (!enable[dev])
                        continue;
-               snd_azt2320_isapnp_cards[dev] = card;
-               snd_azt2320_isapnp_id[dev] = id;
-                res = snd_card_azt2320_probe(dev);
+               res = snd_card_azt2320_probe(dev,card,id);
                if (res < 0)
                        return res;
                dev++;
@@ -384,7 +343,22 @@
        }
         return -ENODEV;
 }
-#endif
+
+static void __devexit snd_azt2320_pnp_remove(struct pnp_card_link * pcard)
+{
+       snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard);
+
+       snd_card_disconnect(card);
+       snd_card_free_in_thread(card);
+}
+
+static struct pnp_card_driver azt2320_pnpc_driver = {
+       .flags          = PNP_DRIVER_RES_DISABLE,
+       .name           = "azt2320",
+       .id_table       = snd_azt2320_pnpids,
+       .probe          = snd_azt2320_pnp_detect,
+       .remove         = __devexit_p(snd_azt2320_pnp_remove),
+};

 static int __init alsa_card_azt2320_init(void)
 {
@@ -395,6 +369,7 @@
 #else
        printk(KERN_ERR PFX "you have to enable ISA PnP support.\n");
 #endif
+       cards +=
...

read more »

 
 
 

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 07:40:07


diff -Nru a/sound/isa/sb/es968.c b/sound/isa/sb/es968.c
--- a/sound/isa/sb/es968.c      Thu Apr  3 23:40:27 2003

                                        const struct pnp_card_device_id *id)
 {
        struct pnp_dev *pdev;
-       struct pnp_resource_table * cfg = kmalloc(GFP_ATOMIC, sizeof(struct pnp_resource_table));
+       struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
        int err;
        if (!cfg)
                return -ENOMEM;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
 
 
 

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 07:50:07


diff -Nru a/drivers/pnp/core.c b/drivers/pnp/core.c
--- a/drivers/pnp/core.c        Thu Apr  3 23:40:52 2003

 static int __init pnp_init(void)
 {
-       printk(KERN_INFO "Linux Plug and Play Support v0.95 (c) Adam Belay\n");
+       printk(KERN_INFO "Linux Plug and Play Support v0.96 (c) Adam Belay\n");
        return bus_register(&pnp_bus_type);
 }

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 07:50:08


diff -Nru a/sound/isa/sb/sb16.c b/sound/isa/sb/sb16.c
--- a/sound/isa/sb/sb16.c       Thu Apr  3 23:41:01 2003
+++ b/sound/isa/sb/sb16.c       Thu Apr  3 23:41:01 2003
@@ -23,11 +23,7 @@
 #include <asm/dma.h>
 #include <linux/init.h>
 #include <linux/slab.h>
-#ifndef LINUX_ISAPNP_H
-#include <linux/isapnp.h>
-#define isapnp_card pci_bus
-#define isapnp_dev pci_dev
-#endif
+#include <linux/pnp.h>
 #include <sound/core.h>
 #include <sound/sb.h>
 #include <sound/sb16_csp.h>
@@ -77,7 +73,7 @@
 static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;     /* Index 0-MAX */
 static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;      /* ID for this card */
 static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_ISAPNP; /* Enable this card */
-#ifdef __ISAPNP__
+#ifdef CONFIG_PNP
 static int isapnp[SNDRV_CARDS] = {[0 ... (SNDRV_CARDS - 1)] = 1};
 #endif
 static long port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT;    /* 0x220,0x240,0x260,0x280 */
@@ -106,10 +102,10 @@
 MODULE_PARM(enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
 MODULE_PARM_DESC(enable, "Enable SoundBlaster 16 soundcard.");
 MODULE_PARM_SYNTAX(enable, SNDRV_ENABLE_DESC);
-#ifdef __ISAPNP__
-MODULE_PARM(isapnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
-MODULE_PARM_DESC(isapnp, "ISA PnP detection for specified soundcard.");
-MODULE_PARM_SYNTAX(isapnp, SNDRV_ISAPNP_DESC);
+#ifdef CONFIG_PNP
+MODULE_PARM(pnp, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+MODULE_PARM_DESC(pnp, "PnP detection for specified soundcard.");
+MODULE_PARM_SYNTAX(pnp, SNDRV_ISAPNP_DESC);
 #endif
 MODULE_PARM(port, "1-" __MODULE_STRING(SNDRV_CARDS) "l");
 MODULE_PARM_DESC(port, "Port # for SB16 driver.");
@@ -148,231 +144,211 @@
 MODULE_PARM_SYNTAX(seq_ports, SNDRV_ENABLED ",allows:{{0,8}},skill:advanced");
 #endif

-struct snd_sb16 {
+struct snd_card_sb16 {
        struct resource *fm_res;        /* used to block FM i/o region for legacy cards */
-#ifdef __ISAPNP__
-       struct isapnp_dev *dev;
+#ifdef CONFIG_PNP
+       int dev_no;
+       struct pnp_dev *dev;
 #ifdef SNDRV_SBAWE_EMU8000
-       struct isapnp_dev *devwt;
+       struct pnp_dev *devwt;
 #endif
 #endif
 };

-static snd_card_t *snd_sb16_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-#ifdef __ISAPNP__
-
-static struct isapnp_card *snd_sb16_isapnp_cards[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-static const struct isapnp_card_id *snd_sb16_isapnp_id[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
-
-#define ISAPNP_SB16(_va, _vb, _vc, _device, _audio) \
-       { \
-               ISAPNP_CARD_ID(_va, _vb, _vc, _device), \
-               .devs = { ISAPNP_DEVICE_ID(_va, _vb, _vc, _audio), } \
-       }
-#define ISAPNP_SBAWE(_va, _vb, _vc, _device, _audio, _awe) \
-       { \
-               ISAPNP_CARD_ID(_va, _vb, _vc, _device), \
-               .devs = { ISAPNP_DEVICE_ID(_va, _vb, _vc, _audio), \
-                        ISAPNP_DEVICE_ID(_va, _vb, _vc, _awe), } \
-       }
+static snd_card_t *snd_sb16_legacy[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;

-static struct isapnp_card_id snd_sb16_pnpids[] __devinitdata = {
+static struct pnp_card_device_id snd_sb16_pnpids[] __devinitdata = {
 #ifndef SNDRV_SBAWE
        /* Sound Blaster 16 PnP */
-       ISAPNP_SB16('C','T','L',0x0024,0x0031),
+       { .id = "CTL0024", .devs = { { "CTL0031" } } },
        /* Sound Blaster 16 PnP */
-       ISAPNP_SB16('C','T','L',0x0025,0x0031),
+       { .id = "CTL0025", .devs = { { "CTL0031" } } },
        /* Sound Blaster 16 PnP */
-       ISAPNP_SB16('C','T','L',0x0026,0x0031),
+       { .id = "CTL0026", .devs = { { "CTL0031" } } },
        /* Sound Blaster 16 PnP */
-       ISAPNP_SB16('C','T','L',0x0027,0x0031),
+       { .id = "CTL0027", .devs = { { "CTL0031" } } },
        /* Sound Blaster 16 PnP */
-       ISAPNP_SB16('C','T','L',0x0028,0x0031),
+       { .id = "CTL0028", .devs = { { "CTL0031" } } },
        /* Sound Blaster 16 PnP */
-       ISAPNP_SB16('C','T','L',0x0029,0x0031),
+       { .id = "CTL0029", .devs = { { "CTL0031" } } },
        /* Sound Blaster 16 PnP */
-       ISAPNP_SB16('C','T','L',0x002a,0x0031),
+       { .id = "CTL002a", .devs = { { "CTL0031" } } },
        /* Sound Blaster 16 PnP */
        /* Note: This card has also a CTL0051:StereoEnhance device!!! */
-       ISAPNP_SB16('C','T','L',0x002b,0x0031),
+       { .id = "CTL002b", .devs = { { "CTL0031" } } },
        /* Sound Blaster 16 PnP */
-       ISAPNP_SB16('C','T','L',0x002c,0x0031),
+       { .id = "CTL002c", .devs = { { "CTL0031" } } },
        /* Sound Blaster Vibra16S */
-       ISAPNP_SB16('C','T','L',0x0051,0x0001),
+       { .id = "CTL0051", .devs = { { "CTL0001" } } },
        /* Sound Blaster Vibra16C */
-       ISAPNP_SB16('C','T','L',0x0070,0x0001),
+       { .id = "CTL0070", .devs = { { "CTL0001" } } },
        /* Sound Blaster Vibra16CL - added by c...@ardi.com */
-       ISAPNP_SB16('C','T','L',0x0080,0x0041),
+       { .id = "CTL0080", .devs = { { "CTL0041" } } },
        /* Sound Blaster 16 'value' PnP. It says model ct4130 on the pcb, */
        /* but ct4131 on a sticker on the board.. */
-       ISAPNP_SB16('C','T','L',0x0086,0x0041),
+       { .id = "CTL0086", .devs = { { "CTL0041" } } },
        /* Sound Blaster Vibra16X */
-       ISAPNP_SB16('C','T','L',0x00f0,0x0043),
+       { .id = "CTL00f0", .devs = { { "CTL0043" } } },
 #else  /* SNDRV_SBAWE defined */
        /* Sound Blaster AWE 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x0035,0x0031,0x0021),
+       { .id = "CTL0035", .devs = { { "CTL0031" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x0039,0x0031,0x0021),
+       { .id = "CTL0039", .devs = { { "CTL0031" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x0042,0x0031,0x0021),
+       { .id = "CTL0042", .devs = { { "CTL0031" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x0043,0x0031,0x0021),
+       { .id = "CTL0043", .devs = { { "CTL0031" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
        /* Note: This card has also a CTL0051:StereoEnhance device!!! */
-       ISAPNP_SBAWE('C','T','L',0x0044,0x0031,0x0021),
+       { .id = "CTL0044", .devs = { { "CTL0031" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
        /* Note: This card has also a CTL0051:StereoEnhance device!!! */
-       ISAPNP_SBAWE('C','T','L',0x0045,0x0031,0x0021),
+       { .id = "CTL0045", .devs = { { "CTL0031" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x0046,0x0031,0x0021),
+       { .id = "CTL0046", .devs = { { "CTL0031" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x0047,0x0031,0x0021),
+       { .id = "CTL0047", .devs = { { "CTL0031" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x0048,0x0031,0x0021),
+       { .id = "CTL0048", .devs = { { "CTL0031" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x0054,0x0031,0x0021),
+       { .id = "CTL0054", .devs = { { "CTL0031" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x009a,0x0041,0x0021),
+       { .id = "CTL009a", .devs = { { "CTL0041" }, { "CTL0021" } } },
        /* Sound Blaster AWE 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x009c,0x0041,0x0021),
+       { .id = "CTL009c", .devs = { { "CTL0041" }, { "CTL0021" } } },
        /* Sound Blaster 32 PnP */
-       ISAPNP_SBAWE('C','T','L',0x009f,0x0041,0x0021),
+       { .id = "CTL009f", .devs = { { "CTL0041" }, { "CTL0021" } } },
        /* Sound Blaster AWE 64 PnP */
-       ISAPNP_SBAWE('C','T','L',0x009d,0x0042,0x0022),
+       { .id = "CTL009d", .devs = { { "CTL0042" }, { "CTL0022" } } },
        /* Sound Blaster AWE 64 PnP Gold */
-       ISAPNP_SBAWE('C','T','L',0x009e,0x0044,0x0023),
+       { .id = "CTL009e", .devs = { { "CTL0044" }, { "CTL0023" } } },
        /* Sound Blaster AWE 64 PnP Gold */
-       ISAPNP_SBAWE('C','T','L',0x00b2,0x0044,0x0023),
+       { .id = "CTL00b2", .devs = { { "CTL0044" }, { "CTL0023" } } },
        /* Sound Blaster AWE 64 PnP */
-       ISAPNP_SBAWE('C','T','L',0x00c1,0x0042,0x0022),
+       { .id = "CTL00c1", .devs = { { "CTL0042" }, { "CTL0022" } } },
        /* Sound Blaster AWE 64 PnP */
-       ISAPNP_SBAWE('C','T','L',0x00c3,0x0045,0x0022),
+       { .id = "CTL00c3", .devs = { { "CTL0045" }, { "CTL0022" } } },
        /* Sound Blaster AWE 64 PnP */
-       ISAPNP_SBAWE('C','T','L',0x00c5,0x0045,0x0022),
+       { .id = "CTL00c5", .devs = { { "CTL0045" }, { "CTL0022" } } },
        /* Sound Blaster AWE 64 PnP */
-       ISAPNP_SBAWE('C','T','L',0x00c7,0x0045,0x0022),
+       { .id = "CTL00c7", .devs = { { "CTL0045" }, { "CTL0022" } } },
        /* Sound Blaster AWE 64 PnP */
-       ISAPNP_SBAWE('C','T','L',0x00e4,0x0045,0x0022),
+       { .id = "CTL00e4", .devs = { { "CTL0045" }, { "CTL0022" } } },
        /* Sound Blaster AWE 64 PnP */
-       ISAPNP_SBAWE('C','T','L',0x00e9,0x0045,0x0022),
+       { .id = "CTL00e9", .devs = { { "CTL0045" }, { "CTL0022" } } },
        /* Sound Blaster 16 PnP (AWE) */
-       ISAPNP_SBAWE('C','T','L',0x00ed,0x0041,0x0070),
+       { .id = "CTL00ed", .devs = { { "CTL0041" }, { "CTL0070" } } },
        /* Generic entries */
-       ISAPNP_SBAWE('C','T','L',ISAPNP_ANY_ID,0x0031,0x0021),
-       ISAPNP_SBAWE('C','T','L',ISAPNP_ANY_ID,0x0041,0x0021),
-       ISAPNP_SBAWE('C','T','L',ISAPNP_ANY_ID,0x0042,0x0022),
-       ISAPNP_SBAWE('C','T','L',ISAPNP_ANY_ID,0x0044,0x0023),
-       ISAPNP_SBAWE('C','T','L',ISAPNP_ANY_ID,0x0045,0x0022),
+       { .id = "CTLXXXX" , .devs = { { "CTL0031" }, { "CTL0021" } } },
+       { .id = "CTLXXXX" , .devs = { { "CTL0041" }, { "CTL0021" } } },
+       { .id = "CTLXXXX" , .devs = { { "CTL0042" }, { "CTL0022" } } },
+       { .id = "CTLXXXX" , .devs = { { "CTL0044" }, { "CTL0023" } } },
+       { .id = "CTLXXXX" , .devs = { { "CTL0045" }, { "CTL0022" } } },
 #endif /* SNDRV_SBAWE */
-       { ISAPNP_CARD_END, }
+       { .id = "", }
 };

-ISAPNP_CARD_TABLE(snd_sb16_pnpids);
+MODULE_DEVICE_TABLE(pnp_card, snd_sb16_pnpids);

-static int __init snd_sb16_isapnp(int dev, struct snd_sb16 *acard)
+#ifdef SNDRV_SBAWE_EMU8000
+#define DRIVER_NAME    "snd-card-sbawe"
+#else
+#define DRIVER_NAME    "snd-card-sb16"
+#endif
+
+static int __devinit snd_card_sb16_pnp(int dev, struct snd_card_sb16 *acard,
+                                      struct pnp_card_link *card,
+                                      const struct pnp_card_device_id *id)
 {
-       const struct isapnp_card_id *id = snd_sb16_isapnp_id[dev];
-       struct isapnp_card *card = snd_sb16_isapnp_cards[dev];
-       struct isapnp_dev *pdev;
-
-       acard->dev = isapnp_find_dev(card, id->devs[0].vendor, id->devs[0].function, NULL);
-       if (acard->dev->active) {
-               acard->dev = NULL;
-               return -EBUSY;
-       }
-#ifdef SNDRV_SBAWE_EMU8000
-       acard->devwt = isapnp_find_dev(card, id->devs[1].vendor, id->devs[1].function, NULL);
-       if
...

read more »

 
 
 

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 07:50:11


diff -Nru a/drivers/isdn/hisax/hisax_fcpcipnp.c b/drivers/isdn/hisax/hisax_fcpcipnp.c
--- a/drivers/isdn/hisax/hisax_fcpcipnp.c       Thu Apr  3 23:41:06 2003
+++ b/drivers/isdn/hisax/hisax_fcpcipnp.c       Thu Apr  3 23:41:06 2003
@@ -909,7 +909,7 @@
 #ifdef CONFIG_PNP_CARD

 static int __devinit fcpnp_probe(struct pnp_card *card,
-                                const struct pnp_card_id *card_id)
+                                const struct pnp_card_device_id *card_id)
 {
        struct fritz_adapter *adapter;
        struct pnp_dev *pnp_dev;
@@ -955,7 +955,7 @@
        delete_adapter(adapter);
 }

-static struct pnp_card_id fcpnp_ids[] __devinitdata = {
+static struct pnp_card_device_id fcpnp_ids[] __devinitdata = {
        { .id          = "AVM0900",
          .driver_data = (unsigned long) "Fritz!Card PnP",
          .devs        = { { "AVM0900" } },
diff -Nru a/drivers/pnp/card.c b/drivers/pnp/card.c
--- a/drivers/pnp/card.c        Thu Apr  3 23:41:06 2003
+++ b/drivers/pnp/card.c        Thu Apr  3 23:41:06 2003
@@ -22,9 +22,9 @@
 LIST_HEAD(pnp_card_drivers);

-static const struct pnp_card_id * match_card(struct pnp_card_driver * drv, struct pnp_card * card)
+static const struct pnp_card_device_id * match_card(struct pnp_card_driver * drv, struct pnp_card * card)
 {
-       const struct pnp_card_id * drv_id = drv->id_table;
+       const struct pnp_card_device_id * drv_id = drv->id_table;
        while (*drv_id->id){
                if (compare_pnp_id(card->id,drv_id->id))
                        return drv_id;
@@ -52,7 +52,7 @@

 static int card_probe(struct pnp_card * card, struct pnp_card_driver * drv)
 {
-       const struct pnp_card_id *id = match_card(drv,card);
+       const struct pnp_card_device_id *id = match_card(drv,card);
        if (id) {
                struct pnp_card_link * clink = pnp_alloc(sizeof(struct pnp_card_link));
                if (!clink)
diff -Nru a/include/linux/pnp.h b/include/linux/pnp.h
--- a/include/linux/pnp.h       Thu Apr  3 23:41:06 2003
+++ b/include/linux/pnp.h       Thu Apr  3 23:41:06 2003
@@ -295,7 +295,7 @@
        unsigned long driver_data;      /* data private to the driver */
 };

-struct pnp_card_id {
+struct pnp_card_device_id {
        char id[PNP_ID_LEN];
        unsigned long driver_data;      /* data private to the driver */
        struct {
@@ -317,9 +317,9 @@
 struct pnp_card_driver {
        struct list_head global_list;
        char * name;
-       const struct pnp_card_id *id_table;
+       const struct pnp_card_device_id *id_table;
        unsigned int flags;
-       int  (*probe)  (struct pnp_card_link *card, const struct pnp_card_id *card_id);
+       int  (*probe)  (struct pnp_card_link *card, const struct pnp_card_device_id *card_id);
        void (*remove) (struct pnp_card_link *card);
        struct pnp_driver link;
 };
diff -Nru a/sound/isa/als100.c b/sound/isa/als100.c
--- a/sound/isa/als100.c        Thu Apr  3 23:41:06 2003
+++ b/sound/isa/als100.c        Thu Apr  3 23:41:06 2003
@@ -98,7 +98,7 @@
        struct pnp_dev *devopl;
 };

-static struct pnp_card_id snd_als100_pnpids[] __devinitdata = {
+static struct pnp_card_device_id snd_als100_pnpids[] __devinitdata = {
        /* ALS100 - PRO16PNP */
        { .id = "ALS0001", .devs = { { "@@@0001" }, { "@X@0001" }, { "@H@0001" }, } },
        /* ALS110 - MF1000 - Digimate 3D Sound */
@@ -118,7 +118,7 @@

 static int __devinit snd_card_als100_isapnp(int dev, struct snd_card_als100 *acard,
                                            struct pnp_card_link *card,
-                                           const struct pnp_card_id *id)
+                                           const struct pnp_card_device_id *id)
 {
        struct pnp_dev *pdev;
        struct pnp_resource_table * cfg = kmalloc(GFP_ATOMIC, sizeof(struct pnp_resource_table));
@@ -210,7 +210,7 @@

 static int __init snd_card_als100_probe(int dev,
                                        struct pnp_card_link *pcard,
-                                       const struct pnp_card_id *pid)
+                                       const struct pnp_card_device_id *pid)
 {
        int error;
        sb_t *chip;
@@ -288,7 +288,7 @@
 }

 static int __devinit snd_als100_pnp_detect(struct pnp_card_link *card,
-                                          const struct pnp_card_id *id)
+                                          const struct pnp_card_device_id *id)
 {
        static int dev;
        int res;
diff -Nru a/sound/isa/sb/es968.c b/sound/isa/sb/es968.c
--- a/sound/isa/sb/es968.c      Thu Apr  3 23:41:06 2003
+++ b/sound/isa/sb/es968.c      Thu Apr  3 23:41:06 2003
@@ -69,7 +69,7 @@
        struct pnp_dev *dev;
 };

-static struct pnp_card_id snd_es968_pnpids[] __devinitdata = {
+static struct pnp_card_device_id snd_es968_pnpids[] __devinitdata = {
        { .id = "ESS0968", .devs = { { "@@@0968" }, } },
        { .id = "", } /* end */
 };
@@ -92,7 +92,7 @@

 static int __devinit snd_card_es968_isapnp(int dev, struct snd_card_es968 *acard,
                                        struct pnp_card_link *card,
-                                       const struct pnp_card_id *id)
+                                       const struct pnp_card_device_id *id)
 {
        struct pnp_dev *pdev;
        struct pnp_resource_table * cfg = kmalloc(GFP_ATOMIC, sizeof(struct pnp_resource_table));
@@ -133,7 +133,7 @@

 static int __init snd_card_es968_probe(int dev,
                                        struct pnp_card_link *pcard,
-                                       const struct pnp_card_id *pid)
+                                       const struct pnp_card_device_id *pid)
 {
        int error;
        sb_t *chip;
@@ -188,7 +188,7 @@
 }

 static int __devinit snd_es968_pnp_detect(struct pnp_card_link *card,
-                                          const struct pnp_card_id *id)
+                                          const struct pnp_card_device_id *id)
 {
        static int dev;
        int res;
diff -Nru a/sound/oss/sb_card.c b/sound/oss/sb_card.c
--- a/sound/oss/sb_card.c       Thu Apr  3 23:41:06 2003
+++ b/sound/oss/sb_card.c       Thu Apr  3 23:41:06 2003
@@ -224,7 +224,7 @@
 }

 /* Probe callback function for the PnP API */
-static int sb_pnp_probe(struct pnp_card_link *card, const struct pnp_card_id *card_id)
+static int sb_pnp_probe(struct pnp_card_link *card, const struct pnp_card_device_id *card_id)
 {
        struct sb_card_config *scc;
        struct sb_module_options sbmo = {0}; /* Default to 0 for PnP */
diff -Nru a/sound/oss/sb_card.h b/sound/oss/sb_card.h
--- a/sound/oss/sb_card.h       Thu Apr  3 23:41:06 2003
+++ b/sound/oss/sb_card.h       Thu Apr  3 23:41:06 2003
@@ -23,7 +23,7 @@
  */

 /* Card PnP ID Table */
-static struct pnp_card_id sb_pnp_card_table[] = {
+static struct pnp_card_device_id sb_pnp_card_table[] = {
        /* Sound Blaster 16 */
        {.id = "CTL0024", .driver_data = 0, devs : { {.id="CTL0031"}, } },
        /* Sound Blaster 16 */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

 
 
 

PnP Changes for 2.5.66

Post by Adam Bela » Sat, 05 Apr 2003 08:00:07


diff -Nru a/sound/isa/als100.c b/sound/isa/als100.c
--- a/sound/isa/als100.c        Thu Apr  3 23:41:11 2003

        err = pnp_activate_dev(pdev);
        if (err < 0) {
                printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
+               kfree(cfg);
                return err;
        }
        port[dev] = pnp_port_start(pdev, 0);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
 
 
 

1. Compile error 2.5.66-mm1 (haven't tried with 2.5.66 vanilla)

Hello

Compiling 2.5.66-mm1 gives me the following error

   ld -m elf_i386  -r -o init/built-in.o init/main.o init/version.o
init/mounts.o init/initramfs.o
        ld -m elf_i386  -T arch/i386/vmlinux.lds.s arch/i386/kernel/head.o
arch/i386/kernel/init_task.o   init/built-in.o --start-group
usr/built-in.o  arch/i386/kernel/built-in.o
arch/i386/mm/built-in.o  arch/i386/mach-default/built-in.o
kernel/built-in.o  mm/built-in.o  fs/built-in.o  ipc/built-in.o
security/built-in.o  crypto/built-in.o  lib/lib.a
arch/i386/lib/lib.a  drivers/built-in.o  sound/built-in.o
arch/i386/pci/built-in.o  net/built-in.o --end-group  -o
.tmp_vmlinux1
sound/built-in.o: In function `cs4232_pnp_remove':
sound/built-in.o(.text+0xaf51): undefined reference to `local symbols in
discarded section .exit.text'
make: *** [.tmp_vmlinux1] Error 1

Program versions and config are atached.

Bye
Calin

--
# fortune
fortune: write error on /dev/null - please empty the bit bucket

-----------------------------------------
This email was sent using SquirrelMail.
   "Webmail for nuts!"
http://squirrelmail.org/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

2. CDE CPU loops, Can't start...

3. [2.5.66] kexec for 2.5.66 available

4. SOS : lost my CD of SUN OS 4.*

5. PnP Changes for 2.5.66

6. dns problems

7. Java appletviewer

8. USB changes for 2.5.66

9. i2c driver changes for 2.5.66

10. More i2c driver changes for 2.5.66

11. i2c driver changes for 2.5.66; adding w83781d support.