diff options
Diffstat (limited to 'arch/powerpc/include/asm/ppc-pci.h')
-rw-r--r-- | arch/powerpc/include/asm/ppc-pci.h | 91 |
1 files changed, 9 insertions, 82 deletions
diff --git a/arch/powerpc/include/asm/ppc-pci.h b/arch/powerpc/include/asm/ppc-pci.h index 6d422979ebaf..80fa704d410f 100644 --- a/arch/powerpc/include/asm/ppc-pci.h +++ b/arch/powerpc/include/asm/ppc-pci.h | |||
@@ -45,94 +45,21 @@ extern void init_pci_config_tokens (void); | |||
45 | extern unsigned long get_phb_buid (struct device_node *); | 45 | extern unsigned long get_phb_buid (struct device_node *); |
46 | extern int rtas_setup_phb(struct pci_controller *phb); | 46 | extern int rtas_setup_phb(struct pci_controller *phb); |
47 | 47 | ||
48 | extern unsigned long pci_probe_only; | ||
49 | |||
50 | /* ---- EEH internal-use-only related routines ---- */ | ||
51 | #ifdef CONFIG_EEH | 48 | #ifdef CONFIG_EEH |
52 | 49 | ||
50 | void pci_addr_cache_build(void); | ||
53 | void pci_addr_cache_insert_device(struct pci_dev *dev); | 51 | void pci_addr_cache_insert_device(struct pci_dev *dev); |
54 | void pci_addr_cache_remove_device(struct pci_dev *dev); | 52 | void pci_addr_cache_remove_device(struct pci_dev *dev); |
55 | void pci_addr_cache_build(void); | 53 | struct pci_dev *pci_addr_cache_get_device(unsigned long addr); |
56 | struct pci_dev *pci_get_device_by_addr(unsigned long addr); | 54 | void eeh_slot_error_detail(struct eeh_dev *edev, int severity); |
57 | 55 | int eeh_pci_enable(struct eeh_dev *edev, int function); | |
58 | /** | 56 | int eeh_reset_pe(struct eeh_dev *); |
59 | * eeh_slot_error_detail -- record and EEH error condition to the log | 57 | void eeh_restore_bars(struct eeh_dev *); |
60 | * @pdn: pci device node | ||
61 | * @severity: EEH_LOG_TEMP_FAILURE or EEH_LOG_PERM_FAILURE | ||
62 | * | ||
63 | * Obtains the EEH error details from the RTAS subsystem, | ||
64 | * and then logs these details with the RTAS error log system. | ||
65 | */ | ||
66 | #define EEH_LOG_TEMP_FAILURE 1 | ||
67 | #define EEH_LOG_PERM_FAILURE 2 | ||
68 | void eeh_slot_error_detail (struct pci_dn *pdn, int severity); | ||
69 | |||
70 | /** | ||
71 | * rtas_pci_enable - enable IO transfers for this slot | ||
72 | * @pdn: pci device node | ||
73 | * @function: either EEH_THAW_MMIO or EEH_THAW_DMA | ||
74 | * | ||
75 | * Enable I/O transfers to this slot | ||
76 | */ | ||
77 | #define EEH_THAW_MMIO 2 | ||
78 | #define EEH_THAW_DMA 3 | ||
79 | int rtas_pci_enable(struct pci_dn *pdn, int function); | ||
80 | |||
81 | /** | ||
82 | * rtas_set_slot_reset -- unfreeze a frozen slot | ||
83 | * @pdn: pci device node | ||
84 | * | ||
85 | * Clear the EEH-frozen condition on a slot. This routine | ||
86 | * does this by asserting the PCI #RST line for 1/8th of | ||
87 | * a second; this routine will sleep while the adapter is | ||
88 | * being reset. | ||
89 | * | ||
90 | * Returns a non-zero value if the reset failed. | ||
91 | */ | ||
92 | int rtas_set_slot_reset (struct pci_dn *); | ||
93 | int eeh_wait_for_slot_status(struct pci_dn *pdn, int max_wait_msecs); | ||
94 | |||
95 | /** | ||
96 | * eeh_restore_bars - Restore device configuration info. | ||
97 | * @pdn: pci device node | ||
98 | * | ||
99 | * A reset of a PCI device will clear out its config space. | ||
100 | * This routines will restore the config space for this | ||
101 | * device, and is children, to values previously obtained | ||
102 | * from the firmware. | ||
103 | */ | ||
104 | void eeh_restore_bars(struct pci_dn *); | ||
105 | |||
106 | /** | ||
107 | * rtas_configure_bridge -- firmware initialization of pci bridge | ||
108 | * @pdn: pci device node | ||
109 | * | ||
110 | * Ask the firmware to configure all PCI bridges devices | ||
111 | * located behind the indicated node. Required after a | ||
112 | * pci device reset. Does essentially the same hing as | ||
113 | * eeh_restore_bars, but for brdges, and lets firmware | ||
114 | * do the work. | ||
115 | */ | ||
116 | void rtas_configure_bridge(struct pci_dn *); | ||
117 | |||
118 | int rtas_write_config(struct pci_dn *, int where, int size, u32 val); | 58 | int rtas_write_config(struct pci_dn *, int where, int size, u32 val); |
119 | int rtas_read_config(struct pci_dn *, int where, int size, u32 *val); | 59 | int rtas_read_config(struct pci_dn *, int where, int size, u32 *val); |
120 | 60 | void eeh_mark_slot(struct device_node *dn, int mode_flag); | |
121 | /** | 61 | void eeh_clear_slot(struct device_node *dn, int mode_flag); |
122 | * eeh_mark_slot -- set mode flags for pertition endpoint | 62 | struct device_node *eeh_find_device_pe(struct device_node *dn); |
123 | * @pdn: pci device node | ||
124 | * | ||
125 | * mark and clear slots: find "partition endpoint" PE and set or | ||
126 | * clear the flags for each subnode of the PE. | ||
127 | */ | ||
128 | void eeh_mark_slot (struct device_node *dn, int mode_flag); | ||
129 | void eeh_clear_slot (struct device_node *dn, int mode_flag); | ||
130 | |||
131 | /** | ||
132 | * find_device_pe -- Find the associated "Partiationable Endpoint" PE | ||
133 | * @pdn: pci device node | ||
134 | */ | ||
135 | struct device_node * find_device_pe(struct device_node *dn); | ||
136 | 63 | ||
137 | void eeh_sysfs_add_device(struct pci_dev *pdev); | 64 | void eeh_sysfs_add_device(struct pci_dev *pdev); |
138 | void eeh_sysfs_remove_device(struct pci_dev *pdev); | 65 | void eeh_sysfs_remove_device(struct pci_dev *pdev); |