Lines Matching refs:pdn

289 static int pnv_eeh_cap_start(struct pci_dn *pdn)  in pnv_eeh_cap_start()  argument
293 if (!pdn) in pnv_eeh_cap_start()
296 pnv_pci_cfg_read(pdn, PCI_STATUS, 2, &status); in pnv_eeh_cap_start()
303 static int pnv_eeh_find_cap(struct pci_dn *pdn, int cap) in pnv_eeh_find_cap() argument
305 int pos = pnv_eeh_cap_start(pdn); in pnv_eeh_find_cap()
313 pnv_pci_cfg_read(pdn, pos, 1, &pos); in pnv_eeh_find_cap()
318 pnv_pci_cfg_read(pdn, pos + PCI_CAP_LIST_ID, 1, &id); in pnv_eeh_find_cap()
333 static int pnv_eeh_find_ecap(struct pci_dn *pdn, int cap) in pnv_eeh_find_ecap() argument
335 struct eeh_dev *edev = pdn_to_eeh_dev(pdn); in pnv_eeh_find_ecap()
341 if (pnv_pci_cfg_read(pdn, pos, 4, &header) != PCIBIOS_SUCCESSFUL) in pnv_eeh_find_ecap()
354 if (pnv_pci_cfg_read(pdn, pos, 4, &header) != PCIBIOS_SUCCESSFUL) in pnv_eeh_find_ecap()
378 static void *pnv_eeh_probe(struct pci_dn *pdn, void *data) in pnv_eeh_probe() argument
380 struct pci_controller *hose = pdn->phb; in pnv_eeh_probe()
382 struct eeh_dev *edev = pdn_to_eeh_dev(pdn); in pnv_eeh_probe()
396 if ((pdn->class_code >> 8) == PCI_CLASS_BRIDGE_ISA) in pnv_eeh_probe()
400 edev->class_code = pdn->class_code; in pnv_eeh_probe()
402 edev->pcix_cap = pnv_eeh_find_cap(pdn, PCI_CAP_ID_PCIX); in pnv_eeh_probe()
403 edev->pcie_cap = pnv_eeh_find_cap(pdn, PCI_CAP_ID_EXP); in pnv_eeh_probe()
404 edev->aer_cap = pnv_eeh_find_ecap(pdn, PCI_EXT_CAP_ID_ERR); in pnv_eeh_probe()
408 pnv_pci_cfg_read(pdn, edev->pcie_cap + PCI_EXP_FLAGS, in pnv_eeh_probe()
418 edev->config_addr = (pdn->busno << 8) | (pdn->devfn); in pnv_eeh_probe()
425 __func__, hose->global_number, pdn->busno, in pnv_eeh_probe()
426 PCI_SLOT(pdn->devfn), PCI_FUNC(pdn->devfn), ret); in pnv_eeh_probe()
446 if ((pdn->vendor_id == PCI_VENDOR_ID_BROADCOM && in pnv_eeh_probe()
447 pdn->device_id == 0x1657) || in pnv_eeh_probe()
448 (pdn->vendor_id == PCI_VENDOR_ID_BROADCOM && in pnv_eeh_probe()
449 pdn->device_id == 0x168e)) in pnv_eeh_probe()
460 pdn->busno); in pnv_eeh_probe()
848 struct pci_dn *pdn = pci_get_pdn_by_devfn(dev->bus, dev->devfn); in pnv_eeh_bridge_reset() local
849 struct eeh_dev *edev = pdn_to_eeh_dev(pdn); in pnv_eeh_bridge_reset()
862 eeh_ops->read_config(pdn, aer + PCI_ERR_UNCOR_MASK, in pnv_eeh_bridge_reset()
865 eeh_ops->write_config(pdn, aer + PCI_ERR_UNCOR_MASK, in pnv_eeh_bridge_reset()
869 eeh_ops->read_config(pdn, PCI_BRIDGE_CONTROL, 2, &ctrl); in pnv_eeh_bridge_reset()
871 eeh_ops->write_config(pdn, PCI_BRIDGE_CONTROL, 2, ctrl); in pnv_eeh_bridge_reset()
876 eeh_ops->read_config(pdn, PCI_BRIDGE_CONTROL, 2, &ctrl); in pnv_eeh_bridge_reset()
878 eeh_ops->write_config(pdn, PCI_BRIDGE_CONTROL, 2, ctrl); in pnv_eeh_bridge_reset()
884 eeh_ops->read_config(pdn, aer + PCI_ERR_UNCOR_MASK, in pnv_eeh_bridge_reset()
887 eeh_ops->write_config(pdn, aer + PCI_ERR_UNCOR_MASK, in pnv_eeh_bridge_reset()
1105 static inline bool pnv_eeh_cfg_blocked(struct pci_dn *pdn) in pnv_eeh_cfg_blocked() argument
1107 struct eeh_dev *edev = pdn_to_eeh_dev(pdn); in pnv_eeh_cfg_blocked()
1118 static int pnv_eeh_read_config(struct pci_dn *pdn, in pnv_eeh_read_config() argument
1121 if (!pdn) in pnv_eeh_read_config()
1124 if (pnv_eeh_cfg_blocked(pdn)) { in pnv_eeh_read_config()
1129 return pnv_pci_cfg_read(pdn, where, size, val); in pnv_eeh_read_config()
1132 static int pnv_eeh_write_config(struct pci_dn *pdn, in pnv_eeh_write_config() argument
1135 if (!pdn) in pnv_eeh_write_config()
1138 if (pnv_eeh_cfg_blocked(pdn)) in pnv_eeh_write_config()
1141 return pnv_pci_cfg_write(pdn, where, size, val); in pnv_eeh_write_config()
1486 static int pnv_eeh_restore_config(struct pci_dn *pdn) in pnv_eeh_restore_config() argument
1488 struct eeh_dev *edev = pdn_to_eeh_dev(pdn); in pnv_eeh_restore_config()