]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
PCI: Add builtin_pci_driver() to avoid registration boilerplate
authorPaul Gortmaker <paul.gortmaker@windriver.com>
Wed, 26 Aug 2015 00:25:37 +0000 (20:25 -0400)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 6 Oct 2015 19:24:18 +0000 (14:24 -0500)
In f309d4443130 ("platform_device: better support builtin boilerplate
avoidance"), we introduced the builtin_driver() macro.

Here we use that support and extend it to PCI driver registration, so where
a driver is clearly non-modular and builtin-only, we can register it in a
similar fashion.  Existing code that is clearly non-modular can be updated
with the simple mapping of

  module_pci_driver(...)  ---> builtin_pci_driver(...)

We've essentially cloned the former to make the latter, and taken out the
remove/module_exit parts since those never get used in a non-modular build
of the code.

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
include/linux/pci.h

index e90eb22de6286df6be1ed07ed8f37aa6ab7810b4..b54fbf1571b1b2958b1a0303a0cdd817541f90fe 100644 (file)
@@ -1192,6 +1192,17 @@ void pci_unregister_driver(struct pci_driver *dev);
        module_driver(__pci_driver, pci_register_driver, \
                       pci_unregister_driver)
 
+/**
+ * builtin_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 their
+ * init code. This eliminates a lot of boilerplate. Each driver may only
+ * use this macro once, and calling it replaces device_initcall(...)
+ */
+#define builtin_pci_driver(__pci_driver) \
+       builtin_driver(__pci_driver, pci_register_driver)
+
 struct pci_driver *pci_dev_driver(const struct pci_dev *dev);
 int pci_add_dynid(struct pci_driver *drv,
                  unsigned int vendor, unsigned int device,