Skip to content

Commit

Permalink
PCI/checkpatch: Deprecate DEFINE_PCI_DEVICE_TABLE
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Bjorn Helgaas <[email protected]>
Reviewed-by: Jingoo Han <[email protected]>
  • Loading branch information
JoePerches authored and bjorn-helgaas committed Dec 13, 2013
1 parent 5b764b8 commit 92e112f
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 8 deletions.
6 changes: 4 additions & 2 deletions Documentation/PCI/pci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
all-zero entry; use of the macro DEFINE_PCI_DEVICE_TABLE is the preferred
method of declaring the table. Each entry consists of:
all-zero entry. Definitions with static const are generally preferred.
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)

Expand Down
3 changes: 1 addition & 2 deletions include/linux/pci.h
Original file line number Diff line number Diff line change
Expand Up @@ -634,8 +634,7 @@ struct pci_driver {
* DEFINE_PCI_DEVICE_TABLE - macro used to describe a pci device table
* @_table: device table name
*
* This macro is used to create a struct pci_device_id array (a device table)
* in a generic manner.
* This macro is deprecated and should not be used in new code.
*/
#define DEFINE_PCI_DEVICE_TABLE(_table) \
const struct pci_device_id _table[]
Expand Down
11 changes: 7 additions & 4 deletions scripts/checkpatch.pl
Original file line number Diff line number Diff line change
Expand Up @@ -2634,10 +2634,13 @@ sub process {
$herecurr);
}

# check for declarations of struct pci_device_id
if ($line =~ /\bstruct\s+pci_device_id\s+\w+\s*\[\s*\]\s*\=\s*\{/) {
WARN("DEFINE_PCI_DEVICE_TABLE",
"Use DEFINE_PCI_DEVICE_TABLE for struct pci_device_id\n" . $herecurr);
# check for uses of DEFINE_PCI_DEVICE_TABLE
if ($line =~ /\bDEFINE_PCI_DEVICE_TABLE\s*\(\s*(\w+)\s*\)\s*=/) {
if (WARN("DEFINE_PCI_DEVICE_TABLE",
"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
Expand Down

0 comments on commit 92e112f

Please sign in to comment.