linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] PCI: Add helper macro for pci_register_driver boilerplate
@ 2011-11-18 18:12 Greg KH
  2011-11-18 18:14 ` [PATCH] DWC3: use module_pci_driver Greg KH
  2011-12-05 18:28 ` [PATCH] PCI: Add helper macro for pci_register_driver boilerplate Jesse Barnes
  0 siblings, 2 replies; 7+ messages in thread
From: Greg KH @ 2011-11-18 18:12 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: linux-pci, Lars-Peter Clausen, Felipe Balbi

From: Greg Kroah-Hartman <gregkh@suse.de>

This patch introduces the module_pci_driver macro which is a convenience
macro for PCI driver modules similar to module_platform_driver. It is
intended to be used by drivers which init/exit section does nothing but
register/unregister the PCI driver. By using this macro it is possible
to eliminate a few lines of boilerplate code per PCI driver.

Based on work done by Lars-Peter Clausen <lars@metafoo.de> for other
busses (i2c and spi).

Cc: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---

Jesse, I've added the same type of macros for i2c, spi, and usb to my
driver-core tree, and converted a number of drivers to these new macros.
If you give me the ack, I can add this patch to my tree as well.

I'll follow up this patch with an example showing how it works.

Comments?

 include/linux/pci.h |   13 +++++++++++++
 1 file changed, 13 insertions(+)

--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -941,6 +941,19 @@ int __must_check __pci_register_driver(struct pci_driver *, struct module *,
 	__pci_register_driver(driver, THIS_MODULE, KBUILD_MODNAME)
 
 void pci_unregister_driver(struct pci_driver *dev);
+
+/**
+ * module_pci_driver() - Helper macro for registering a PCI driver
+ * @__pci_driver: pci_driver struct
+ *
+ * Helper macro for PCI drivers which do not do anything special in module
+ * init/exit. This eliminates a lot of boilerplate. Each module may only
+ * use this macro once, and calling it replaces module_init() and module_exit()
+ */
+#define module_pci_driver(__pci_driver) \
+	module_driver(__pci_driver, pci_register_driver, \
+		       pci_unregister_driver)
+
 void pci_remove_behind_bridge(struct pci_dev *dev);
 struct pci_driver *pci_dev_driver(const struct pci_dev *dev);
 int pci_add_dynid(struct pci_driver *drv,

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-12-05 18:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-18 18:12 [PATCH] PCI: Add helper macro for pci_register_driver boilerplate Greg KH
2011-11-18 18:14 ` [PATCH] DWC3: use module_pci_driver Greg KH
2011-11-18 19:04   ` Felipe Balbi
2011-11-18 19:11     ` Greg KH
2011-11-18 19:22       ` Felipe Balbi
2011-12-05 18:28 ` [PATCH] PCI: Add helper macro for pci_register_driver boilerplate Jesse Barnes
2011-12-05 18:38   ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).