diff options
Diffstat (limited to 'arch/powerpc/platforms/powernv/pci.h')
| -rw-r--r-- | arch/powerpc/platforms/powernv/pci.h | 26 | 
1 files changed, 16 insertions, 10 deletions
diff --git a/arch/powerpc/platforms/powernv/pci.h b/arch/powerpc/platforms/powernv/pci.h index 7cfb7c883de..48dc4bb856a 100644 --- a/arch/powerpc/platforms/powernv/pci.h +++ b/arch/powerpc/platforms/powernv/pci.h @@ -4,9 +4,9 @@  struct pci_dn;  enum pnv_phb_type { -	PNV_PHB_P5IOC2, -	PNV_PHB_IODA1, -	PNV_PHB_IODA2, +	PNV_PHB_P5IOC2	= 0, +	PNV_PHB_IODA1	= 1, +	PNV_PHB_IODA2	= 2,  };  /* Precise PHB model for error management */ @@ -14,6 +14,7 @@ enum pnv_phb_model {  	PNV_PHB_MODEL_UNKNOWN,  	PNV_PHB_MODEL_P5IOC2,  	PNV_PHB_MODEL_P7IOC, +	PNV_PHB_MODEL_PHB3,  };  #define PNV_PCI_DIAG_BUF_SIZE	4096 @@ -22,8 +23,10 @@ enum pnv_phb_model {  #define PNV_IODA_PE_BUS_ALL	(1 << 2)	/* PE has subordinate buses	*/  /* Data associated with a PE, including IOMMU tracking etc.. */ +struct pnv_phb;  struct pnv_ioda_pe {  	unsigned long		flags; +	struct pnv_phb		*phb;  	/* A PE can be associated with a single device or an  	 * entire bus (& children). In the former case, pdev @@ -73,15 +76,13 @@ struct pnv_phb {  	spinlock_t		lock;  #ifdef CONFIG_PCI_MSI -	unsigned long		*msi_map;  	unsigned int		msi_base; -	unsigned int		msi_count; -	unsigned int		msi_next;  	unsigned int		msi32_support; +	struct msi_bitmap	msi_bmp;  #endif  	int (*msi_setup)(struct pnv_phb *phb, struct pci_dev *dev, -			 unsigned int hwirq, unsigned int is_64, -			 struct msi_msg *msg); +			 unsigned int hwirq, unsigned int virq, +			 unsigned int is_64, struct msi_msg *msg);  	void (*dma_dev_setup)(struct pnv_phb *phb, struct pci_dev *pdev);  	void (*fixup_phb)(struct pci_controller *hose);  	u32 (*bdfn_to_pe)(struct pnv_phb *phb, struct pci_bus *bus, u32 devfn); @@ -109,6 +110,10 @@ struct pnv_phb {  			unsigned int		*io_segmap;  			struct pnv_ioda_pe	*pe_array; +			/* IRQ chip */ +			int			irq_chip_init; +			struct irq_chip		irq_chip; +  			/* Sorted list of used PE's based  			 * on the sequence of creation  			 */ @@ -150,6 +155,7 @@ extern void pnv_pci_setup_iommu_table(struct iommu_table *tbl,  				      u64 dma_offset);  extern void pnv_pci_init_p5ioc2_hub(struct device_node *np);  extern void pnv_pci_init_ioda_hub(struct device_node *np); - - +extern void pnv_pci_init_ioda2_phb(struct device_node *np); +extern void pnv_pci_ioda_tce_invalidate(struct iommu_table *tbl, +					u64 *startp, u64 *endp);  #endif /* __POWERNV_PCI_H */  |