Lines Matching refs:pdn

121 static int pseries_eeh_cap_start(struct pci_dn *pdn)  in pseries_eeh_cap_start()  argument
125 if (!pdn) in pseries_eeh_cap_start()
128 rtas_read_config(pdn, PCI_STATUS, 2, &status); in pseries_eeh_cap_start()
136 static int pseries_eeh_find_cap(struct pci_dn *pdn, int cap) in pseries_eeh_find_cap() argument
138 int pos = pseries_eeh_cap_start(pdn); in pseries_eeh_find_cap()
146 rtas_read_config(pdn, pos, 1, &pos); in pseries_eeh_find_cap()
150 rtas_read_config(pdn, pos + PCI_CAP_LIST_ID, 1, &id); in pseries_eeh_find_cap()
161 static int pseries_eeh_find_ecap(struct pci_dn *pdn, int cap) in pseries_eeh_find_ecap() argument
163 struct eeh_dev *edev = pdn_to_eeh_dev(pdn); in pseries_eeh_find_ecap()
170 if (rtas_read_config(pdn, pos, 4, &header) != PCIBIOS_SUCCESSFUL) in pseries_eeh_find_ecap()
183 if (rtas_read_config(pdn, pos, 4, &header) != PCIBIOS_SUCCESSFUL) in pseries_eeh_find_ecap()
199 static void *pseries_eeh_probe(struct pci_dn *pdn, void *data) in pseries_eeh_probe() argument
208 edev = pdn_to_eeh_dev(pdn); in pseries_eeh_probe()
213 if (!pdn->vendor_id || !pdn->device_id || !pdn->class_code) in pseries_eeh_probe()
217 if ((pdn->class_code >> 8) == PCI_CLASS_BRIDGE_ISA) in pseries_eeh_probe()
225 edev->class_code = pdn->class_code; in pseries_eeh_probe()
226 edev->pcix_cap = pseries_eeh_find_cap(pdn, PCI_CAP_ID_PCIX); in pseries_eeh_probe()
227 edev->pcie_cap = pseries_eeh_find_cap(pdn, PCI_CAP_ID_EXP); in pseries_eeh_probe()
228 edev->aer_cap = pseries_eeh_find_ecap(pdn, PCI_EXT_CAP_ID_ERR); in pseries_eeh_probe()
233 rtas_read_config(pdn, edev->pcie_cap + PCI_EXP_FLAGS, in pseries_eeh_probe()
246 pe.config_addr = (pdn->busno << 16) | (pdn->devfn << 8); in pseries_eeh_probe()
252 edev->config_addr = (pdn->busno << 16) | (pdn->devfn << 8); in pseries_eeh_probe()
269 __func__, pdn->busno, PCI_SLOT(pdn->devfn), in pseries_eeh_probe()
270 PCI_FUNC(pdn->devfn), pe.phb->global_number, in pseries_eeh_probe()
272 } else if (pdn->parent && pdn_to_eeh_dev(pdn->parent) && in pseries_eeh_probe()
273 (pdn_to_eeh_dev(pdn->parent))->pe) { in pseries_eeh_probe()
277 edev->config_addr = pdn_to_eeh_dev(pdn->parent)->config_addr; in pseries_eeh_probe()
278 edev->pe_config_addr = pdn_to_eeh_dev(pdn->parent)->pe_config_addr; in pseries_eeh_probe()
682 static int pseries_eeh_read_config(struct pci_dn *pdn, int where, int size, u32 *val) in pseries_eeh_read_config() argument
684 return rtas_read_config(pdn, where, size, val); in pseries_eeh_read_config()
696 static int pseries_eeh_write_config(struct pci_dn *pdn, int where, int size, u32 val) in pseries_eeh_write_config() argument
698 return rtas_write_config(pdn, where, size, val); in pseries_eeh_write_config()