File Index
Files and directories
Sign in
FILE

pcie-cadence-lga-regs.h

File preview with syntax highlighting.

linux-6.19.14/drivers/pci/controller/cadence/pcie-cadence-lga-regs.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/*
  3 * Cadence PCIe controller driver.
  4 *
  5 * Copyright (c) 2017 Cadence
  6 * Author: Cyrille Pitchen <cyrille.pitchen@free-electrons.com>
  7 */
  8#ifndef _PCIE_CADENCE_LGA_REGS_H
  9#define _PCIE_CADENCE_LGA_REGS_H
 10
 11#include <linux/bitfield.h>
 12
 13/* Parameters for the waiting for link up routine */
 14#define LINK_WAIT_MAX_RETRIES	10
 15#define LINK_WAIT_USLEEP_MIN	90000
 16#define LINK_WAIT_USLEEP_MAX	100000
 17
 18/* Local Management Registers */
 19#define CDNS_PCIE_LM_BASE	0x00100000
 20
 21/* Vendor ID Register */
 22#define CDNS_PCIE_LM_ID		(CDNS_PCIE_LM_BASE + 0x0044)
 23#define  CDNS_PCIE_LM_ID_VENDOR_MASK	GENMASK(15, 0)
 24#define  CDNS_PCIE_LM_ID_VENDOR_SHIFT	0
 25#define  CDNS_PCIE_LM_ID_VENDOR(vid) \
 26	(((vid) << CDNS_PCIE_LM_ID_VENDOR_SHIFT) & CDNS_PCIE_LM_ID_VENDOR_MASK)
 27#define  CDNS_PCIE_LM_ID_SUBSYS_MASK	GENMASK(31, 16)
 28#define  CDNS_PCIE_LM_ID_SUBSYS_SHIFT	16
 29#define  CDNS_PCIE_LM_ID_SUBSYS(sub) \
 30	(((sub) << CDNS_PCIE_LM_ID_SUBSYS_SHIFT) & CDNS_PCIE_LM_ID_SUBSYS_MASK)
 31
 32/* Root Port Requester ID Register */
 33#define  CDNS_PCIE_LM_RP_RID		(CDNS_PCIE_LM_BASE + 0x0228)
 34#define  CDNS_PCIE_LM_RP_RID_MASK	GENMASK(15, 0)
 35#define  CDNS_PCIE_LM_RP_RID_SHIFT	0
 36#define  CDNS_PCIE_LM_RP_RID_(rid) \
 37	(((rid) << CDNS_PCIE_LM_RP_RID_SHIFT) & CDNS_PCIE_LM_RP_RID_MASK)
 38
 39/* Endpoint Bus and Device Number Register */
 40#define  CDNS_PCIE_LM_EP_ID		(CDNS_PCIE_LM_BASE + 0x022C)
 41#define  CDNS_PCIE_LM_EP_ID_DEV_MASK	GENMASK(4, 0)
 42#define  CDNS_PCIE_LM_EP_ID_DEV_SHIFT	0
 43#define  CDNS_PCIE_LM_EP_ID_BUS_MASK	GENMASK(15, 8)
 44#define  CDNS_PCIE_LM_EP_ID_BUS_SHIFT	8
 45
 46/* Endpoint Function f BAR b Configuration Registers */
 47#define CDNS_PCIE_LM_EP_FUNC_BAR_CFG(bar, fn) \
 48	(((bar) < BAR_4) ? CDNS_PCIE_LM_EP_FUNC_BAR_CFG0(fn) : CDNS_PCIE_LM_EP_FUNC_BAR_CFG1(fn))
 49#define CDNS_PCIE_LM_EP_FUNC_BAR_CFG0(fn) \
 50	(CDNS_PCIE_LM_BASE + 0x0240 + (fn) * 0x0008)
 51#define CDNS_PCIE_LM_EP_FUNC_BAR_CFG1(fn) \
 52	(CDNS_PCIE_LM_BASE + 0x0244 + (fn) * 0x0008)
 53#define CDNS_PCIE_LM_EP_VFUNC_BAR_CFG(bar, fn) \
 54	(((bar) < BAR_4) ? CDNS_PCIE_LM_EP_VFUNC_BAR_CFG0(fn) : CDNS_PCIE_LM_EP_VFUNC_BAR_CFG1(fn))
 55#define CDNS_PCIE_LM_EP_VFUNC_BAR_CFG0(fn) \
 56	(CDNS_PCIE_LM_BASE + 0x0280 + (fn) * 0x0008)
 57#define CDNS_PCIE_LM_EP_VFUNC_BAR_CFG1(fn) \
 58	(CDNS_PCIE_LM_BASE + 0x0284 + (fn) * 0x0008)
 59#define  CDNS_PCIE_LM_EP_FUNC_BAR_CFG_BAR_APERTURE_MASK(b) \
 60	(GENMASK(4, 0) << ((b) * 8))
 61#define  CDNS_PCIE_LM_EP_FUNC_BAR_CFG_BAR_APERTURE(b, a) \
 62	(((a) << ((b) * 8)) & CDNS_PCIE_LM_EP_FUNC_BAR_CFG_BAR_APERTURE_MASK(b))
 63#define  CDNS_PCIE_LM_EP_FUNC_BAR_CFG_BAR_CTRL_MASK(b) \
 64	(GENMASK(7, 5) << ((b) * 8))
 65#define  CDNS_PCIE_LM_EP_FUNC_BAR_CFG_BAR_CTRL(b, c) \
 66	(((c) << ((b) * 8 + 5)) & CDNS_PCIE_LM_EP_FUNC_BAR_CFG_BAR_CTRL_MASK(b))
 67
 68/* Endpoint Function Configuration Register */
 69#define CDNS_PCIE_LM_EP_FUNC_CFG	(CDNS_PCIE_LM_BASE + 0x02C0)
 70
 71/* Root Complex BAR Configuration Register */
 72#define CDNS_PCIE_LM_RC_BAR_CFG	(CDNS_PCIE_LM_BASE + 0x0300)
 73#define  CDNS_PCIE_LM_RC_BAR_CFG_BAR0_APERTURE_MASK	GENMASK(5, 0)
 74#define  CDNS_PCIE_LM_RC_BAR_CFG_BAR0_APERTURE(a) \
 75	(((a) << 0) & CDNS_PCIE_LM_RC_BAR_CFG_BAR0_APERTURE_MASK)
 76#define  CDNS_PCIE_LM_RC_BAR_CFG_BAR0_CTRL_MASK		GENMASK(8, 6)
 77#define  CDNS_PCIE_LM_RC_BAR_CFG_BAR0_CTRL(c) \
 78	(((c) << 6) & CDNS_PCIE_LM_RC_BAR_CFG_BAR0_CTRL_MASK)
 79#define  CDNS_PCIE_LM_RC_BAR_CFG_BAR1_APERTURE_MASK	GENMASK(13, 9)
 80#define  CDNS_PCIE_LM_RC_BAR_CFG_BAR1_APERTURE(a) \
 81	(((a) << 9) & CDNS_PCIE_LM_RC_BAR_CFG_BAR1_APERTURE_MASK)
 82#define  CDNS_PCIE_LM_RC_BAR_CFG_BAR1_CTRL_MASK		GENMASK(16, 14)
 83#define  CDNS_PCIE_LM_RC_BAR_CFG_BAR1_CTRL(c) \
 84	(((c) << 14) & CDNS_PCIE_LM_RC_BAR_CFG_BAR1_CTRL_MASK)
 85#define  CDNS_PCIE_LM_RC_BAR_CFG_PREFETCH_MEM_ENABLE	BIT(17)
 86#define  CDNS_PCIE_LM_RC_BAR_CFG_PREFETCH_MEM_32BITS	0
 87#define  CDNS_PCIE_LM_RC_BAR_CFG_PREFETCH_MEM_64BITS	BIT(18)
 88#define  CDNS_PCIE_LM_RC_BAR_CFG_IO_ENABLE		BIT(19)
 89#define  CDNS_PCIE_LM_RC_BAR_CFG_IO_16BITS		0
 90#define  CDNS_PCIE_LM_RC_BAR_CFG_IO_32BITS		BIT(20)
 91#define  CDNS_PCIE_LM_RC_BAR_CFG_CHECK_ENABLE		BIT(31)
 92
 93/* BAR control values applicable to both Endpoint Function and Root Complex */
 94#define  CDNS_PCIE_LM_BAR_CFG_CTRL_DISABLED		0x0
 95#define  CDNS_PCIE_LM_BAR_CFG_CTRL_IO_32BITS		0x1
 96#define  CDNS_PCIE_LM_BAR_CFG_CTRL_MEM_32BITS		0x4
 97#define  CDNS_PCIE_LM_BAR_CFG_CTRL_PREFETCH_MEM_32BITS	0x5
 98#define  CDNS_PCIE_LM_BAR_CFG_CTRL_MEM_64BITS		0x6
 99#define  CDNS_PCIE_LM_BAR_CFG_CTRL_PREFETCH_MEM_64BITS	0x7
100
101#define LM_RC_BAR_CFG_CTRL_DISABLED(bar)		\
102		(CDNS_PCIE_LM_BAR_CFG_CTRL_DISABLED << (((bar) * 8) + 6))
103#define LM_RC_BAR_CFG_CTRL_IO_32BITS(bar)		\
104		(CDNS_PCIE_LM_BAR_CFG_CTRL_IO_32BITS << (((bar) * 8) + 6))
105#define LM_RC_BAR_CFG_CTRL_MEM_32BITS(bar)		\
106		(CDNS_PCIE_LM_BAR_CFG_CTRL_MEM_32BITS << (((bar) * 8) + 6))
107#define LM_RC_BAR_CFG_CTRL_PREF_MEM_32BITS(bar)	\
108	(CDNS_PCIE_LM_BAR_CFG_CTRL_PREFETCH_MEM_32BITS << (((bar) * 8) + 6))
109#define LM_RC_BAR_CFG_CTRL_MEM_64BITS(bar)		\
110		(CDNS_PCIE_LM_BAR_CFG_CTRL_MEM_64BITS << (((bar) * 8) + 6))
111#define LM_RC_BAR_CFG_CTRL_PREF_MEM_64BITS(bar)	\
112	(CDNS_PCIE_LM_BAR_CFG_CTRL_PREFETCH_MEM_64BITS << (((bar) * 8) + 6))
113#define LM_RC_BAR_CFG_APERTURE(bar, aperture)		\
114					(((aperture) - 2) << ((bar) * 8))
115
116/* PTM Control Register */
117#define CDNS_PCIE_LM_PTM_CTRL		(CDNS_PCIE_LM_BASE + 0x0DA8)
118#define CDNS_PCIE_LM_TPM_CTRL_PTMRSEN	BIT(17)
119
120/*
121 * Endpoint Function Registers (PCI configuration space for endpoint functions)
122 */
123#define CDNS_PCIE_EP_FUNC_BASE(fn)	(((fn) << 12) & GENMASK(19, 12))
124
125#define CDNS_PCIE_EP_FUNC_MSI_CAP_OFFSET	0x90
126#define CDNS_PCIE_EP_FUNC_MSIX_CAP_OFFSET	0xB0
127#define CDNS_PCIE_EP_FUNC_DEV_CAP_OFFSET	0xC0
128#define CDNS_PCIE_EP_FUNC_SRIOV_CAP_OFFSET	0x200
129
130/* Endpoint PF Registers */
131#define CDNS_PCIE_CORE_PF_I_ARI_CAP_AND_CTRL(fn)	(0x144 + (fn) * 0x1000)
132#define CDNS_PCIE_ARI_CAP_NFN_MASK			GENMASK(15, 8)
133
134/* Root Port Registers (PCI configuration space for the root port function) */
135#define CDNS_PCIE_RP_BASE	0x00200000
136#define CDNS_PCIE_RP_CAP_OFFSET 0xC0
137
138/* Address Translation Registers */
139#define CDNS_PCIE_AT_BASE	0x00400000
140
141/* Region r Outbound AXI to PCIe Address Translation Register 0 */
142#define CDNS_PCIE_AT_OB_REGION_PCI_ADDR0(r) \
143	(CDNS_PCIE_AT_BASE + 0x0000 + ((r) & 0x1F) * 0x0020)
144#define  CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_NBITS_MASK	GENMASK(5, 0)
145#define  CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_NBITS(nbits) \
146	(((nbits) - 1) & CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_NBITS_MASK)
147#define  CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_DEVFN_MASK	GENMASK(19, 12)
148#define  CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_DEVFN(devfn) \
149	(((devfn) << 12) & CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_DEVFN_MASK)
150#define  CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_BUS_MASK	GENMASK(27, 20)
151#define  CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_BUS(bus) \
152	(((bus) << 20) & CDNS_PCIE_AT_OB_REGION_PCI_ADDR0_BUS_MASK)
153
154/* Region r Outbound AXI to PCIe Address Translation Register 1 */
155#define CDNS_PCIE_AT_OB_REGION_PCI_ADDR1(r) \
156	(CDNS_PCIE_AT_BASE + 0x0004 + ((r) & 0x1F) * 0x0020)
157
158/* Region r Outbound PCIe Descriptor Register 0 */
159#define CDNS_PCIE_AT_OB_REGION_DESC0(r) \
160	(CDNS_PCIE_AT_BASE + 0x0008 + ((r) & 0x1F) * 0x0020)
161#define  CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_MASK		GENMASK(3, 0)
162#define  CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_MEM		0x2
163#define  CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_IO		0x6
164#define  CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_CONF_TYPE0	0xA
165#define  CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_CONF_TYPE1	0xB
166#define  CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_NORMAL_MSG	0xC
167#define  CDNS_PCIE_AT_OB_REGION_DESC0_TYPE_VENDOR_MSG	0xD
168/* Bit 23 MUST be set in RC mode. */
169#define  CDNS_PCIE_AT_OB_REGION_DESC0_HARDCODED_RID	BIT(23)
170#define  CDNS_PCIE_AT_OB_REGION_DESC0_DEVFN_MASK	GENMASK(31, 24)
171#define  CDNS_PCIE_AT_OB_REGION_DESC0_DEVFN(devfn) \
172	(((devfn) << 24) & CDNS_PCIE_AT_OB_REGION_DESC0_DEVFN_MASK)
173
174/* Region r Outbound PCIe Descriptor Register 1 */
175#define CDNS_PCIE_AT_OB_REGION_DESC1(r)	\
176	(CDNS_PCIE_AT_BASE + 0x000C + ((r) & 0x1F) * 0x0020)
177#define  CDNS_PCIE_AT_OB_REGION_DESC1_BUS_MASK	GENMASK(7, 0)
178#define  CDNS_PCIE_AT_OB_REGION_DESC1_BUS(bus) \
179	((bus) & CDNS_PCIE_AT_OB_REGION_DESC1_BUS_MASK)
180
181/* Region r AXI Region Base Address Register 0 */
182#define CDNS_PCIE_AT_OB_REGION_CPU_ADDR0(r) \
183	(CDNS_PCIE_AT_BASE + 0x0018 + ((r) & 0x1F) * 0x0020)
184#define  CDNS_PCIE_AT_OB_REGION_CPU_ADDR0_NBITS_MASK	GENMASK(5, 0)
185#define  CDNS_PCIE_AT_OB_REGION_CPU_ADDR0_NBITS(nbits) \
186	(((nbits) - 1) & CDNS_PCIE_AT_OB_REGION_CPU_ADDR0_NBITS_MASK)
187
188/* Region r AXI Region Base Address Register 1 */
189#define CDNS_PCIE_AT_OB_REGION_CPU_ADDR1(r) \
190	(CDNS_PCIE_AT_BASE + 0x001C + ((r) & 0x1F) * 0x0020)
191
192/* Root Port BAR Inbound PCIe to AXI Address Translation Register */
193#define CDNS_PCIE_AT_IB_RP_BAR_ADDR0(bar) \
194	(CDNS_PCIE_AT_BASE + 0x0800 + (bar) * 0x0008)
195#define  CDNS_PCIE_AT_IB_RP_BAR_ADDR0_NBITS_MASK	GENMASK(5, 0)
196#define  CDNS_PCIE_AT_IB_RP_BAR_ADDR0_NBITS(nbits) \
197	(((nbits) - 1) & CDNS_PCIE_AT_IB_RP_BAR_ADDR0_NBITS_MASK)
198#define CDNS_PCIE_AT_IB_RP_BAR_ADDR1(bar) \
199	(CDNS_PCIE_AT_BASE + 0x0804 + (bar) * 0x0008)
200
201/* AXI link down register */
202#define CDNS_PCIE_AT_LINKDOWN (CDNS_PCIE_AT_BASE + 0x0824)
203
204/* LTSSM Capabilities register */
205#define CDNS_PCIE_LTSSM_CONTROL_CAP		(CDNS_PCIE_LM_BASE + 0x0054)
206#define  CDNS_PCIE_DETECT_QUIET_MIN_DELAY_MASK	GENMASK(2, 1)
207#define  CDNS_PCIE_DETECT_QUIET_MIN_DELAY_SHIFT 1
208#define  CDNS_PCIE_DETECT_QUIET_MIN_DELAY(delay) \
209	 (((delay) << CDNS_PCIE_DETECT_QUIET_MIN_DELAY_SHIFT) & \
210	 CDNS_PCIE_DETECT_QUIET_MIN_DELAY_MASK)
211
212#define CDNS_PCIE_RP_MAX_IB	0x3
213#define CDNS_PCIE_MAX_OB	32
214
215/* Endpoint Function BAR Inbound PCIe to AXI Address Translation Register */
216#define CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR0(fn, bar) \
217	(CDNS_PCIE_AT_BASE + 0x0840 + (fn) * 0x0040 + (bar) * 0x0008)
218#define CDNS_PCIE_AT_IB_EP_FUNC_BAR_ADDR1(fn, bar) \
219	(CDNS_PCIE_AT_BASE + 0x0844 + (fn) * 0x0040 + (bar) * 0x0008)
220
221/* Normal/Vendor specific message access: offset inside some outbound region */
222#define CDNS_PCIE_NORMAL_MSG_ROUTING_MASK	GENMASK(7, 5)
223#define CDNS_PCIE_NORMAL_MSG_ROUTING(route) \
224	(((route) << 5) & CDNS_PCIE_NORMAL_MSG_ROUTING_MASK)
225#define CDNS_PCIE_NORMAL_MSG_CODE_MASK		GENMASK(15, 8)
226#define CDNS_PCIE_NORMAL_MSG_CODE(code) \
227	(((code) << 8) & CDNS_PCIE_NORMAL_MSG_CODE_MASK)
228#define CDNS_PCIE_MSG_NO_DATA                   BIT(16)
229
230#endif /* _PCIE_CADENCE_LGA_REGS_H */
~/ Read-only file preview.