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