diff options
Diffstat (limited to 'drivers/pci/controller/dwc/pcie-designware.h')
| -rw-r--r-- | drivers/pci/controller/dwc/pcie-designware.h | 46 | 
1 files changed, 32 insertions, 14 deletions
| diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index f8e5431a207b..53c4c8f399c8 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -51,9 +51,8 @@  /* DWC PCIe controller capabilities */  #define DW_PCIE_CAP_REQ_RES		0 -#define DW_PCIE_CAP_EDMA_UNROLL		1 -#define DW_PCIE_CAP_IATU_UNROLL		2 -#define DW_PCIE_CAP_CDM_CHECK		3 +#define DW_PCIE_CAP_IATU_UNROLL		1 +#define DW_PCIE_CAP_CDM_CHECK		2  #define dw_pcie_cap_is(_pci, _cap) \  	test_bit(DW_PCIE_CAP_ ## _cap, &(_pci)->caps) @@ -63,14 +62,16 @@  /* Parameters for the waiting for link up routine */  #define LINK_WAIT_MAX_RETRIES		10 -#define LINK_WAIT_USLEEP_MIN		90000 -#define LINK_WAIT_USLEEP_MAX		100000 +#define LINK_WAIT_SLEEP_MS		90  /* Parameters for the waiting for iATU enabled routine */  #define LINK_WAIT_MAX_IATU_RETRIES	5  #define LINK_WAIT_IATU			9  /* Synopsys-specific PCIe configuration registers */ +#define PCIE_PORT_FORCE			0x708 +#define PORT_FORCE_DO_DESKEW_FOR_SRIS	BIT(23) +  #define PCIE_PORT_AFR			0x70C  #define PORT_AFR_N_FTS_MASK		GENMASK(15, 8)  #define PORT_AFR_N_FTS(n)		FIELD_PREP(PORT_AFR_N_FTS_MASK, n) @@ -92,6 +93,9 @@  #define PORT_LINK_MODE_4_LANES		PORT_LINK_MODE(0x7)  #define PORT_LINK_MODE_8_LANES		PORT_LINK_MODE(0xf) +#define PCIE_PORT_LANE_SKEW		0x714 +#define PORT_LANE_SKEW_INSERT_MASK	GENMASK(23, 0) +  #define PCIE_PORT_DEBUG0		0x728  #define PORT_LOGIC_LTSSM_STATE_MASK	0x1f  #define PORT_LOGIC_LTSSM_STATE_L0	0x11 @@ -148,11 +152,13 @@  #define PCIE_ATU_TYPE_IO		0x2  #define PCIE_ATU_TYPE_CFG0		0x4  #define PCIE_ATU_TYPE_CFG1		0x5 +#define PCIE_ATU_TYPE_MSG		0x10  #define PCIE_ATU_TD			BIT(8)  #define PCIE_ATU_FUNC_NUM(pf)           ((pf) << 20)  #define PCIE_ATU_REGION_CTRL2		0x004  #define PCIE_ATU_ENABLE			BIT(31)  #define PCIE_ATU_BAR_MODE_ENABLE	BIT(30) +#define PCIE_ATU_INHIBIT_PAYLOAD	BIT(22)  #define PCIE_ATU_FUNC_NUM_MATCH_EN      BIT(19)  #define PCIE_ATU_LOWER_BASE		0x008  #define PCIE_ATU_UPPER_BASE		0x00C @@ -299,6 +305,17 @@ enum dw_pcie_ltssm {  	DW_PCIE_LTSSM_UNKNOWN = 0xFFFFFFFF,  }; +struct dw_pcie_ob_atu_cfg { +	int index; +	int type; +	u8 func_no; +	u8 code; +	u8 routing; +	u64 cpu_addr; +	u64 pci_addr; +	u64 size; +}; +  struct dw_pcie_host_ops {  	int (*init)(struct dw_pcie_rp *pp);  	void (*deinit)(struct dw_pcie_rp *pp); @@ -328,6 +345,9 @@ struct dw_pcie_rp {  	struct pci_host_bridge  *bridge;  	raw_spinlock_t		lock;  	DECLARE_BITMAP(msi_irq_in_use, MAX_MSI_IRQS); +	bool			use_atu_msg; +	int			msg_atu_index; +	struct resource		*msg_res;  };  struct dw_pcie_ep_ops { @@ -433,10 +453,8 @@ void dw_pcie_write_dbi2(struct dw_pcie *pci, u32 reg, size_t size, u32 val);  int dw_pcie_link_up(struct dw_pcie *pci);  void dw_pcie_upconfig_setup(struct dw_pcie *pci);  int dw_pcie_wait_for_link(struct dw_pcie *pci); -int dw_pcie_prog_outbound_atu(struct dw_pcie *pci, int index, int type, -			      u64 cpu_addr, u64 pci_addr, u64 size); -int dw_pcie_prog_ep_outbound_atu(struct dw_pcie *pci, u8 func_no, int index, -				 int type, u64 cpu_addr, u64 pci_addr, u64 size); +int dw_pcie_prog_outbound_atu(struct dw_pcie *pci, +			      const struct dw_pcie_ob_atu_cfg *atu);  int dw_pcie_prog_inbound_atu(struct dw_pcie *pci, int index, int type,  			     u64 cpu_addr, u64 pci_addr, u64 size);  int dw_pcie_prog_ep_inbound_atu(struct dw_pcie *pci, u8 func_no, int index, @@ -668,9 +686,9 @@ static inline void __iomem *dw_pcie_own_conf_map_bus(struct pci_bus *bus,  #ifdef CONFIG_PCIE_DW_EP  void dw_pcie_ep_linkup(struct dw_pcie_ep *ep); +void dw_pcie_ep_linkdown(struct dw_pcie_ep *ep);  int dw_pcie_ep_init(struct dw_pcie_ep *ep);  int dw_pcie_ep_init_registers(struct dw_pcie_ep *ep); -void dw_pcie_ep_init_notify(struct dw_pcie_ep *ep);  void dw_pcie_ep_deinit(struct dw_pcie_ep *ep);  void dw_pcie_ep_cleanup(struct dw_pcie_ep *ep);  int dw_pcie_ep_raise_intx_irq(struct dw_pcie_ep *ep, u8 func_no); @@ -688,18 +706,18 @@ static inline void dw_pcie_ep_linkup(struct dw_pcie_ep *ep)  {  } -static inline int dw_pcie_ep_init(struct dw_pcie_ep *ep) +static inline void dw_pcie_ep_linkdown(struct dw_pcie_ep *ep)  { -	return 0;  } -static inline int dw_pcie_ep_init_registers(struct dw_pcie_ep *ep) +static inline int dw_pcie_ep_init(struct dw_pcie_ep *ep)  {  	return 0;  } -static inline void dw_pcie_ep_init_notify(struct dw_pcie_ep *ep) +static inline int dw_pcie_ep_init_registers(struct dw_pcie_ep *ep)  { +	return 0;  }  static inline void dw_pcie_ep_deinit(struct dw_pcie_ep *ep) |