diff options
Diffstat (limited to 'drivers/pci/host/pcie-designware.h')
| -rw-r--r-- | drivers/pci/host/pcie-designware.h | 31 | 
1 files changed, 21 insertions, 10 deletions
diff --git a/drivers/pci/host/pcie-designware.h b/drivers/pci/host/pcie-designware.h index 133820f1da9..77f592faa7b 100644 --- a/drivers/pci/host/pcie-designware.h +++ b/drivers/pci/host/pcie-designware.h @@ -11,6 +11,9 @@   * published by the Free Software Foundation.   */ +#ifndef _PCIE_DESIGNWARE_H +#define _PCIE_DESIGNWARE_H +  struct pcie_port_info {  	u32		cfg0_size;  	u32		cfg1_size; @@ -20,6 +23,14 @@ struct pcie_port_info {  	phys_addr_t	mem_bus_addr;  }; +/* + * Maximum number of MSI IRQs can be 256 per controller. But keep + * it 32 as of now. Probably we will never need more than 32. If needed, + * then increment it in multiple of 32. + */ +#define MAX_MSI_IRQS			32 +#define MAX_MSI_CTRLS			(MAX_MSI_IRQS / 32) +  struct pcie_port {  	struct device		*dev;  	u8			root_bus_nr; @@ -30,7 +41,6 @@ struct pcie_port {  	void __iomem		*va_cfg1_base;  	u64			io_base;  	u64			mem_base; -	spinlock_t		conf_lock;  	struct resource		cfg;  	struct resource		io;  	struct resource		mem; @@ -38,6 +48,10 @@ struct pcie_port {  	int			irq;  	u32			lanes;  	struct pcie_host_ops	*ops; +	int			msi_irq; +	struct irq_domain	*irq_domain; +	unsigned long		msi_data; +	DECLARE_BITMAP(msi_irq_in_use, MAX_MSI_IRQS);  };  struct pcie_host_ops { @@ -51,15 +65,12 @@ struct pcie_host_ops {  	void (*host_init)(struct pcie_port *pp);  }; -extern unsigned long global_io_offset; - -int cfg_read(void __iomem *addr, int where, int size, u32 *val); -int cfg_write(void __iomem *addr, int where, int size, u32 val); -int dw_pcie_wr_own_conf(struct pcie_port *pp, int where, int size, u32 val); -int dw_pcie_rd_own_conf(struct pcie_port *pp, int where, int size, u32 *val); +int dw_pcie_cfg_read(void __iomem *addr, int where, int size, u32 *val); +int dw_pcie_cfg_write(void __iomem *addr, int where, int size, u32 val); +irqreturn_t dw_handle_msi_irq(struct pcie_port *pp); +void dw_pcie_msi_init(struct pcie_port *pp);  int dw_pcie_link_up(struct pcie_port *pp);  void dw_pcie_setup_rc(struct pcie_port *pp);  int dw_pcie_host_init(struct pcie_port *pp); -int dw_pcie_setup(int nr, struct pci_sys_data *sys); -struct pci_bus *dw_pcie_scan_bus(int nr, struct pci_sys_data *sys); -int dw_pcie_map_irq(const struct pci_dev *dev, u8 slot, u8 pin); + +#endif /* _PCIE_DESIGNWARE_H */  | 
