1  /* SPDX-License-Identifier: GPL-2.0+ */
2  /* Copyright (c) 2015 Quantenna Communications */
3  
4  #ifndef __PEARL_PCIE_H
5  #define __PEARL_PCIE_H
6  
7  /* Pearl PCIe HDP registers */
8  #define PCIE_HDP_CTRL(base)			((base) + 0x2c00)
9  #define PCIE_HDP_AXI_CTRL(base)			((base) + 0x2c04)
10  #define PCIE_HDP_HOST_WR_DESC0(base)		((base) + 0x2c10)
11  #define PCIE_HDP_HOST_WR_DESC0_H(base)		((base) + 0x2c14)
12  #define PCIE_HDP_HOST_WR_DESC1(base)		((base) + 0x2c18)
13  #define PCIE_HDP_HOST_WR_DESC1_H(base)		((base) + 0x2c1c)
14  #define PCIE_HDP_HOST_WR_DESC2(base)		((base) + 0x2c20)
15  #define PCIE_HDP_HOST_WR_DESC2_H(base)		((base) + 0x2c24)
16  #define PCIE_HDP_HOST_WR_DESC3(base)		((base) + 0x2c28)
17  #define PCIE_HDP_HOST_WR_DESC4_H(base)		((base) + 0x2c2c)
18  #define PCIE_HDP_RX_INT_CTRL(base)		((base) + 0x2c30)
19  #define PCIE_HDP_TX_INT_CTRL(base)		((base) + 0x2c34)
20  #define PCIE_HDP_INT_STATUS(base)		((base) + 0x2c38)
21  #define PCIE_HDP_INT_EN(base)			((base) + 0x2c3c)
22  #define PCIE_HDP_RX_DESC0_PTR(base)		((base) + 0x2c40)
23  #define PCIE_HDP_RX_DESC0_NOE(base)		((base) + 0x2c44)
24  #define PCIE_HDP_RX_DESC1_PTR(base)		((base) + 0x2c48)
25  #define PCIE_HDP_RX_DESC1_NOE(base)		((base) + 0x2c4c)
26  #define PCIE_HDP_RX_DESC2_PTR(base)		((base) + 0x2c50)
27  #define PCIE_HDP_RX_DESC2_NOE(base)		((base) + 0x2c54)
28  #define PCIE_HDP_RX_DESC3_PTR(base)		((base) + 0x2c58)
29  #define PCIE_HDP_RX_DESC3_NOE(base)		((base) + 0x2c5c)
30  
31  #define PCIE_HDP_TX0_BASE_ADDR(base)		((base) + 0x2c60)
32  #define PCIE_HDP_TX1_BASE_ADDR(base)		((base) + 0x2c64)
33  #define PCIE_HDP_TX0_Q_CTRL(base)		((base) + 0x2c70)
34  #define PCIE_HDP_TX1_Q_CTRL(base)		((base) + 0x2c74)
35  #define PCIE_HDP_CFG0(base)			((base) + 0x2c80)
36  #define PCIE_HDP_CFG1(base)			((base) + 0x2c84)
37  #define PCIE_HDP_CFG2(base)			((base) + 0x2c88)
38  #define PCIE_HDP_CFG3(base)			((base) + 0x2c8c)
39  #define PCIE_HDP_CFG4(base)			((base) + 0x2c90)
40  #define PCIE_HDP_CFG5(base)			((base) + 0x2c94)
41  #define PCIE_HDP_CFG6(base)			((base) + 0x2c98)
42  #define PCIE_HDP_CFG7(base)			((base) + 0x2c9c)
43  #define PCIE_HDP_CFG8(base)			((base) + 0x2ca0)
44  #define PCIE_HDP_CFG9(base)			((base) + 0x2ca4)
45  #define PCIE_HDP_CFG10(base)			((base) + 0x2ca8)
46  #define PCIE_HDP_CFG11(base)			((base) + 0x2cac)
47  #define PCIE_INT(base)				((base) + 0x2cb0)
48  #define PCIE_INT_MASK(base)			((base) + 0x2cb4)
49  #define PCIE_MSI_MASK(base)			((base) + 0x2cb8)
50  #define PCIE_MSI_PNDG(base)			((base) + 0x2cbc)
51  #define PCIE_PRI_CFG(base)			((base) + 0x2cc0)
52  #define PCIE_PHY_CR(base)			((base) + 0x2cc4)
53  #define PCIE_HDP_CTAG_CTRL(base)		((base) + 0x2cf4)
54  #define PCIE_HDP_HHBM_BUF_PTR(base)		((base) + 0x2d00)
55  #define PCIE_HDP_HHBM_BUF_PTR_H(base)		((base) + 0x2d04)
56  #define PCIE_HDP_HHBM_BUF_FIFO_NOE(base)	((base) + 0x2d04)
57  #define PCIE_HDP_RX0DMA_CNT(base)		((base) + 0x2d10)
58  #define PCIE_HDP_RX1DMA_CNT(base)		((base) + 0x2d14)
59  #define PCIE_HDP_RX2DMA_CNT(base)		((base) + 0x2d18)
60  #define PCIE_HDP_RX3DMA_CNT(base)		((base) + 0x2d1c)
61  #define PCIE_HDP_TX0DMA_CNT(base)		((base) + 0x2d20)
62  #define PCIE_HDP_TX1DMA_CNT(base)		((base) + 0x2d24)
63  #define PCIE_HDP_RXDMA_CTRL(base)		((base) + 0x2d28)
64  #define PCIE_HDP_TX_HOST_Q_SZ_CTRL(base)	((base) + 0x2d2c)
65  #define PCIE_HDP_TX_HOST_Q_BASE_L(base)		((base) + 0x2d30)
66  #define PCIE_HDP_TX_HOST_Q_BASE_H(base)		((base) + 0x2d34)
67  #define PCIE_HDP_TX_HOST_Q_WR_PTR(base)		((base) + 0x2d38)
68  #define PCIE_HDP_TX_HOST_Q_RD_PTR(base)		((base) + 0x2d3c)
69  #define PCIE_HDP_TX_HOST_Q_STS(base)		((base) + 0x2d40)
70  
71  /* Pearl PCIe HBM pool registers */
72  #define PCIE_HHBM_CSR_REG(base)			((base) + 0x2e00)
73  #define PCIE_HHBM_Q_BASE_REG(base)		((base) + 0x2e04)
74  #define PCIE_HHBM_Q_LIMIT_REG(base)		((base) + 0x2e08)
75  #define PCIE_HHBM_Q_WR_REG(base)		((base) + 0x2e0c)
76  #define PCIE_HHBM_Q_RD_REG(base)		((base) + 0x2e10)
77  #define PCIE_HHBM_POOL_DATA_0_H(base)		((base) + 0x2e90)
78  #define PCIE_HHBM_CONFIG(base)			((base) + 0x2f9c)
79  #define PCIE_HHBM_POOL_REQ_0(base)		((base) + 0x2f10)
80  #define PCIE_HHBM_POOL_DATA_0(base)		((base) + 0x2f40)
81  #define PCIE_HHBM_WATERMARK_MASKED_INT(base)	((base) + 0x2f68)
82  #define PCIE_HHBM_WATERMARK_INT(base)		((base) + 0x2f6c)
83  #define PCIE_HHBM_POOL_WATERMARK(base)		((base) + 0x2f70)
84  #define PCIE_HHBM_POOL_OVERFLOW_CNT(base)	((base) + 0x2f90)
85  #define PCIE_HHBM_POOL_UNDERFLOW_CNT(base)	((base) + 0x2f94)
86  #define HBM_INT_STATUS(base)			((base) + 0x2f9c)
87  #define PCIE_HHBM_POOL_CNFIG(base)		((base) + 0x2f9c)
88  
89  /* Pearl PCIe HBM bit field definitions */
90  #define HHBM_CONFIG_SOFT_RESET			(BIT(8))
91  #define HHBM_WR_REQ				(BIT(0))
92  #define HHBM_RD_REQ				(BIT(1))
93  #define HHBM_DONE				(BIT(31))
94  #define HHBM_64BIT				(BIT(10))
95  
96  /* PCIe HDP interrupt status definition */
97  #define PCIE_HDP_INT_EP_RXDMA		(BIT(0))
98  #define PCIE_HDP_INT_HBM_UF		(BIT(1))
99  #define PCIE_HDP_INT_RX_LEN_ERR		(BIT(2))
100  #define PCIE_HDP_INT_RX_HDR_LEN_ERR	(BIT(3))
101  #define PCIE_HDP_INT_EP_TXDMA		(BIT(12))
102  #define PCIE_HDP_INT_HHBM_UF		(BIT(13))
103  #define PCIE_HDP_INT_EP_TXEMPTY		(BIT(15))
104  #define PCIE_HDP_INT_IPC		(BIT(29))
105  
106  /* PCIe interrupt status definition */
107  #define PCIE_INT_MSI			(BIT(24))
108  #define PCIE_INT_INTX			(BIT(23))
109  
110  /* PCIe legacy INTx */
111  #define PEARL_PCIE_CFG0_OFFSET		(0x6C)
112  #define PEARL_ASSERT_INTX		(BIT(9))
113  
114  /* SYS CTL regs */
115  #define QTN_PEARL_SYSCTL_LHOST_IRQ_OFFSET	(0x001C)
116  
117  #define QTN_PEARL_IPC_IRQ_WORD(irq)	(BIT(irq) | BIT(irq + 16))
118  #define QTN_PEARL_LHOST_IPC_IRQ		(6)
119  #define QTN_PEARL_LHOST_EP_RESET	(7)
120  
121  #endif /* __PEARL_PCIE_H */
122