diff options
author | Laurent riffard <laurent.riffard@free.fr> | 2005-10-27 17:12:54 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-11-10 19:09:16 -0500 |
commit | 863b18f4b5e7d9e6903b353328cf6fa084dbb619 (patch) | |
tree | e181466c3e7e676fa08e4bce2052ada38d98228d /include/linux/pci.h | |
parent | f8eb1005a5bdb019d2a4ff3ef8d8e8015b22afcb (diff) |
[PATCH] PCI: automatically set device_driver.owner
A nice feature of sysfs is that it can create the symlink from the
driver to the module that is contained in it.
It requires that the device_driver.owner is set, what is not the
case for many PCI drivers.
This patch allows pci_register_driver to set automatically the
device_driver.owner for any PCI driver.
Credits to Al Viro who suggested the method.
Signed-off-by: Laurent Riffard <laurent.riffard@free.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--
drivers/ide/setup-pci.c | 12 +++++++-----
drivers/pci/pci-driver.c | 9 +++++----
include/linux/ide.h | 3 ++-
include/linux/pci.h | 10 ++++++++--
4 files changed, 22 insertions(+), 12 deletions(-)
Diffstat (limited to 'include/linux/pci.h')
-rw-r--r-- | include/linux/pci.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h index 7063241e34d9..60702fccf9e7 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -433,8 +433,13 @@ int pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res, | |||
433 | void *alignf_data); | 433 | void *alignf_data); |
434 | void pci_enable_bridges(struct pci_bus *bus); | 434 | void pci_enable_bridges(struct pci_bus *bus); |
435 | 435 | ||
436 | /* New-style probing supporting hot-pluggable devices */ | 436 | /* Proper probing supporting hot-pluggable devices */ |
437 | int pci_register_driver(struct pci_driver *); | 437 | int __pci_register_driver(struct pci_driver *, struct module *); |
438 | static inline int pci_register_driver(struct pci_driver *driver) | ||
439 | { | ||
440 | return __pci_register_driver(driver, THIS_MODULE); | ||
441 | } | ||
442 | |||
438 | void pci_unregister_driver(struct pci_driver *); | 443 | void pci_unregister_driver(struct pci_driver *); |
439 | void pci_remove_behind_bridge(struct pci_dev *); | 444 | void pci_remove_behind_bridge(struct pci_dev *); |
440 | struct pci_driver *pci_dev_driver(const struct pci_dev *); | 445 | struct pci_driver *pci_dev_driver(const struct pci_dev *); |
@@ -548,6 +553,7 @@ static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; } | |||
548 | static inline void pci_disable_device(struct pci_dev *dev) { } | 553 | static inline void pci_disable_device(struct pci_dev *dev) { } |
549 | static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) { return -EIO; } | 554 | static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) { return -EIO; } |
550 | static inline int pci_assign_resource(struct pci_dev *dev, int i) { return -EBUSY;} | 555 | static inline int pci_assign_resource(struct pci_dev *dev, int i) { return -EBUSY;} |
556 | static inline int __pci_register_driver(struct pci_driver *drv, struct module *owner) { return 0;} | ||
551 | static inline int pci_register_driver(struct pci_driver *drv) { return 0;} | 557 | static inline int pci_register_driver(struct pci_driver *drv) { return 0;} |
552 | static inline void pci_unregister_driver(struct pci_driver *drv) { } | 558 | static inline void pci_unregister_driver(struct pci_driver *drv) { } |
553 | static inline int pci_find_capability (struct pci_dev *dev, int cap) {return 0; } | 559 | static inline int pci_find_capability (struct pci_dev *dev, int cap) {return 0; } |