Commit 91373042 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

[PATCH] PCI Hotplug: removed the pci_*_nodev functions

removed the pci_*_nodev functions, as the pci_bus_* functions should be used instead.
parent a6157f73
......@@ -51,245 +51,6 @@
static int debug;
static int build_dev (struct pci_ops *ops, u8 bus, u8 slot, u8 function, struct pci_dev **pci_dev)
{
struct pci_dev *my_dev;
struct pci_bus *my_bus;
/* Some validity checks. */
if ((function > 7) ||
(slot > 31) ||
(pci_dev == NULL) ||
(ops == NULL))
return -ENODEV;
my_dev = kmalloc (sizeof (struct pci_dev), GFP_KERNEL);
if (!my_dev)
return -ENOMEM;
my_bus = kmalloc (sizeof (struct pci_bus), GFP_KERNEL);
if (!my_bus) {
kfree (my_dev);
return -ENOMEM;
}
memset(my_dev, 0, sizeof(struct pci_dev));
memset(my_bus, 0, sizeof(struct pci_bus));
my_bus->number = bus;
my_bus->ops = ops;
my_dev->devfn = PCI_DEVFN(slot, function);
my_dev->bus = my_bus;
*pci_dev = my_dev;
return 0;
}
/**
* pci_read_config_byte_nodev - read a byte from a pci device
* @ops: pointer to a &struct pci_ops that will be used to read from the pci device
* @bus: the bus of the pci device to read from
* @slot: the pci slot number of the pci device to read from
* @function: the function of the pci device to read from
* @where: the location on the pci address space to read from
* @value: pointer to where to place the data read
*
* Like pci_read_config_byte() but works for pci devices that do not have a
* pci_dev structure set up yet.
* Returns 0 on success.
*/
int pci_read_config_byte_nodev (struct pci_ops *ops, u8 bus, u8 slot, u8 function, int where, u8 *value)
{
struct pci_dev *dev = NULL;
int result;
dbg("%p, %d, %d, %d, %d, %p\n", ops, bus, slot, function, where, value);
dev = pci_find_slot(bus, PCI_DEVFN(slot, function));
if (dev) {
dbg("using native pci_dev\n");
return pci_read_config_byte (dev, where, value);
}
result = build_dev (ops, bus, slot, function, &dev);
if (result)
return result;
result = pci_read_config_byte(dev, where, value);
kfree (dev->bus);
kfree (dev);
return result;
}
/**
* pci_read_config_word_nodev - read a word from a pci device
* @ops: pointer to a &struct pci_ops that will be used to read from the pci device
* @bus: the bus of the pci device to read from
* @slot: the pci slot number of the pci device to read from
* @function: the function of the pci device to read from
* @where: the location on the pci address space to read from
* @value: pointer to where to place the data read
*
* Like pci_read_config_word() but works for pci devices that do not have a
* pci_dev structure set up yet.
* Returns 0 on success.
*/
int pci_read_config_word_nodev (struct pci_ops *ops, u8 bus, u8 slot, u8 function, int where, u16 *value)
{
struct pci_dev *dev = NULL;
int result;
dbg("%p, %d, %d, %d, %d, %p\n", ops, bus, slot, function, where, value);
dev = pci_find_slot(bus, PCI_DEVFN(slot, function));
if (dev) {
dbg("using native pci_dev\n");
return pci_read_config_word (dev, where, value);
}
result = build_dev (ops, bus, slot, function, &dev);
if (result)
return result;
result = pci_read_config_word(dev, where, value);
kfree (dev->bus);
kfree (dev);
return result;
}
/**
* pci_read_config_dword_nodev - read a dword from a pci device
* @ops: pointer to a &struct pci_ops that will be used to read from the pci
* device
* @bus: the bus of the pci device to read from
* @slot: the pci slot number of the pci device to read from
* @function: the function of the pci device to read from
* @where: the location on the pci address space to read from
* @value: pointer to where to place the data read
*
* Like pci_read_config_dword() but works for pci devices that do not have a
* pci_dev structure set up yet.
* Returns 0 on success.
*/
int pci_read_config_dword_nodev (struct pci_ops *ops, u8 bus, u8 slot, u8 function, int where, u32 *value)
{
struct pci_dev *dev = NULL;
int result;
dbg("%p, %d, %d, %d, %d, %p\n", ops, bus, slot, function, where, value);
dev = pci_find_slot(bus, PCI_DEVFN(slot, function));
if (dev) {
dbg("using native pci_dev\n");
return pci_read_config_dword (dev, where, value);
}
result = build_dev (ops, bus, slot, function, &dev);
if (result)
return result;
result = pci_read_config_dword(dev, where, value);
kfree (dev->bus);
kfree (dev);
return result;
}
/**
* pci_write_config_byte_nodev - write a byte to a pci device
* @ops: pointer to a &struct pci_ops that will be used to write to the pci
* device
* @bus: the bus of the pci device to write to
* @slot: the pci slot number of the pci device to write to
* @function: the function of the pci device to write to
* @where: the location on the pci address space to write to
* @value: the value to write to the pci device
*
* Like pci_write_config_byte() but works for pci devices that do not have a
* pci_dev structure set up yet.
* Returns 0 on success.
*/
int pci_write_config_byte_nodev (struct pci_ops *ops, u8 bus, u8 slot, u8 function, int where, u8 value)
{
struct pci_dev *dev = NULL;
int result;
dbg("%p, %d, %d, %d, %d, %d\n", ops, bus, slot, function, where, value);
dev = pci_find_slot(bus, PCI_DEVFN(slot, function));
if (dev) {
dbg("using native pci_dev\n");
return pci_write_config_byte (dev, where, value);
}
result = build_dev (ops, bus, slot, function, &dev);
if (result)
return result;
result = pci_write_config_byte(dev, where, value);
kfree (dev->bus);
kfree (dev);
return result;
}
/**
* pci_write_config_word_nodev - write a word to a pci device
* @ops: pointer to a &struct pci_ops that will be used to write to the pci
* device
* @bus: the bus of the pci device to write to
* @slot: the pci slot number of the pci device to write to
* @function: the function of the pci device to write to
* @where: the location on the pci address space to write to
* @value: the value to write to the pci device
*
* Like pci_write_config_word() but works for pci devices that do not have a
* pci_dev structure set up yet.
* Returns 0 on success.
*/
int pci_write_config_word_nodev (struct pci_ops *ops, u8 bus, u8 slot, u8 function, int where, u16 value)
{
struct pci_dev *dev = NULL;
int result;
dbg("%p, %d, %d, %d, %d, %d\n", ops, bus, slot, function, where, value);
dev = pci_find_slot(bus, PCI_DEVFN(slot, function));
if (dev) {
dbg("using native pci_dev\n");
return pci_write_config_word (dev, where, value);
}
result = build_dev (ops, bus, slot, function, &dev);
if (result)
return result;
result = pci_write_config_word(dev, where, value);
kfree (dev->bus);
kfree (dev);
return result;
}
/**
* pci_write_config_dword_nodev - write a dword to a pci device
* @ops: pointer to a &struct pci_ops that will be used to write to the pci
* device
* @bus: the bus of the pci device to write to
* @slot: the pci slot number of the pci device to write to
* @function: the function of the pci device to write to
* @where: the location on the pci address space to write to
* @value: the value to write to the pci device
*
* Like pci_write_config_dword() but works for pci devices that do not have a
* pci_dev structure set up yet.
* Returns 0 on success.
*/
int pci_write_config_dword_nodev (struct pci_ops *ops, u8 bus, u8 slot, u8 function, int where, u32 value)
{
struct pci_dev *dev = NULL;
int result;
dbg("%p, %d, %d, %d, %d, %d\n", ops, bus, slot, function, where, value);
dev = pci_find_slot(bus, PCI_DEVFN(slot, function));
if (dev) {
dbg("using native pci_dev\n");
return pci_write_config_dword (dev, where, value);
}
result = build_dev (ops, bus, slot, function, &dev);
if (result)
return result;
result = pci_write_config_dword(dev, where, value);
kfree (dev->bus);
kfree (dev);
return result;
}
/*
* This is code that scans the pci buses.
* Every bus and every function is presented to a custom
......@@ -394,10 +155,4 @@ int pci_visit_dev (struct pci_visit *fn, struct pci_dev_wrapped *wrapped_dev, st
EXPORT_SYMBOL(pci_visit_dev);
EXPORT_SYMBOL(pci_read_config_byte_nodev);
EXPORT_SYMBOL(pci_read_config_word_nodev);
EXPORT_SYMBOL(pci_read_config_dword_nodev);
EXPORT_SYMBOL(pci_write_config_byte_nodev);
EXPORT_SYMBOL(pci_write_config_word_nodev);
EXPORT_SYMBOL(pci_write_config_dword_nodev);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment