mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 20:54:10 +08:00
[PATCH] PCI Hotplug: remove pci_visit_dev
If my CPCI hotplug update patch is applied, then there are no longer any in tree users of the pci_visit_dev API, and it and its related code can be removed. Signed-off-by: Scott Murray <scottm@somanetworks.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
43b7d7cfb1
commit
c22610dadc
@ -56,112 +56,3 @@ int pci_hotplug (struct device *dev, char **envp, int num_envp,
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int pci_visit_bus (struct pci_visit * fn, struct pci_bus_wrapped *wrapped_bus, struct pci_dev_wrapped *wrapped_parent)
|
||||
{
|
||||
struct list_head *ln;
|
||||
struct pci_dev *dev;
|
||||
struct pci_dev_wrapped wrapped_dev;
|
||||
int result = 0;
|
||||
|
||||
pr_debug("PCI: Scanning bus %04x:%02x\n", pci_domain_nr(wrapped_bus->bus),
|
||||
wrapped_bus->bus->number);
|
||||
|
||||
if (fn->pre_visit_pci_bus) {
|
||||
result = fn->pre_visit_pci_bus(wrapped_bus, wrapped_parent);
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
|
||||
ln = wrapped_bus->bus->devices.next;
|
||||
while (ln != &wrapped_bus->bus->devices) {
|
||||
dev = pci_dev_b(ln);
|
||||
ln = ln->next;
|
||||
|
||||
memset(&wrapped_dev, 0, sizeof(struct pci_dev_wrapped));
|
||||
wrapped_dev.dev = dev;
|
||||
|
||||
result = pci_visit_dev(fn, &wrapped_dev, wrapped_bus);
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
|
||||
if (fn->post_visit_pci_bus)
|
||||
result = fn->post_visit_pci_bus(wrapped_bus, wrapped_parent);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
static int pci_visit_bridge (struct pci_visit * fn,
|
||||
struct pci_dev_wrapped *wrapped_dev,
|
||||
struct pci_bus_wrapped *wrapped_parent)
|
||||
{
|
||||
struct pci_bus *bus;
|
||||
struct pci_bus_wrapped wrapped_bus;
|
||||
int result = 0;
|
||||
|
||||
pr_debug("PCI: Scanning bridge %s\n", pci_name(wrapped_dev->dev));
|
||||
|
||||
if (fn->visit_pci_dev) {
|
||||
result = fn->visit_pci_dev(wrapped_dev, wrapped_parent);
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
|
||||
bus = wrapped_dev->dev->subordinate;
|
||||
if (bus) {
|
||||
memset(&wrapped_bus, 0, sizeof(struct pci_bus_wrapped));
|
||||
wrapped_bus.bus = bus;
|
||||
|
||||
result = pci_visit_bus(fn, &wrapped_bus, wrapped_dev);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* pci_visit_dev - scans the pci buses.
|
||||
* @fn: callback functions that are called while visiting
|
||||
* @wrapped_dev: the device to scan
|
||||
* @wrapped_parent: the bus where @wrapped_dev is connected to
|
||||
*
|
||||
* Every bus and every function is presented to a custom
|
||||
* function that can act upon it.
|
||||
*/
|
||||
int pci_visit_dev(struct pci_visit *fn, struct pci_dev_wrapped *wrapped_dev,
|
||||
struct pci_bus_wrapped *wrapped_parent)
|
||||
{
|
||||
struct pci_dev* dev = wrapped_dev ? wrapped_dev->dev : NULL;
|
||||
int result = 0;
|
||||
|
||||
if (!dev)
|
||||
return 0;
|
||||
|
||||
if (fn->pre_visit_pci_dev) {
|
||||
result = fn->pre_visit_pci_dev(wrapped_dev, wrapped_parent);
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
|
||||
switch (dev->class >> 8) {
|
||||
case PCI_CLASS_BRIDGE_PCI:
|
||||
result = pci_visit_bridge(fn, wrapped_dev,
|
||||
wrapped_parent);
|
||||
if (result)
|
||||
return result;
|
||||
break;
|
||||
default:
|
||||
pr_debug("PCI: Scanning device %s\n", pci_name(dev));
|
||||
if (fn->visit_pci_dev) {
|
||||
result = fn->visit_pci_dev (wrapped_dev,
|
||||
wrapped_parent);
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
if (fn->post_visit_pci_dev)
|
||||
result = fn->post_visit_pci_dev(wrapped_dev, wrapped_parent);
|
||||
|
||||
return result;
|
||||
}
|
||||
EXPORT_SYMBOL(pci_visit_dev);
|
||||
|
@ -32,33 +32,6 @@ extern unsigned char pci_max_busnr(void);
|
||||
extern unsigned char pci_bus_max_busnr(struct pci_bus *bus);
|
||||
extern int pci_bus_find_capability (struct pci_bus *bus, unsigned int devfn, int cap);
|
||||
|
||||
struct pci_dev_wrapped {
|
||||
struct pci_dev *dev;
|
||||
void *data;
|
||||
};
|
||||
|
||||
struct pci_bus_wrapped {
|
||||
struct pci_bus *bus;
|
||||
void *data;
|
||||
};
|
||||
|
||||
struct pci_visit {
|
||||
int (* pre_visit_pci_bus) (struct pci_bus_wrapped *,
|
||||
struct pci_dev_wrapped *);
|
||||
int (* post_visit_pci_bus) (struct pci_bus_wrapped *,
|
||||
struct pci_dev_wrapped *);
|
||||
|
||||
int (* pre_visit_pci_dev) (struct pci_dev_wrapped *,
|
||||
struct pci_bus_wrapped *);
|
||||
int (* visit_pci_dev) (struct pci_dev_wrapped *,
|
||||
struct pci_bus_wrapped *);
|
||||
int (* post_visit_pci_dev) (struct pci_dev_wrapped *,
|
||||
struct pci_bus_wrapped *);
|
||||
};
|
||||
|
||||
extern int pci_visit_dev(struct pci_visit *fn,
|
||||
struct pci_dev_wrapped *wrapped_dev,
|
||||
struct pci_bus_wrapped *wrapped_parent);
|
||||
extern void pci_remove_legacy_files(struct pci_bus *bus);
|
||||
|
||||
/* Lock for read/write access to pci device and bus lists */
|
||||
|
Loading…
Reference in New Issue
Block a user