xref: /openbmc/u-boot/drivers/pci/pcie_aspeed.h (revision ff6a54e2)
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