PCI/checkpatch: Deprecate DEFINE_PCI_DEVICE_TABLE

Prefer use of the direct definition of struct pci_device_id instead of
indirection via macro DEFINE_PCI_DEVICE_TABLE.

Update the PCI documentation to deprecate DEFINE_PCI_DEVICE_TABLE.  Update
checkpatch adding --fix option.

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Git-commit: 92e112fdbb3cb55b43390426501a7efacd893b96
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
This commit is contained in:
Joe Perches 2013-12-13 11:36:22 -07:00 committed by Stepan Moskovchenko
parent b9ab072a36
commit 83a78f24be
3 changed files with 12 additions and 8 deletions

View File

@ -123,8 +123,10 @@ initialization with a pointer to a structure describing the driver
The ID table is an array of struct pci_device_id entries ending with an The ID table is an array of struct pci_device_id entries ending with an
all-zero entry; use of the macro DEFINE_PCI_DEVICE_TABLE is the preferred all-zero entry. Definitions with static const are generally preferred.
method of declaring the table. Each entry consists of: Use of the deprecated macro DEFINE_PCI_DEVICE_TABLE should be avoided.
Each entry consists of:
vendor,device Vendor and device ID to match (or PCI_ANY_ID) vendor,device Vendor and device ID to match (or PCI_ANY_ID)

View File

@ -609,8 +609,7 @@ struct pci_driver {
* DEFINE_PCI_DEVICE_TABLE - macro used to describe a pci device table * DEFINE_PCI_DEVICE_TABLE - macro used to describe a pci device table
* @_table: device table name * @_table: device table name
* *
* This macro is used to create a struct pci_device_id array (a device table) * This macro is deprecated and should not be used in new code.
* in a generic manner.
*/ */
#define DEFINE_PCI_DEVICE_TABLE(_table) \ #define DEFINE_PCI_DEVICE_TABLE(_table) \
const struct pci_device_id _table[] const struct pci_device_id _table[]

View File

@ -2634,10 +2634,13 @@ sub process {
$herecurr); $herecurr);
} }
# check for declarations of struct pci_device_id # check for uses of DEFINE_PCI_DEVICE_TABLE
if ($line =~ /\bstruct\s+pci_device_id\s+\w+\s*\[\s*\]\s*\=\s*\{/) { if ($line =~ /\bDEFINE_PCI_DEVICE_TABLE\s*\(\s*(\w+)\s*\)\s*=/) {
WARN("DEFINE_PCI_DEVICE_TABLE", if (WARN("DEFINE_PCI_DEVICE_TABLE",
"Use DEFINE_PCI_DEVICE_TABLE for struct pci_device_id\n" . $herecurr); "Prefer struct pci_device_id over deprecated DEFINE_PCI_DEVICE_TABLE\n" . $herecurr) &&
$fix) {
$fixed[$linenr - 1] =~ s/\b(?:static\s+|)DEFINE_PCI_DEVICE_TABLE\s*\(\s*(\w+)\s*\)\s*=\s*/static const struct pci_device_id $1\[\] = /;
}
} }
# check for new typedefs, only function parameters and sparse annotations # check for new typedefs, only function parameters and sparse annotations