From patchwork Tue Jul 10 15:54:08 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [RFC, 07/14] hotplug/PCI: use PCIe cap access functions to simplify implementation Date: Tue, 10 Jul 2012 05:54:08 -0000 From: Jiang Liu X-Patchwork-Id: 170230 Message-Id: <1341935655-5381-8-git-send-email-jiang.liu@huawei.com> To: Bjorn Helgaas , Don Dutile Cc: Jiang Liu , Yinghai Lu , Taku Izumi , "Rafael J . Wysocki" , Kenji Kaneshige , Yijing Wang , Keping Chen , linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, Jiang Liu From: Jiang Liu Use PCIe cap access functions to simplify pcihp_slot.c Signed-off-by: Jiang Liu --- drivers/pci/hotplug/pcihp_slot.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/pci/hotplug/pcihp_slot.c b/drivers/pci/hotplug/pcihp_slot.c index 8c05a18..08ca019 100644 --- a/drivers/pci/hotplug/pcihp_slot.c +++ b/drivers/pci/hotplug/pcihp_slot.c @@ -103,8 +103,7 @@ static void program_hpp_type2(struct pci_dev *dev, struct hpp_type2 *hpp) return; /* Find PCI Express capability */ - pos = pci_pcie_cap(dev); - if (!pos) + if (!pci_is_pcie(dev)) return; if (hpp->revision > 1) { @@ -114,16 +113,18 @@ static void program_hpp_type2(struct pci_dev *dev, struct hpp_type2 *hpp) } /* Initialize Device Control Register */ - pci_read_config_word(dev, pos + PCI_EXP_DEVCTL, ®16); + if (pci_pcie_cap_read_word(dev, PCI_EXP_DEVCTL, ®16)) + return; reg16 = (reg16 & hpp->pci_exp_devctl_and) | hpp->pci_exp_devctl_or; - pci_write_config_word(dev, pos + PCI_EXP_DEVCTL, reg16); + pci_pcie_cap_write_word(dev, PCI_EXP_DEVCTL, reg16); /* Initialize Link Control Register */ if (dev->subordinate) { - pci_read_config_word(dev, pos + PCI_EXP_LNKCTL, ®16); - reg16 = (reg16 & hpp->pci_exp_lnkctl_and) - | hpp->pci_exp_lnkctl_or; - pci_write_config_word(dev, pos + PCI_EXP_LNKCTL, reg16); + if (pci_pcie_cap_read_word(dev, PCI_EXP_LNKCTL, ®16)) { + reg16 = (reg16 & hpp->pci_exp_lnkctl_and) + | hpp->pci_exp_lnkctl_or; + pci_pcie_cap_write_word(dev, PCI_EXP_LNKCTL, reg16); + } } /* Find Advanced Error Reporting Enhanced Capability */