diff options
Diffstat (limited to 'drivers/pnp')
-rw-r--r-- | drivers/pnp/core.c | 28 | ||||
-rw-r--r-- | drivers/pnp/pnpacpi/core.c | 1 |
2 files changed, 24 insertions, 5 deletions
diff --git a/drivers/pnp/core.c b/drivers/pnp/core.c index d5964feb14d..7d366ca672d 100644 --- a/drivers/pnp/core.c +++ b/drivers/pnp/core.c @@ -125,9 +125,11 @@ int __pnp_add_device(struct pnp_dev *dev) spin_unlock(&pnp_lock); ret = device_register(&dev->dev); - if (ret == 0) - pnp_interface_attach_device(dev); - return ret; + if (ret) + return ret; + + pnp_interface_attach_device(dev); + return 0; } /* @@ -138,12 +140,30 @@ int __pnp_add_device(struct pnp_dev *dev) */ int pnp_add_device(struct pnp_dev *dev) { + int ret; + if (dev->card) return -EINVAL; + dev->dev.parent = &dev->protocol->dev; sprintf(dev->dev.bus_id, "%02x:%02x", dev->protocol->number, dev->number); - return __pnp_add_device(dev); + ret = __pnp_add_device(dev); + if (ret) + return ret; + +#ifdef CONFIG_PNP_DEBUG + { + struct pnp_id *id; + + dev_printk(KERN_DEBUG, &dev->dev, "%s device, IDs", + dev->protocol->name); + for (id = dev->id; id; id = id->next) + printk(" %s", id->id); + printk(" (%s)\n", dev->active ? "active" : "disabled"); + } +#endif + return 0; } void __pnp_remove_device(struct pnp_dev *dev) diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c index e6a2a9fc7f0..dada8990631 100644 --- a/drivers/pnp/pnpacpi/core.c +++ b/drivers/pnp/pnpacpi/core.c @@ -171,7 +171,6 @@ static int __init pnpacpi_add_device(struct acpi_device *device) is_exclusive_device(device)) return 0; - pnp_dbg("ACPI device : hid %s", acpi_device_hid(device)); dev = kzalloc(sizeof(struct pnp_dev), GFP_KERNEL); if (!dev) { pnp_err("Out of memory"); |