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); |
