diff options
Diffstat (limited to 'arch/powerpc/platforms/powernv/pci.h')
-rw-r--r-- | arch/powerpc/platforms/powernv/pci.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h index 25d76c4df50b..d633c64e05a1 100644 --- a/arch/powerpc/platforms/powernv/pci.h +++ b/arch/powerpc/platforms/powernv/pci.h | |||
@@ -66,15 +66,43 @@ struct pnv_ioda_pe { | |||
66 | struct list_head list; | 66 | struct list_head list; |
67 | }; | 67 | }; |
68 | 68 | ||
69 | /* IOC dependent EEH operations */ | ||
70 | #ifdef CONFIG_EEH | ||
71 | struct pnv_eeh_ops { | ||
72 | int (*post_init)(struct pci_controller *hose); | ||
73 | int (*set_option)(struct eeh_pe *pe, int option); | ||
74 | int (*get_state)(struct eeh_pe *pe); | ||
75 | int (*reset)(struct eeh_pe *pe, int option); | ||
76 | int (*get_log)(struct eeh_pe *pe, int severity, | ||
77 | char *drv_log, unsigned long len); | ||
78 | int (*configure_bridge)(struct eeh_pe *pe); | ||
79 | int (*next_error)(struct eeh_pe **pe); | ||
80 | }; | ||
81 | |||
82 | #define PNV_EEH_STATE_ENABLED (1 << 0) /* EEH enabled */ | ||
83 | #define PNV_EEH_STATE_REMOVED (1 << 1) /* PHB removed */ | ||
84 | |||
85 | #endif /* CONFIG_EEH */ | ||
86 | |||
69 | struct pnv_phb { | 87 | struct pnv_phb { |
70 | struct pci_controller *hose; | 88 | struct pci_controller *hose; |
71 | enum pnv_phb_type type; | 89 | enum pnv_phb_type type; |
72 | enum pnv_phb_model model; | 90 | enum pnv_phb_model model; |
91 | u64 hub_id; | ||
73 | u64 opal_id; | 92 | u64 opal_id; |
74 | void __iomem *regs; | 93 | void __iomem *regs; |
75 | int initialized; | 94 | int initialized; |
76 | spinlock_t lock; | 95 | spinlock_t lock; |
77 | 96 | ||
97 | #ifdef CONFIG_EEH | ||
98 | struct pnv_eeh_ops *eeh_ops; | ||
99 | int eeh_state; | ||
100 | #endif | ||
101 | |||
102 | #ifdef CONFIG_DEBUG_FS | ||
103 | struct dentry *dbgfs; | ||
104 | #endif | ||
105 | |||
78 | #ifdef CONFIG_PCI_MSI | 106 | #ifdef CONFIG_PCI_MSI |
79 | unsigned int msi_base; | 107 | unsigned int msi_base; |
80 | unsigned int msi32_support; | 108 | unsigned int msi32_support; |
@@ -150,7 +178,14 @@ struct pnv_phb { | |||
150 | }; | 178 | }; |
151 | 179 | ||
152 | extern struct pci_ops pnv_pci_ops; | 180 | extern struct pci_ops pnv_pci_ops; |
181 | #ifdef CONFIG_EEH | ||
182 | extern struct pnv_eeh_ops ioda_eeh_ops; | ||
183 | #endif | ||
153 | 184 | ||
185 | int pnv_pci_cfg_read(struct device_node *dn, | ||
186 | int where, int size, u32 *val); | ||
187 | int pnv_pci_cfg_write(struct device_node *dn, | ||
188 | int where, int size, u32 val); | ||
154 | extern void pnv_pci_setup_iommu_table(struct iommu_table *tbl, | 189 | extern void pnv_pci_setup_iommu_table(struct iommu_table *tbl, |
155 | void *tce_mem, u64 tce_size, | 190 | void *tce_mem, u64 tce_size, |
156 | u64 dma_offset); | 191 | u64 dma_offset); |