PCIe port bus: use pci_pcie_cap()
Use pci_pcie_cap() instead of pci_find_capability() to get PCIe capability offset in PCI Express Port Bus driver. This avoids unnecessary serarch in PCI configuration space. Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
parent
39a53062cb
commit
dba90dfe48
@ -108,7 +108,7 @@ static int pcie_port_enable_msix(struct pci_dev *dev, int *vectors, int mask)
|
|||||||
* the value in this field indicates which MSI-X Table entry is
|
* the value in this field indicates which MSI-X Table entry is
|
||||||
* used to generate the interrupt message."
|
* used to generate the interrupt message."
|
||||||
*/
|
*/
|
||||||
pos = pci_find_capability(dev, PCI_CAP_ID_EXP);
|
pos = pci_pcie_cap(dev);
|
||||||
pci_read_config_word(dev, pos + PCIE_CAPABILITIES_REG, ®16);
|
pci_read_config_word(dev, pos + PCIE_CAPABILITIES_REG, ®16);
|
||||||
entry = (reg16 >> 9) & PCIE_PORT_MSI_VECTOR_MASK;
|
entry = (reg16 >> 9) & PCIE_PORT_MSI_VECTOR_MASK;
|
||||||
if (entry >= nr_entries)
|
if (entry >= nr_entries)
|
||||||
@ -226,7 +226,7 @@ static int get_port_device_capability(struct pci_dev *dev)
|
|||||||
u16 reg16;
|
u16 reg16;
|
||||||
u32 reg32;
|
u32 reg32;
|
||||||
|
|
||||||
pos = pci_find_capability(dev, PCI_CAP_ID_EXP);
|
pos = pci_pcie_cap(dev);
|
||||||
pci_read_config_word(dev, pos + PCIE_CAPABILITIES_REG, ®16);
|
pci_read_config_word(dev, pos + PCIE_CAPABILITIES_REG, ®16);
|
||||||
/* Hot-Plug Capable */
|
/* Hot-Plug Capable */
|
||||||
if (reg16 & PORT_TO_SLOT_MASK) {
|
if (reg16 & PORT_TO_SLOT_MASK) {
|
||||||
@ -305,7 +305,8 @@ int pcie_port_device_probe(struct pci_dev *dev)
|
|||||||
int pos, type;
|
int pos, type;
|
||||||
u16 reg;
|
u16 reg;
|
||||||
|
|
||||||
if (!(pos = pci_find_capability(dev, PCI_CAP_ID_EXP)))
|
pos = pci_pcie_cap(dev);
|
||||||
|
if (!pos)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
pci_read_config_word(dev, pos + PCIE_CAPABILITIES_REG, ®);
|
pci_read_config_word(dev, pos + PCIE_CAPABILITIES_REG, ®);
|
||||||
@ -327,7 +328,7 @@ int pcie_port_device_probe(struct pci_dev *dev)
|
|||||||
int pcie_port_device_register(struct pci_dev *dev)
|
int pcie_port_device_register(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
struct pcie_port_data *port_data;
|
struct pcie_port_data *port_data;
|
||||||
int status, capabilities, irq_mode, i, nr_serv;
|
int status, capabilities, irq_mode, i, nr_serv, pos;
|
||||||
int vectors[PCIE_PORT_DEVICE_MAXSERVICES];
|
int vectors[PCIE_PORT_DEVICE_MAXSERVICES];
|
||||||
u16 reg16;
|
u16 reg16;
|
||||||
|
|
||||||
@ -337,9 +338,8 @@ int pcie_port_device_register(struct pci_dev *dev)
|
|||||||
pci_set_drvdata(dev, port_data);
|
pci_set_drvdata(dev, port_data);
|
||||||
|
|
||||||
/* Get port type */
|
/* Get port type */
|
||||||
pci_read_config_word(dev,
|
pos = pci_pcie_cap(dev);
|
||||||
pci_find_capability(dev, PCI_CAP_ID_EXP) +
|
pci_read_config_word(dev, pos + PCIE_CAPABILITIES_REG, ®16);
|
||||||
PCIE_CAPABILITIES_REG, ®16);
|
|
||||||
port_data->port_type = (reg16 >> 4) & PORT_TYPE_MASK;
|
port_data->port_type = (reg16 >> 4) & PORT_TYPE_MASK;
|
||||||
|
|
||||||
capabilities = get_port_device_capability(dev);
|
capabilities = get_port_device_capability(dev);
|
||||||
|
Loading…
Reference in New Issue
Block a user