xref: /openbmc/u-boot/drivers/pci/pcie_aspeed.h (revision 47ac369c3bc99ef9b154e5247882409db696c41a)
1  /* SPDX-License-Identifier: GPL-2.0 */
2  #ifndef __PCIE_ASPEED_H_INCLUDED
3  #define __PCIE_ASPEED_H_INCLUDED
4  #include <linux/bitops.h>
5  #include <dm/device.h>
6  
7  /* reg 0x24 */
8  #define PCIE_TX_IDLE			BIT(31)
9  
10  #define PCIE_STATUS_OF_TX		GENMASK(25, 24)
11  #define	PCIE_RC_TX_COMPLETE		0
12  #define	PCIE_RC_L_TX_COMPLETE	BIT(24)
13  #define	PCIE_RC_H_TX_COMPLETE	BIT(25)
14  
15  #define PCIE_TRIGGER_TX			BIT(0)
16  
17  #define PCIE_RC_L				0x80
18  #define PCIE_RC_H				0xC0
19  /* reg 0x80, 0xC0 */
20  #define PCIE_RX_TAG_MASK		GENMASK(23, 16)
21  #define PCIE_RX_LINEAR			BIT(8)
22  #define PCIE_RX_MSI_SEL			BIT(7)
23  #define PCIE_RX_MSI_EN			BIT(6)
24  #define PCIE_1M_ADDRESS_EN		BIT(5)
25  #define PCIE_UNLOCK_RX_BUFF		BIT(4)
26  #define PCIE_RX_TLP_TAG_MATCH	BIT(3)
27  #define PCIE_WAIT_RX_TLP_CLR	BIT(2)
28  #define PCIE_RC_RX_ENABLE		BIT(1)
29  #define PCIE_RC_ENABLE			BIT(0)
30  
31  /* reg 0x88, 0xC8 : RC ISR */
32  #define PCIE_RC_CPLCA_ISR		BIT(6)
33  #define PCIE_RC_CPLUR_ISR		BIT(5)
34  #define PCIE_RC_RX_DONE_ISR		BIT(4)
35  
36  #define PCIE_RC_INTD_ISR		BIT(3)
37  #define PCIE_RC_INTC_ISR		BIT(2)
38  #define PCIE_RC_INTB_ISR		BIT(1)
39  #define PCIE_RC_INTA_ISR		BIT(0)
40  
41  struct aspeed_h2x_reg {
42  	u32 h2x_reg00;
43  	u32 h2x_reg04;
44  	u32 h2x_reg08;
45  	u32 h2x_rdata;			//0x0c
46  	u32 h2x_tx_desc3;		//0x10
47  	u32 h2x_tx_desc2;		//0x14
48  	u32 h2x_tx_desc1;		//0x18
49  	u32 h2x_tx_desc0;		//0x1c
50  	u32 h2x_tx_data;		//0x20
51  	u32 h2x_reg24;
52  	u32 h2x_reg28;
53  	u32 h2x_reg2C;
54  	u32 h2x_reg30;
55  	u32 h2x_reg34;
56  	u32 h2x_reg38;
57  	u32 h2x_reg3C;
58  	u32 h2x_reg40;
59  	u32 h2x_reg44;
60  	u32 h2x_reg48;
61  	u32 h2x_reg4C;
62  	u32 h2x_reg50;
63  	u32 h2x_reg54;
64  	u32 h2x_reg58;
65  	u32 h2x_reg5C;
66  	u32 h2x_reg60;
67  	u32 h2x_reg64;
68  	u32 h2x_reg68;
69  	u32 h2x_reg6C;
70  	u32 h2x_reg70;
71  	u32 h2x_reg74;
72  	u32 h2x_reg78;
73  	u32 h2x_reg7C;
74  	u32 h2x_rc_l_ctrl;		//0x80
75  	u32 h2x_rc_l_ier;		//0x84
76  	u32 h2x_rc_l_isr;		//0x88
77  	u32 h2x_rc_l_rdata;		//0x8C
78  	u32 h2x_rc_l_rxdesc3;	//0x90
79  	u32 h2x_rc_l_rxdesc2;	//0x94
80  	u32 h2x_rc_l_rxdesc1;	//0x98
81  	u32 h2x_rc_l_rxdesc0;	//0x9C
82  	u32 h2x_rc_l_msi1_ier;	//0xA0
83  	u32 h2x_rc_l_msi0_ier;	//0xA4
84  	u32 h2x_rc_l_msi1_isr;	//0xA8
85  	u32 h2x_rc_l_msi0_isr;	//0xAC
86  	u32 h2x_regb0;
87  	u32 h2x_regb4;
88  	u32 h2x_regb8;
89  	u32 h2x_rc_l_tx_tag;	//0xBC
90  	u32 h2x_rc_h_ctrl;		//0xC0
91  	u32 h2x_rc_h_ier;		//0xC4
92  	u32 h2x_rc_h_isr;		//0xC8
93  	u32 h2x_rc_h_rdata;		//0xCC
94  	u32 h2x_rc_h_rxdesc3;	//0xD0
95  	u32 h2x_rc_h_rxdesc2;	//0xD4
96  	u32 h2x_rc_h_rxdesc1;	//0xD8
97  	u32 h2x_rc_h_rxdesc0;	//0xDC
98  	u32 h2x_rc_h_msi1_ier;	//0xE0
99  	u32 h2x_rc_h_msi0_ier;	//0xE4
100  	u32 h2x_rc_h_msi1_isr;	//0xE8
101  	u32 h2x_rc_h_msi0_isr;	//0xEC
102  	u32 h2x_regf0;
103  	u32 h2x_regf4;
104  	u32 h2x_regf8;
105  	u32 h2x_rc_h_tx_tag;	//0xFC
106  };
107  
108  struct aspeed_rc_bridge {
109  	void *reg;
110  };
111  
112  int aspeed_pcie_phy_link_status(struct udevice *dev);
113  
114  #endif
115