|
@@ -243,30 +243,14 @@ struct pci_dev *pci_get_subsys(unsigned int vendor, unsigned int device,
|
|
|
unsigned int ss_vendor, unsigned int ss_device,
|
|
|
struct pci_dev *from)
|
|
|
{
|
|
|
- struct pci_dev *pdev;
|
|
|
- struct pci_device_id *id;
|
|
|
-
|
|
|
- /*
|
|
|
- * pci_find_subsys() can be called on the ide_setup() path,
|
|
|
- * super-early in boot. But the down_read() will enable local
|
|
|
- * interrupts, which can cause some machines to crash. So here we
|
|
|
- * detect and flag that situation and bail out early.
|
|
|
- */
|
|
|
- if (unlikely(no_pci_devices()))
|
|
|
- return NULL;
|
|
|
-
|
|
|
- id = kzalloc(sizeof(*id), GFP_KERNEL);
|
|
|
- if (!id)
|
|
|
- return NULL;
|
|
|
- id->vendor = vendor;
|
|
|
- id->device = device;
|
|
|
- id->subvendor = ss_vendor;
|
|
|
- id->subdevice = ss_device;
|
|
|
-
|
|
|
- pdev = pci_get_dev_by_id(id, from);
|
|
|
- kfree(id);
|
|
|
-
|
|
|
- return pdev;
|
|
|
+ struct pci_device_id id = {
|
|
|
+ .vendor = vendor,
|
|
|
+ .device = device,
|
|
|
+ .subvendor = ss_vendor,
|
|
|
+ .subdevice = ss_device,
|
|
|
+ };
|
|
|
+
|
|
|
+ return pci_get_dev_by_id(&id, from);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -305,19 +289,16 @@ pci_get_device(unsigned int vendor, unsigned int device, struct pci_dev *from)
|
|
|
*/
|
|
|
struct pci_dev *pci_get_class(unsigned int class, struct pci_dev *from)
|
|
|
{
|
|
|
- struct pci_dev *dev;
|
|
|
- struct pci_device_id *id;
|
|
|
-
|
|
|
- id = kzalloc(sizeof(*id), GFP_KERNEL);
|
|
|
- if (!id)
|
|
|
- return NULL;
|
|
|
- id->vendor = id->device = id->subvendor = id->subdevice = PCI_ANY_ID;
|
|
|
- id->class_mask = PCI_ANY_ID;
|
|
|
- id->class = class;
|
|
|
-
|
|
|
- dev = pci_get_dev_by_id(id, from);
|
|
|
- kfree(id);
|
|
|
- return dev;
|
|
|
+ struct pci_device_id id = {
|
|
|
+ .vendor = PCI_ANY_ID,
|
|
|
+ .device = PCI_ANY_ID,
|
|
|
+ .subvendor = PCI_ANY_ID,
|
|
|
+ .subdevice = PCI_ANY_ID,
|
|
|
+ .class_mask = PCI_ANY_ID,
|
|
|
+ .class = class,
|
|
|
+ };
|
|
|
+
|
|
|
+ return pci_get_dev_by_id(&id, from);
|
|
|
}
|
|
|
|
|
|
/**
|