18e93258fSBjoern A. Zeeb /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 28e93258fSBjoern A. Zeeb /* Copyright(c) 2020 Realtek Corporation 38e93258fSBjoern A. Zeeb */ 48e93258fSBjoern A. Zeeb 58e93258fSBjoern A. Zeeb #ifndef __RTW89_PCI_H__ 68e93258fSBjoern A. Zeeb #define __RTW89_PCI_H__ 78e93258fSBjoern A. Zeeb 88e93258fSBjoern A. Zeeb #include "txrx.h" 98e93258fSBjoern A. Zeeb 108e93258fSBjoern A. Zeeb #define MDIO_PG0_G1 0 118e93258fSBjoern A. Zeeb #define MDIO_PG1_G1 1 128e93258fSBjoern A. Zeeb #define MDIO_PG0_G2 2 138e93258fSBjoern A. Zeeb #define MDIO_PG1_G2 3 148e93258fSBjoern A. Zeeb #define RAC_CTRL_PPR 0x00 15*6d67aabdSBjoern A. Zeeb #define RAC_ANA03 0x03 16*6d67aabdSBjoern A. Zeeb #define OOBS_SEN_MASK GENMASK(5, 1) 17*6d67aabdSBjoern A. Zeeb #define RAC_ANA09 0x09 18*6d67aabdSBjoern A. Zeeb #define BAC_OOBS_SEL BIT(4) 198e93258fSBjoern A. Zeeb #define RAC_ANA0A 0x0A 208e93258fSBjoern A. Zeeb #define B_BAC_EQ_SEL BIT(5) 218e93258fSBjoern A. Zeeb #define RAC_ANA0C 0x0C 228e93258fSBjoern A. Zeeb #define B_PCIE_BIT_PSAVE BIT(15) 23*6d67aabdSBjoern A. Zeeb #define RAC_ANA0D 0x0D 24*6d67aabdSBjoern A. Zeeb #define BAC_RX_TEST_EN BIT(6) 258e93258fSBjoern A. Zeeb #define RAC_ANA10 0x10 26*6d67aabdSBjoern A. Zeeb #define ADDR_SEL_PINOUT_DIS_VAL 0x3C4 278e93258fSBjoern A. Zeeb #define B_PCIE_BIT_PINOUT_DIS BIT(3) 288e93258fSBjoern A. Zeeb #define RAC_REG_REV2 0x1B 298e93258fSBjoern A. Zeeb #define BAC_CMU_EN_DLY_MASK GENMASK(15, 12) 308e93258fSBjoern A. Zeeb #define PCIE_DPHY_DLY_25US 0x1 318e93258fSBjoern A. Zeeb #define RAC_ANA19 0x19 328e93258fSBjoern A. Zeeb #define B_PCIE_BIT_RD_SEL BIT(2) 33e2340276SBjoern A. Zeeb #define RAC_REG_FLD_0 0x1D 34e2340276SBjoern A. Zeeb #define BAC_AUTOK_N_MASK GENMASK(3, 2) 35e2340276SBjoern A. Zeeb #define PCIE_AUTOK_4 0x3 36*6d67aabdSBjoern A. Zeeb #define RAC_ANA1E 0x1E 37*6d67aabdSBjoern A. Zeeb #define RAC_ANA1E_G1_VAL 0x66EA 38*6d67aabdSBjoern A. Zeeb #define RAC_ANA1E_G2_VAL 0x6EEA 398e93258fSBjoern A. Zeeb #define RAC_ANA1F 0x1F 40*6d67aabdSBjoern A. Zeeb #define OOBS_LEVEL_MASK GENMASK(12, 8) 418e93258fSBjoern A. Zeeb #define RAC_ANA24 0x24 428e93258fSBjoern A. Zeeb #define B_AX_DEGLITCH GENMASK(11, 8) 438e93258fSBjoern A. Zeeb #define RAC_ANA26 0x26 448e93258fSBjoern A. Zeeb #define B_AX_RXEN GENMASK(15, 14) 45*6d67aabdSBjoern A. Zeeb #define RAC_ANA2E 0x2E 46*6d67aabdSBjoern A. Zeeb #define RAC_ANA2E_VAL 0xFFFE 478e93258fSBjoern A. Zeeb #define RAC_CTRL_PPR_V1 0x30 488e93258fSBjoern A. Zeeb #define B_AX_CLK_CALIB_EN BIT(12) 498e93258fSBjoern A. Zeeb #define B_AX_CALIB_EN BIT(13) 508e93258fSBjoern A. Zeeb #define B_AX_DIV GENMASK(15, 14) 518e93258fSBjoern A. Zeeb #define RAC_SET_PPR_V1 0x31 528e93258fSBjoern A. Zeeb 538e93258fSBjoern A. Zeeb #define R_AX_DBI_FLAG 0x1090 548e93258fSBjoern A. Zeeb #define B_AX_DBI_RFLAG BIT(17) 558e93258fSBjoern A. Zeeb #define B_AX_DBI_WFLAG BIT(16) 568e93258fSBjoern A. Zeeb #define B_AX_DBI_WREN_MSK GENMASK(15, 12) 578e93258fSBjoern A. Zeeb #define B_AX_DBI_ADDR_MSK GENMASK(11, 2) 58*6d67aabdSBjoern A. Zeeb #define B_AX_DBI_2LSB GENMASK(1, 0) 598e93258fSBjoern A. Zeeb #define R_AX_DBI_WDATA 0x1094 608e93258fSBjoern A. Zeeb #define R_AX_DBI_RDATA 0x1098 618e93258fSBjoern A. Zeeb 628e93258fSBjoern A. Zeeb #define R_AX_MDIO_WDATA 0x10A4 638e93258fSBjoern A. Zeeb #define R_AX_MDIO_RDATA 0x10A6 648e93258fSBjoern A. Zeeb 658e93258fSBjoern A. Zeeb #define R_AX_PCIE_PS_CTRL_V1 0x3008 668e93258fSBjoern A. Zeeb #define B_AX_CMAC_EXIT_L1_EN BIT(7) 678e93258fSBjoern A. Zeeb #define B_AX_DMAC0_EXIT_L1_EN BIT(6) 688e93258fSBjoern A. Zeeb #define B_AX_SEL_XFER_PENDING BIT(3) 698e93258fSBjoern A. Zeeb #define B_AX_SEL_REQ_ENTR_L1 BIT(2) 708e93258fSBjoern A. Zeeb #define B_AX_SEL_REQ_EXIT_L1 BIT(0) 718e93258fSBjoern A. Zeeb 728e93258fSBjoern A. Zeeb #define R_AX_PCIE_MIX_CFG_V1 0x300C 738e93258fSBjoern A. Zeeb #define B_AX_ASPM_CTRL_L1 BIT(17) 748e93258fSBjoern A. Zeeb #define B_AX_ASPM_CTRL_L0 BIT(16) 758e93258fSBjoern A. Zeeb #define B_AX_ASPM_CTRL_MASK GENMASK(17, 16) 768e93258fSBjoern A. Zeeb #define B_AX_XFER_PENDING_FW BIT(11) 778e93258fSBjoern A. Zeeb #define B_AX_XFER_PENDING BIT(10) 788e93258fSBjoern A. Zeeb #define B_AX_REQ_EXIT_L1 BIT(9) 798e93258fSBjoern A. Zeeb #define B_AX_REQ_ENTR_L1 BIT(8) 808e93258fSBjoern A. Zeeb #define B_AX_L1SUB_DISABLE BIT(0) 818e93258fSBjoern A. Zeeb 828e93258fSBjoern A. Zeeb #define R_AX_L1_CLK_CTRL 0x3010 838e93258fSBjoern A. Zeeb #define B_AX_CLK_REQ_N BIT(1) 848e93258fSBjoern A. Zeeb 858e93258fSBjoern A. Zeeb #define R_AX_PCIE_BG_CLR 0x303C 868e93258fSBjoern A. Zeeb #define B_AX_BG_CLR_ASYNC_M3 BIT(4) 878e93258fSBjoern A. Zeeb 888e93258fSBjoern A. Zeeb #define R_AX_PCIE_LAT_CTRL 0x3044 898e93258fSBjoern A. Zeeb #define B_AX_CLK_REQ_SEL_OPT BIT(1) 908e93258fSBjoern A. Zeeb #define B_AX_CLK_REQ_SEL BIT(0) 918e93258fSBjoern A. Zeeb 928e93258fSBjoern A. Zeeb #define R_AX_PCIE_IO_RCY_M1 0x3100 938e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_P_M1 BIT(5) 948e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WDT_P_M1 BIT(4) 958e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WDT_MODE_M1 BIT(3) 968e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_TRIG_M1 BIT(0) 978e93258fSBjoern A. Zeeb 988e93258fSBjoern A. Zeeb #define R_AX_PCIE_WDT_TIMER_M1 0x3104 998e93258fSBjoern A. Zeeb #define B_AX_PCIE_WDT_TIMER_M1_MASK GENMASK(31, 0) 1008e93258fSBjoern A. Zeeb 1018e93258fSBjoern A. Zeeb #define R_AX_PCIE_IO_RCY_M2 0x310C 1028e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_P_M2 BIT(5) 1038e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WDT_P_M2 BIT(4) 1048e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WDT_MODE_M2 BIT(3) 1058e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_TRIG_M2 BIT(0) 1068e93258fSBjoern A. Zeeb 1078e93258fSBjoern A. Zeeb #define R_AX_PCIE_WDT_TIMER_M2 0x3110 1088e93258fSBjoern A. Zeeb #define B_AX_PCIE_WDT_TIMER_M2_MASK GENMASK(31, 0) 1098e93258fSBjoern A. Zeeb 1108e93258fSBjoern A. Zeeb #define R_AX_PCIE_IO_RCY_E0 0x3118 1118e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_P_E0 BIT(5) 1128e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WDT_P_E0 BIT(4) 1138e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WDT_MODE_E0 BIT(3) 1148e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_TRIG_E0 BIT(0) 1158e93258fSBjoern A. Zeeb 1168e93258fSBjoern A. Zeeb #define R_AX_PCIE_WDT_TIMER_E0 0x311C 1178e93258fSBjoern A. Zeeb #define B_AX_PCIE_WDT_TIMER_E0_MASK GENMASK(31, 0) 1188e93258fSBjoern A. Zeeb 1198e93258fSBjoern A. Zeeb #define R_AX_PCIE_IO_RCY_S1 0x3124 1208e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_RP_S1 BIT(7) 1218e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WP_S1 BIT(6) 1228e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WDT_RP_S1 BIT(5) 1238e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WDT_WP_S1 BIT(4) 1248e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WDT_MODE_S1 BIT(3) 1258e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_RTRIG_S1 BIT(1) 1268e93258fSBjoern A. Zeeb #define B_AX_PCIE_IO_RCY_WTRIG_S1 BIT(0) 1278e93258fSBjoern A. Zeeb 1288e93258fSBjoern A. Zeeb #define R_AX_PCIE_WDT_TIMER_S1 0x3128 1298e93258fSBjoern A. Zeeb #define B_AX_PCIE_WDT_TIMER_S1_MASK GENMASK(31, 0) 1308e93258fSBjoern A. Zeeb 1318e93258fSBjoern A. Zeeb #define R_RAC_DIRECT_OFFSET_G1 0x3800 1328e93258fSBjoern A. Zeeb #define FILTER_OUT_EQ_MASK GENMASK(14, 10) 1338e93258fSBjoern A. Zeeb #define R_RAC_DIRECT_OFFSET_G2 0x3880 1348e93258fSBjoern A. Zeeb #define REG_FILTER_OUT_MASK GENMASK(6, 2) 1358e93258fSBjoern A. Zeeb #define RAC_MULT 2 1368e93258fSBjoern A. Zeeb 1378e93258fSBjoern A. Zeeb #define RTW89_PCI_WR_RETRY_CNT 20 1388e93258fSBjoern A. Zeeb 1398e93258fSBjoern A. Zeeb /* Interrupts */ 1408e93258fSBjoern A. Zeeb #define R_AX_HIMR0 0x01A0 1418e93258fSBjoern A. Zeeb #define B_AX_WDT_TIMEOUT_INT_EN BIT(22) 1428e93258fSBjoern A. Zeeb #define B_AX_HALT_C2H_INT_EN BIT(21) 1438e93258fSBjoern A. Zeeb #define R_AX_HISR0 0x01A4 1448e93258fSBjoern A. Zeeb 1458e93258fSBjoern A. Zeeb #define R_AX_HIMR1 0x01A8 1468e93258fSBjoern A. Zeeb #define B_AX_GPIO18_INT_EN BIT(2) 1478e93258fSBjoern A. Zeeb #define B_AX_GPIO17_INT_EN BIT(1) 1488e93258fSBjoern A. Zeeb #define B_AX_GPIO16_INT_EN BIT(0) 1498e93258fSBjoern A. Zeeb 1508e93258fSBjoern A. Zeeb #define R_AX_HISR1 0x01AC 1518e93258fSBjoern A. Zeeb #define B_AX_GPIO18_INT BIT(2) 1528e93258fSBjoern A. Zeeb #define B_AX_GPIO17_INT BIT(1) 1538e93258fSBjoern A. Zeeb #define B_AX_GPIO16_INT BIT(0) 1548e93258fSBjoern A. Zeeb 1558e93258fSBjoern A. Zeeb #define R_AX_MDIO_CFG 0x10A0 1568e93258fSBjoern A. Zeeb #define B_AX_MDIO_PHY_ADDR_MASK GENMASK(13, 12) 1578e93258fSBjoern A. Zeeb #define B_AX_MDIO_RFLAG BIT(9) 1588e93258fSBjoern A. Zeeb #define B_AX_MDIO_WFLAG BIT(8) 1598e93258fSBjoern A. Zeeb #define B_AX_MDIO_ADDR_MASK GENMASK(4, 0) 1608e93258fSBjoern A. Zeeb 1618e93258fSBjoern A. Zeeb #define R_AX_PCIE_HIMR00 0x10B0 1628e93258fSBjoern A. Zeeb #define R_AX_HAXI_HIMR00 0x10B0 1638e93258fSBjoern A. Zeeb #define B_AX_HC00ISR_IND_INT_EN BIT(27) 1648e93258fSBjoern A. Zeeb #define B_AX_HD1ISR_IND_INT_EN BIT(26) 1658e93258fSBjoern A. Zeeb #define B_AX_HD0ISR_IND_INT_EN BIT(25) 1668e93258fSBjoern A. Zeeb #define B_AX_HS0ISR_IND_INT_EN BIT(24) 167e2340276SBjoern A. Zeeb #define B_AX_HS0ISR_IND_INT_EN_WKARND BIT(23) 1688e93258fSBjoern A. Zeeb #define B_AX_RETRAIN_INT_EN BIT(21) 1698e93258fSBjoern A. Zeeb #define B_AX_RPQBD_FULL_INT_EN BIT(20) 1708e93258fSBjoern A. Zeeb #define B_AX_RDU_INT_EN BIT(19) 1718e93258fSBjoern A. Zeeb #define B_AX_RXDMA_STUCK_INT_EN BIT(18) 1728e93258fSBjoern A. Zeeb #define B_AX_TXDMA_STUCK_INT_EN BIT(17) 1738e93258fSBjoern A. Zeeb #define B_AX_PCIE_HOTRST_INT_EN BIT(16) 1748e93258fSBjoern A. Zeeb #define B_AX_PCIE_FLR_INT_EN BIT(15) 1758e93258fSBjoern A. Zeeb #define B_AX_PCIE_PERST_INT_EN BIT(14) 1768e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH12_INT_EN BIT(13) 1778e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH9_INT_EN BIT(12) 1788e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH8_INT_EN BIT(11) 1798e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH7_INT_EN BIT(10) 1808e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH6_INT_EN BIT(9) 1818e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH5_INT_EN BIT(8) 1828e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH4_INT_EN BIT(7) 1838e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH3_INT_EN BIT(6) 1848e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH2_INT_EN BIT(5) 1858e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH1_INT_EN BIT(4) 1868e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH0_INT_EN BIT(3) 1878e93258fSBjoern A. Zeeb #define B_AX_RPQDMA_INT_EN BIT(2) 1888e93258fSBjoern A. Zeeb #define B_AX_RXP1DMA_INT_EN BIT(1) 1898e93258fSBjoern A. Zeeb #define B_AX_RXDMA_INT_EN BIT(0) 1908e93258fSBjoern A. Zeeb 1918e93258fSBjoern A. Zeeb #define R_AX_PCIE_HISR00 0x10B4 1928e93258fSBjoern A. Zeeb #define R_AX_HAXI_HISR00 0x10B4 1938e93258fSBjoern A. Zeeb #define B_AX_HC00ISR_IND_INT BIT(27) 1948e93258fSBjoern A. Zeeb #define B_AX_HD1ISR_IND_INT BIT(26) 1958e93258fSBjoern A. Zeeb #define B_AX_HD0ISR_IND_INT BIT(25) 1968e93258fSBjoern A. Zeeb #define B_AX_HS0ISR_IND_INT BIT(24) 1978e93258fSBjoern A. Zeeb #define B_AX_RETRAIN_INT BIT(21) 1988e93258fSBjoern A. Zeeb #define B_AX_RPQBD_FULL_INT BIT(20) 1998e93258fSBjoern A. Zeeb #define B_AX_RDU_INT BIT(19) 2008e93258fSBjoern A. Zeeb #define B_AX_RXDMA_STUCK_INT BIT(18) 2018e93258fSBjoern A. Zeeb #define B_AX_TXDMA_STUCK_INT BIT(17) 2028e93258fSBjoern A. Zeeb #define B_AX_PCIE_HOTRST_INT BIT(16) 2038e93258fSBjoern A. Zeeb #define B_AX_PCIE_FLR_INT BIT(15) 2048e93258fSBjoern A. Zeeb #define B_AX_PCIE_PERST_INT BIT(14) 2058e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH12_INT BIT(13) 2068e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH9_INT BIT(12) 2078e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH8_INT BIT(11) 2088e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH7_INT BIT(10) 2098e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH6_INT BIT(9) 2108e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH5_INT BIT(8) 2118e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH4_INT BIT(7) 2128e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH3_INT BIT(6) 2138e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH2_INT BIT(5) 2148e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH1_INT BIT(4) 2158e93258fSBjoern A. Zeeb #define B_AX_TXDMA_ACH0_INT BIT(3) 2168e93258fSBjoern A. Zeeb #define B_AX_RPQDMA_INT BIT(2) 2178e93258fSBjoern A. Zeeb #define B_AX_RXP1DMA_INT BIT(1) 2188e93258fSBjoern A. Zeeb #define B_AX_RXDMA_INT BIT(0) 2198e93258fSBjoern A. Zeeb 220e2340276SBjoern A. Zeeb #define R_AX_HAXI_IDCT_MSK 0x10B8 221e2340276SBjoern A. Zeeb #define B_AX_TXBD_LEN0_ERR_IDCT_MSK BIT(3) 222e2340276SBjoern A. Zeeb #define B_AX_TXBD_4KBOUND_ERR_IDCT_MSK BIT(2) 223e2340276SBjoern A. Zeeb #define B_AX_RXMDA_STUCK_IDCT_MSK BIT(1) 224e2340276SBjoern A. Zeeb #define B_AX_TXMDA_STUCK_IDCT_MSK BIT(0) 225e2340276SBjoern A. Zeeb 226e2340276SBjoern A. Zeeb #define R_AX_HAXI_IDCT 0x10BC 227e2340276SBjoern A. Zeeb #define B_AX_TXBD_LEN0_ERR_IDCT BIT(3) 228e2340276SBjoern A. Zeeb #define B_AX_TXBD_4KBOUND_ERR_IDCT BIT(2) 229e2340276SBjoern A. Zeeb #define B_AX_RXMDA_STUCK_IDCT BIT(1) 230e2340276SBjoern A. Zeeb #define B_AX_TXMDA_STUCK_IDCT BIT(0) 231e2340276SBjoern A. Zeeb 2328e93258fSBjoern A. Zeeb #define R_AX_HAXI_HIMR10 0x11E0 2338e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH11_INT_EN_V1 BIT(1) 2348e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH10_INT_EN_V1 BIT(0) 2358e93258fSBjoern A. Zeeb 2368e93258fSBjoern A. Zeeb #define R_AX_PCIE_HIMR10 0x13B0 2378e93258fSBjoern A. Zeeb #define B_AX_HC10ISR_IND_INT_EN BIT(28) 2388e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH11_INT_EN BIT(12) 2398e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH10_INT_EN BIT(11) 2408e93258fSBjoern A. Zeeb 2418e93258fSBjoern A. Zeeb #define R_AX_PCIE_HISR10 0x13B4 2428e93258fSBjoern A. Zeeb #define B_AX_HC10ISR_IND_INT BIT(28) 2438e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH11_INT BIT(12) 2448e93258fSBjoern A. Zeeb #define B_AX_TXDMA_CH10_INT BIT(11) 2458e93258fSBjoern A. Zeeb 2468e93258fSBjoern A. Zeeb #define R_AX_PCIE_HIMR00_V1 0x30B0 2478e93258fSBjoern A. Zeeb #define B_AX_HCI_AXIDMA_INT_EN BIT(29) 2488e93258fSBjoern A. Zeeb #define B_AX_HC00ISR_IND_INT_EN_V1 BIT(28) 2498e93258fSBjoern A. Zeeb #define B_AX_HD1ISR_IND_INT_EN_V1 BIT(27) 2508e93258fSBjoern A. Zeeb #define B_AX_HD0ISR_IND_INT_EN_V1 BIT(26) 2518e93258fSBjoern A. Zeeb #define B_AX_HS1ISR_IND_INT_EN BIT(25) 2528e93258fSBjoern A. Zeeb #define B_AX_PCIE_DBG_STE_INT_EN BIT(13) 2538e93258fSBjoern A. Zeeb 2548e93258fSBjoern A. Zeeb #define R_AX_PCIE_HISR00_V1 0x30B4 2558e93258fSBjoern A. Zeeb #define B_AX_HCI_AXIDMA_INT BIT(29) 2568e93258fSBjoern A. Zeeb #define B_AX_HC00ISR_IND_INT_V1 BIT(28) 2578e93258fSBjoern A. Zeeb #define B_AX_HD1ISR_IND_INT_V1 BIT(27) 2588e93258fSBjoern A. Zeeb #define B_AX_HD0ISR_IND_INT_V1 BIT(26) 2598e93258fSBjoern A. Zeeb #define B_AX_HS1ISR_IND_INT BIT(25) 2608e93258fSBjoern A. Zeeb #define B_AX_PCIE_DBG_STE_INT BIT(13) 2618e93258fSBjoern A. Zeeb 262*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_FRZ_CLK 0x3004 263*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_MAC_HW_RST BIT(31) 264*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_CFG_SPC_RST BIT(30) 265*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_ELBI_RST BIT(29) 266*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MAC_IS_ACTIVE BIT(28) 267*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_RTK_HW_RST BIT(27) 268*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_REG_RST BIT(26) 269*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_ANA_RST BIT(25) 270*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_WLAN_RST BIT(24) 271*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_FLR_RST BIT(23) 272*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_RET_NON_STKY_RST BIT(22) 273*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_RET_STKY_RST BIT(21) 274*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_NON_STKY_RST BIT(20) 275*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_STKY_RST BIT(19) 276*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_RET_CORE_RST BIT(18) 277*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_PWR_RST BIT(17) 278*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_PERST_RST BIT(16) 279*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_PHY_ALOAD BIT(15) 280*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FRZ_PHY_HW_RST BIT(14) 281*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_DBG_CLK BIT(4) 282*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_EN_CLK BIT(3) 283*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_DBI_ACLK_ACT BIT(2) 284*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_S1_ACLK_ACT BIT(1) 285*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_EN_AUX_CLK BIT(0) 286*6d67aabdSBjoern A. Zeeb 287*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_PS_CTRL 0x3008 288*6d67aabdSBjoern A. Zeeb #define B_BE_RSM_L0S_EN BIT(8) 289*6d67aabdSBjoern A. Zeeb #define B_BE_CMAC_EXIT_L1_EN BIT(7) 290*6d67aabdSBjoern A. Zeeb #define B_BE_DMAC0_EXIT_L1_EN BIT(6) 291*6d67aabdSBjoern A. Zeeb #define B_BE_FORCE_L0 BIT(5) 292*6d67aabdSBjoern A. Zeeb #define B_BE_DBI_RO_WR_DISABLE BIT(4) 293*6d67aabdSBjoern A. Zeeb #define B_BE_SEL_XFER_PENDING BIT(3) 294*6d67aabdSBjoern A. Zeeb #define B_BE_SEL_REQ_ENTR_L1 BIT(2) 295*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_EN_SWENT_L23 BIT(1) 296*6d67aabdSBjoern A. Zeeb #define B_BE_SEL_REQ_EXIT_L1 BIT(0) 297*6d67aabdSBjoern A. Zeeb 298*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_MIX_CFG 0x300C 299*6d67aabdSBjoern A. Zeeb #define B_BE_L1SS_TIMEOUT_CTRL BIT(18) 300*6d67aabdSBjoern A. Zeeb #define B_BE_ASPM_CTRL_L1 BIT(17) 301*6d67aabdSBjoern A. Zeeb #define B_BE_ASPM_CTRL_L0 BIT(16) 302*6d67aabdSBjoern A. Zeeb #define B_BE_XFER_PENDING_FW BIT(11) 303*6d67aabdSBjoern A. Zeeb #define B_BE_XFER_PENDING BIT(10) 304*6d67aabdSBjoern A. Zeeb #define B_BE_REQ_EXIT_L1 BIT(9) 305*6d67aabdSBjoern A. Zeeb #define B_BE_REQ_ENTR_L1 BIT(8) 306*6d67aabdSBjoern A. Zeeb #define B_BE_L1SUB_ENABLE BIT(0) 307*6d67aabdSBjoern A. Zeeb 308*6d67aabdSBjoern A. Zeeb #define R_BE_L1_CLK_CTRL 0x3010 309*6d67aabdSBjoern A. Zeeb #define B_BE_RAS_SD_HOLD_LTSSM BIT(12) 310*6d67aabdSBjoern A. Zeeb #define B_BE_CLK_REQ_N BIT(1) 311*6d67aabdSBjoern A. Zeeb #define B_BE_CLK_PM_EN BIT(0) 312*6d67aabdSBjoern A. Zeeb 313*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_LAT_CTRL 0x3044 314*6d67aabdSBjoern A. Zeeb #define B_BE_ELBI_PHY_REMAP_MASK GENMASK(29, 24) 315*6d67aabdSBjoern A. Zeeb #define B_BE_SYS_SUS_L12_EN BIT(17) 316*6d67aabdSBjoern A. Zeeb #define B_BE_MDIO_S_EN BIT(16) 317*6d67aabdSBjoern A. Zeeb #define B_BE_SYM_AUX_CLK_SEL BIT(15) 318*6d67aabdSBjoern A. Zeeb #define B_BE_RTK_LDO_POWER_LATENCY_MASK GENMASK(11, 10) 319*6d67aabdSBjoern A. Zeeb #define B_BE_RTK_LDO_BIAS_LATENCY_MASK GENMASK(9, 8) 320*6d67aabdSBjoern A. Zeeb #define B_BE_CLK_REQ_LAT_MASK GENMASK(7, 4) 321*6d67aabdSBjoern A. Zeeb #define B_BE_RTK_PM_SEL_OPT BIT(1) 322*6d67aabdSBjoern A. Zeeb #define B_BE_CLK_REQ_SEL BIT(0) 323*6d67aabdSBjoern A. Zeeb 324*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_HIMR0 0x30B0 325*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_HB1_IND_INTA_IMR BIT(31) 326*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_HB0_IND_INTA_IMR BIT(30) 327*6d67aabdSBjoern A. Zeeb #define B_BE_HCI_AXIDMA_INTA_IMR BIT(29) 328*6d67aabdSBjoern A. Zeeb #define B_BE_HC0_IND_INTA_IMR BIT(28) 329*6d67aabdSBjoern A. Zeeb #define B_BE_HD1_IND_INTA_IMR BIT(27) 330*6d67aabdSBjoern A. Zeeb #define B_BE_HD0_IND_INTA_IMR BIT(26) 331*6d67aabdSBjoern A. Zeeb #define B_BE_HS1_IND_INTA_IMR BIT(25) 332*6d67aabdSBjoern A. Zeeb #define B_BE_HS0_IND_INTA_IMR BIT(24) 333*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_HOTRST_INT_EN BIT(16) 334*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FLR_INT_EN BIT(15) 335*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_PERST_INT_EN BIT(14) 336*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_DBG_STE_INT_EN BIT(13) 337*6d67aabdSBjoern A. Zeeb #define B_BE_HB1_IND_INT_EN0 BIT(9) 338*6d67aabdSBjoern A. Zeeb #define B_BE_HB0_IND_INT_EN0 BIT(8) 339*6d67aabdSBjoern A. Zeeb #define B_BE_HC1_IND_INT_EN0 BIT(7) 340*6d67aabdSBjoern A. Zeeb #define B_BE_HCI_AXIDMA_INT_EN0 BIT(5) 341*6d67aabdSBjoern A. Zeeb #define B_BE_HC0_IND_INT_EN0 BIT(4) 342*6d67aabdSBjoern A. Zeeb #define B_BE_HD1_IND_INT_EN0 BIT(3) 343*6d67aabdSBjoern A. Zeeb #define B_BE_HD0_IND_INT_EN0 BIT(2) 344*6d67aabdSBjoern A. Zeeb #define B_BE_HS1_IND_INT_EN0 BIT(1) 345*6d67aabdSBjoern A. Zeeb #define B_BE_HS0_IND_INT_EN0 BIT(0) 346*6d67aabdSBjoern A. Zeeb 347*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_HISR 0x30B4 348*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_HOTRST_INT BIT(16) 349*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_FLR_INT BIT(15) 350*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_PERST_INT BIT(14) 351*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_DBG_STE_INT BIT(13) 352*6d67aabdSBjoern A. Zeeb #define B_BE_HB1IMR_IND BIT(9) 353*6d67aabdSBjoern A. Zeeb #define B_BE_HB0IMR_IND BIT(8) 354*6d67aabdSBjoern A. Zeeb #define B_BE_HC1ISR_IND_INT BIT(7) 355*6d67aabdSBjoern A. Zeeb #define B_BE_HCI_AXIDMA_INT BIT(5) 356*6d67aabdSBjoern A. Zeeb #define B_BE_HC0ISR_IND_INT BIT(4) 357*6d67aabdSBjoern A. Zeeb #define B_BE_HD1ISR_IND_INT BIT(3) 358*6d67aabdSBjoern A. Zeeb #define B_BE_HD0ISR_IND_INT BIT(2) 359*6d67aabdSBjoern A. Zeeb #define B_BE_HS1ISR_IND_INT BIT(1) 360*6d67aabdSBjoern A. Zeeb #define B_BE_HS0ISR_IND_INT BIT(0) 361*6d67aabdSBjoern A. Zeeb 362*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_DMA_IMR_0_V1 0x30B8 363*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RX1P1_IMR0_V1 BIT(23) 364*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RX0P1_IMR0_V1 BIT(22) 365*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_ROQ1_IMR0_V1 BIT(21) 366*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RPQ1_IMR0_V1 BIT(20) 367*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RX1P2_IMR0_V1 BIT(19) 368*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_ROQ0_IMR0_V1 BIT(18) 369*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RPQ0_IMR0_V1 BIT(17) 370*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RX0P2_IMR0_V1 BIT(16) 371*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH14_IMR0 BIT(14) 372*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH13_IMR0 BIT(13) 373*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH12_IMR0 BIT(12) 374*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH11_IMR0 BIT(11) 375*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH10_IMR0 BIT(10) 376*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH9_IMR0 BIT(9) 377*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH8_IMR0 BIT(8) 378*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH7_IMR0 BIT(7) 379*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH6_IMR0 BIT(6) 380*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH5_IMR0 BIT(5) 381*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH4_IMR0 BIT(4) 382*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH3_IMR0 BIT(3) 383*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH2_IMR0 BIT(2) 384*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH1_IMR0 BIT(1) 385*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH0_IMR0 BIT(0) 386*6d67aabdSBjoern A. Zeeb 387*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_DMA_ISR 0x30BC 388*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RX1P1_ISR_V1 BIT(23) 389*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RX0P1_ISR_V1 BIT(22) 390*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_ROQ1_ISR_V1 BIT(21) 391*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RPQ1_ISR_V1 BIT(20) 392*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RX1P2_ISR_V1 BIT(19) 393*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_ROQ0_ISR_V1 BIT(18) 394*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RPQ0_ISR_V1 BIT(17) 395*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_RX0P2_ISR_V1 BIT(16) 396*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH14_ISR BIT(14) 397*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH13_ISR BIT(13) 398*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH12_ISR BIT(12) 399*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH11_ISR BIT(11) 400*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH10_ISR BIT(10) 401*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH9_ISR BIT(9) 402*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH8_ISR BIT(8) 403*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH7_ISR BIT(7) 404*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH6_ISR BIT(6) 405*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH5_ISR BIT(5) 406*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH4_ISR BIT(4) 407*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH3_ISR BIT(3) 408*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH2_ISR BIT(2) 409*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH1_ISR BIT(1) 410*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_CH0_ISR BIT(0) 411*6d67aabdSBjoern A. Zeeb 412*6d67aabdSBjoern A. Zeeb #define R_BE_HAXI_HIMR00 0xB0B0 413*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH5_INT_IMR_V1 BIT(30) 414*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH4_INT_IMR_V1 BIT(29) 415*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH3_INT_IMR_V1 BIT(28) 416*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH2_INT_IMR_V1 BIT(27) 417*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH1_INT_IMR_V1 BIT(26) 418*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH0_INT_IMR_V1 BIT(25) 419*6d67aabdSBjoern A. Zeeb #define B_BE_RXDMA_STUCK_INT_EN_V1 BIT(24) 420*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_STUCK_INT_EN_V1 BIT(23) 421*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH14_INT_EN_V1 BIT(22) 422*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH13_INT_EN_V1 BIT(21) 423*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH12_INT_EN_V1 BIT(20) 424*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH11_INT_EN_V1 BIT(19) 425*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH10_INT_EN_V1 BIT(18) 426*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH9_INT_EN_V1 BIT(17) 427*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH8_INT_EN_V1 BIT(16) 428*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH7_INT_EN_V1 BIT(15) 429*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH6_INT_EN_V1 BIT(14) 430*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH5_INT_EN_V1 BIT(13) 431*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH4_INT_EN_V1 BIT(12) 432*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH3_INT_EN_V1 BIT(11) 433*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH2_INT_EN_V1 BIT(10) 434*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH1_INT_EN_V1 BIT(9) 435*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH0_INT_EN_V1 BIT(8) 436*6d67aabdSBjoern A. Zeeb #define B_BE_RX1P1DMA_INT_EN_V1 BIT(7) 437*6d67aabdSBjoern A. Zeeb #define B_BE_RX0P1DMA_INT_EN_V1 BIT(6) 438*6d67aabdSBjoern A. Zeeb #define B_BE_RO1DMA_INT_EN BIT(5) 439*6d67aabdSBjoern A. Zeeb #define B_BE_RP1DMA_INT_EN BIT(4) 440*6d67aabdSBjoern A. Zeeb #define B_BE_RX1DMA_INT_EN BIT(3) 441*6d67aabdSBjoern A. Zeeb #define B_BE_RO0DMA_INT_EN BIT(2) 442*6d67aabdSBjoern A. Zeeb #define B_BE_RP0DMA_INT_EN BIT(1) 443*6d67aabdSBjoern A. Zeeb #define B_BE_RX0DMA_INT_EN BIT(0) 444*6d67aabdSBjoern A. Zeeb 445*6d67aabdSBjoern A. Zeeb #define R_BE_HAXI_HISR00 0xB0B4 446*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH6_INT BIT(28) 447*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH5_INT BIT(27) 448*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH4_INT BIT(26) 449*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH2_INT BIT(25) 450*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH1_INT BIT(24) 451*6d67aabdSBjoern A. Zeeb #define B_BE_RDU_CH0_INT BIT(23) 452*6d67aabdSBjoern A. Zeeb #define B_BE_RXDMA_STUCK_INT BIT(22) 453*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_STUCK_INT BIT(21) 454*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH14_INT BIT(20) 455*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH13_INT BIT(19) 456*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH12_INT BIT(18) 457*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH11_INT BIT(17) 458*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH10_INT BIT(16) 459*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH9_INT BIT(15) 460*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH8_INT BIT(14) 461*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH7_INT BIT(13) 462*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH6_INT BIT(12) 463*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH5_INT BIT(11) 464*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH4_INT BIT(10) 465*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH3_INT BIT(9) 466*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH2_INT BIT(8) 467*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH1_INT BIT(7) 468*6d67aabdSBjoern A. Zeeb #define B_BE_TXDMA_CH0_INT BIT(6) 469*6d67aabdSBjoern A. Zeeb #define B_BE_RPQ1DMA_INT BIT(5) 470*6d67aabdSBjoern A. Zeeb #define B_BE_RX1P1DMA_INT BIT(4) 471*6d67aabdSBjoern A. Zeeb #define B_BE_RX1DMA_INT BIT(3) 472*6d67aabdSBjoern A. Zeeb #define B_BE_RPQ0DMA_INT BIT(2) 473*6d67aabdSBjoern A. Zeeb #define B_BE_RX0P1DMA_INT BIT(1) 474*6d67aabdSBjoern A. Zeeb #define B_BE_RX0DMA_INT BIT(0) 475*6d67aabdSBjoern A. Zeeb 4768e93258fSBjoern A. Zeeb /* TX/RX */ 4778e93258fSBjoern A. Zeeb #define R_AX_DRV_FW_HSK_0 0x01B0 4788e93258fSBjoern A. Zeeb #define R_AX_DRV_FW_HSK_1 0x01B4 4798e93258fSBjoern A. Zeeb #define R_AX_DRV_FW_HSK_2 0x01B8 4808e93258fSBjoern A. Zeeb #define R_AX_DRV_FW_HSK_3 0x01BC 4818e93258fSBjoern A. Zeeb #define R_AX_DRV_FW_HSK_4 0x01C0 4828e93258fSBjoern A. Zeeb #define R_AX_DRV_FW_HSK_5 0x01C4 4838e93258fSBjoern A. Zeeb #define R_AX_DRV_FW_HSK_6 0x01C8 4848e93258fSBjoern A. Zeeb #define R_AX_DRV_FW_HSK_7 0x01CC 4858e93258fSBjoern A. Zeeb 4868e93258fSBjoern A. Zeeb #define R_AX_RXQ_RXBD_IDX 0x1050 4878e93258fSBjoern A. Zeeb #define R_AX_RPQ_RXBD_IDX 0x1054 4888e93258fSBjoern A. Zeeb #define R_AX_ACH0_TXBD_IDX 0x1058 4898e93258fSBjoern A. Zeeb #define R_AX_ACH1_TXBD_IDX 0x105C 4908e93258fSBjoern A. Zeeb #define R_AX_ACH2_TXBD_IDX 0x1060 4918e93258fSBjoern A. Zeeb #define R_AX_ACH3_TXBD_IDX 0x1064 4928e93258fSBjoern A. Zeeb #define R_AX_ACH4_TXBD_IDX 0x1068 4938e93258fSBjoern A. Zeeb #define R_AX_ACH5_TXBD_IDX 0x106C 4948e93258fSBjoern A. Zeeb #define R_AX_ACH6_TXBD_IDX 0x1070 4958e93258fSBjoern A. Zeeb #define R_AX_ACH7_TXBD_IDX 0x1074 4968e93258fSBjoern A. Zeeb #define R_AX_CH8_TXBD_IDX 0x1078 /* Management Queue band 0 */ 4978e93258fSBjoern A. Zeeb #define R_AX_CH9_TXBD_IDX 0x107C /* HI Queue band 0 */ 4988e93258fSBjoern A. Zeeb #define R_AX_CH10_TXBD_IDX 0x137C /* Management Queue band 1 */ 4998e93258fSBjoern A. Zeeb #define R_AX_CH11_TXBD_IDX 0x1380 /* HI Queue band 1 */ 5008e93258fSBjoern A. Zeeb #define R_AX_CH12_TXBD_IDX 0x1080 /* FWCMD Queue */ 5018e93258fSBjoern A. Zeeb #define R_AX_CH10_TXBD_IDX_V1 0x11D0 5028e93258fSBjoern A. Zeeb #define R_AX_CH11_TXBD_IDX_V1 0x11D4 5038e93258fSBjoern A. Zeeb #define R_AX_RXQ_RXBD_IDX_V1 0x1218 5048e93258fSBjoern A. Zeeb #define R_AX_RPQ_RXBD_IDX_V1 0x121C 5058e93258fSBjoern A. Zeeb #define TXBD_HW_IDX_MASK GENMASK(27, 16) 5068e93258fSBjoern A. Zeeb #define TXBD_HOST_IDX_MASK GENMASK(11, 0) 5078e93258fSBjoern A. Zeeb 5088e93258fSBjoern A. Zeeb #define R_AX_ACH0_TXBD_DESA_L 0x1110 5098e93258fSBjoern A. Zeeb #define R_AX_ACH0_TXBD_DESA_H 0x1114 5108e93258fSBjoern A. Zeeb #define R_AX_ACH1_TXBD_DESA_L 0x1118 5118e93258fSBjoern A. Zeeb #define R_AX_ACH1_TXBD_DESA_H 0x111C 5128e93258fSBjoern A. Zeeb #define R_AX_ACH2_TXBD_DESA_L 0x1120 5138e93258fSBjoern A. Zeeb #define R_AX_ACH2_TXBD_DESA_H 0x1124 5148e93258fSBjoern A. Zeeb #define R_AX_ACH3_TXBD_DESA_L 0x1128 5158e93258fSBjoern A. Zeeb #define R_AX_ACH3_TXBD_DESA_H 0x112C 5168e93258fSBjoern A. Zeeb #define R_AX_ACH4_TXBD_DESA_L 0x1130 5178e93258fSBjoern A. Zeeb #define R_AX_ACH4_TXBD_DESA_H 0x1134 5188e93258fSBjoern A. Zeeb #define R_AX_ACH5_TXBD_DESA_L 0x1138 5198e93258fSBjoern A. Zeeb #define R_AX_ACH5_TXBD_DESA_H 0x113C 5208e93258fSBjoern A. Zeeb #define R_AX_ACH6_TXBD_DESA_L 0x1140 5218e93258fSBjoern A. Zeeb #define R_AX_ACH6_TXBD_DESA_H 0x1144 5228e93258fSBjoern A. Zeeb #define R_AX_ACH7_TXBD_DESA_L 0x1148 5238e93258fSBjoern A. Zeeb #define R_AX_ACH7_TXBD_DESA_H 0x114C 5248e93258fSBjoern A. Zeeb #define R_AX_CH8_TXBD_DESA_L 0x1150 5258e93258fSBjoern A. Zeeb #define R_AX_CH8_TXBD_DESA_H 0x1154 5268e93258fSBjoern A. Zeeb #define R_AX_CH9_TXBD_DESA_L 0x1158 5278e93258fSBjoern A. Zeeb #define R_AX_CH9_TXBD_DESA_H 0x115C 5288e93258fSBjoern A. Zeeb #define R_AX_CH10_TXBD_DESA_L 0x1358 5298e93258fSBjoern A. Zeeb #define R_AX_CH10_TXBD_DESA_H 0x135C 5308e93258fSBjoern A. Zeeb #define R_AX_CH11_TXBD_DESA_L 0x1360 5318e93258fSBjoern A. Zeeb #define R_AX_CH11_TXBD_DESA_H 0x1364 5328e93258fSBjoern A. Zeeb #define R_AX_CH12_TXBD_DESA_L 0x1160 5338e93258fSBjoern A. Zeeb #define R_AX_CH12_TXBD_DESA_H 0x1164 5348e93258fSBjoern A. Zeeb #define R_AX_RXQ_RXBD_DESA_L 0x1100 5358e93258fSBjoern A. Zeeb #define R_AX_RXQ_RXBD_DESA_H 0x1104 5368e93258fSBjoern A. Zeeb #define R_AX_RPQ_RXBD_DESA_L 0x1108 5378e93258fSBjoern A. Zeeb #define R_AX_RPQ_RXBD_DESA_H 0x110C 5388e93258fSBjoern A. Zeeb #define R_AX_RXQ_RXBD_DESA_L_V1 0x1220 5398e93258fSBjoern A. Zeeb #define R_AX_RXQ_RXBD_DESA_H_V1 0x1224 5408e93258fSBjoern A. Zeeb #define R_AX_RPQ_RXBD_DESA_L_V1 0x1228 5418e93258fSBjoern A. Zeeb #define R_AX_RPQ_RXBD_DESA_H_V1 0x122C 5428e93258fSBjoern A. Zeeb #define R_AX_ACH0_TXBD_DESA_L_V1 0x1230 5438e93258fSBjoern A. Zeeb #define R_AX_ACH0_TXBD_DESA_H_V1 0x1234 5448e93258fSBjoern A. Zeeb #define R_AX_ACH1_TXBD_DESA_L_V1 0x1238 5458e93258fSBjoern A. Zeeb #define R_AX_ACH1_TXBD_DESA_H_V1 0x123C 5468e93258fSBjoern A. Zeeb #define R_AX_ACH2_TXBD_DESA_L_V1 0x1240 5478e93258fSBjoern A. Zeeb #define R_AX_ACH2_TXBD_DESA_H_V1 0x1244 5488e93258fSBjoern A. Zeeb #define R_AX_ACH3_TXBD_DESA_L_V1 0x1248 5498e93258fSBjoern A. Zeeb #define R_AX_ACH3_TXBD_DESA_H_V1 0x124C 5508e93258fSBjoern A. Zeeb #define R_AX_ACH4_TXBD_DESA_L_V1 0x1250 5518e93258fSBjoern A. Zeeb #define R_AX_ACH4_TXBD_DESA_H_V1 0x1254 5528e93258fSBjoern A. Zeeb #define R_AX_ACH5_TXBD_DESA_L_V1 0x1258 5538e93258fSBjoern A. Zeeb #define R_AX_ACH5_TXBD_DESA_H_V1 0x125C 5548e93258fSBjoern A. Zeeb #define R_AX_ACH6_TXBD_DESA_L_V1 0x1260 5558e93258fSBjoern A. Zeeb #define R_AX_ACH6_TXBD_DESA_H_V1 0x1264 5568e93258fSBjoern A. Zeeb #define R_AX_ACH7_TXBD_DESA_L_V1 0x1268 5578e93258fSBjoern A. Zeeb #define R_AX_ACH7_TXBD_DESA_H_V1 0x126C 5588e93258fSBjoern A. Zeeb #define R_AX_CH8_TXBD_DESA_L_V1 0x1270 5598e93258fSBjoern A. Zeeb #define R_AX_CH8_TXBD_DESA_H_V1 0x1274 5608e93258fSBjoern A. Zeeb #define R_AX_CH9_TXBD_DESA_L_V1 0x1278 5618e93258fSBjoern A. Zeeb #define R_AX_CH9_TXBD_DESA_H_V1 0x127C 5628e93258fSBjoern A. Zeeb #define R_AX_CH12_TXBD_DESA_L_V1 0x1280 5638e93258fSBjoern A. Zeeb #define R_AX_CH12_TXBD_DESA_H_V1 0x1284 5648e93258fSBjoern A. Zeeb #define R_AX_CH10_TXBD_DESA_L_V1 0x1458 5658e93258fSBjoern A. Zeeb #define R_AX_CH10_TXBD_DESA_H_V1 0x145C 5668e93258fSBjoern A. Zeeb #define R_AX_CH11_TXBD_DESA_L_V1 0x1460 5678e93258fSBjoern A. Zeeb #define R_AX_CH11_TXBD_DESA_H_V1 0x1464 5688e93258fSBjoern A. Zeeb #define B_AX_DESC_NUM_MSK GENMASK(11, 0) 5698e93258fSBjoern A. Zeeb 5708e93258fSBjoern A. Zeeb #define R_AX_RXQ_RXBD_NUM 0x1020 5718e93258fSBjoern A. Zeeb #define R_AX_RPQ_RXBD_NUM 0x1022 5728e93258fSBjoern A. Zeeb #define R_AX_ACH0_TXBD_NUM 0x1024 5738e93258fSBjoern A. Zeeb #define R_AX_ACH1_TXBD_NUM 0x1026 5748e93258fSBjoern A. Zeeb #define R_AX_ACH2_TXBD_NUM 0x1028 5758e93258fSBjoern A. Zeeb #define R_AX_ACH3_TXBD_NUM 0x102A 5768e93258fSBjoern A. Zeeb #define R_AX_ACH4_TXBD_NUM 0x102C 5778e93258fSBjoern A. Zeeb #define R_AX_ACH5_TXBD_NUM 0x102E 5788e93258fSBjoern A. Zeeb #define R_AX_ACH6_TXBD_NUM 0x1030 5798e93258fSBjoern A. Zeeb #define R_AX_ACH7_TXBD_NUM 0x1032 5808e93258fSBjoern A. Zeeb #define R_AX_CH8_TXBD_NUM 0x1034 5818e93258fSBjoern A. Zeeb #define R_AX_CH9_TXBD_NUM 0x1036 5828e93258fSBjoern A. Zeeb #define R_AX_CH10_TXBD_NUM 0x1338 5838e93258fSBjoern A. Zeeb #define R_AX_CH11_TXBD_NUM 0x133A 5848e93258fSBjoern A. Zeeb #define R_AX_CH12_TXBD_NUM 0x1038 5858e93258fSBjoern A. Zeeb #define R_AX_RXQ_RXBD_NUM_V1 0x1210 5868e93258fSBjoern A. Zeeb #define R_AX_RPQ_RXBD_NUM_V1 0x1212 5878e93258fSBjoern A. Zeeb #define R_AX_CH10_TXBD_NUM_V1 0x1438 5888e93258fSBjoern A. Zeeb #define R_AX_CH11_TXBD_NUM_V1 0x143A 5898e93258fSBjoern A. Zeeb 5908e93258fSBjoern A. Zeeb #define R_AX_ACH0_BDRAM_CTRL 0x1200 5918e93258fSBjoern A. Zeeb #define R_AX_ACH1_BDRAM_CTRL 0x1204 5928e93258fSBjoern A. Zeeb #define R_AX_ACH2_BDRAM_CTRL 0x1208 5938e93258fSBjoern A. Zeeb #define R_AX_ACH3_BDRAM_CTRL 0x120C 5948e93258fSBjoern A. Zeeb #define R_AX_ACH4_BDRAM_CTRL 0x1210 5958e93258fSBjoern A. Zeeb #define R_AX_ACH5_BDRAM_CTRL 0x1214 5968e93258fSBjoern A. Zeeb #define R_AX_ACH6_BDRAM_CTRL 0x1218 5978e93258fSBjoern A. Zeeb #define R_AX_ACH7_BDRAM_CTRL 0x121C 5988e93258fSBjoern A. Zeeb #define R_AX_CH8_BDRAM_CTRL 0x1220 5998e93258fSBjoern A. Zeeb #define R_AX_CH9_BDRAM_CTRL 0x1224 6008e93258fSBjoern A. Zeeb #define R_AX_CH10_BDRAM_CTRL 0x1320 6018e93258fSBjoern A. Zeeb #define R_AX_CH11_BDRAM_CTRL 0x1324 6028e93258fSBjoern A. Zeeb #define R_AX_CH12_BDRAM_CTRL 0x1228 6038e93258fSBjoern A. Zeeb #define R_AX_ACH0_BDRAM_CTRL_V1 0x1300 6048e93258fSBjoern A. Zeeb #define R_AX_ACH1_BDRAM_CTRL_V1 0x1304 6058e93258fSBjoern A. Zeeb #define R_AX_ACH2_BDRAM_CTRL_V1 0x1308 6068e93258fSBjoern A. Zeeb #define R_AX_ACH3_BDRAM_CTRL_V1 0x130C 6078e93258fSBjoern A. Zeeb #define R_AX_ACH4_BDRAM_CTRL_V1 0x1310 6088e93258fSBjoern A. Zeeb #define R_AX_ACH5_BDRAM_CTRL_V1 0x1314 6098e93258fSBjoern A. Zeeb #define R_AX_ACH6_BDRAM_CTRL_V1 0x1318 6108e93258fSBjoern A. Zeeb #define R_AX_ACH7_BDRAM_CTRL_V1 0x131C 6118e93258fSBjoern A. Zeeb #define R_AX_CH8_BDRAM_CTRL_V1 0x1320 6128e93258fSBjoern A. Zeeb #define R_AX_CH9_BDRAM_CTRL_V1 0x1324 6138e93258fSBjoern A. Zeeb #define R_AX_CH12_BDRAM_CTRL_V1 0x1328 6148e93258fSBjoern A. Zeeb #define R_AX_CH10_BDRAM_CTRL_V1 0x1420 6158e93258fSBjoern A. Zeeb #define R_AX_CH11_BDRAM_CTRL_V1 0x1424 6168e93258fSBjoern A. Zeeb #define BDRAM_SIDX_MASK GENMASK(7, 0) 6178e93258fSBjoern A. Zeeb #define BDRAM_MAX_MASK GENMASK(15, 8) 6188e93258fSBjoern A. Zeeb #define BDRAM_MIN_MASK GENMASK(23, 16) 6198e93258fSBjoern A. Zeeb 6208e93258fSBjoern A. Zeeb #define R_AX_PCIE_INIT_CFG1 0x1000 6218e93258fSBjoern A. Zeeb #define B_AX_PCIE_RXRST_KEEP_REG BIT(23) 6228e93258fSBjoern A. Zeeb #define B_AX_PCIE_TXRST_KEEP_REG BIT(22) 6238e93258fSBjoern A. Zeeb #define B_AX_PCIE_PERST_KEEP_REG BIT(21) 6248e93258fSBjoern A. Zeeb #define B_AX_PCIE_FLR_KEEP_REG BIT(20) 6258e93258fSBjoern A. Zeeb #define B_AX_PCIE_TRAIN_KEEP_REG BIT(19) 6268e93258fSBjoern A. Zeeb #define B_AX_RXBD_MODE BIT(18) 6278e93258fSBjoern A. Zeeb #define B_AX_PCIE_MAX_RXDMA_MASK GENMASK(16, 14) 6288e93258fSBjoern A. Zeeb #define B_AX_RXHCI_EN BIT(13) 6298e93258fSBjoern A. Zeeb #define B_AX_LATENCY_CONTROL BIT(12) 6308e93258fSBjoern A. Zeeb #define B_AX_TXHCI_EN BIT(11) 6318e93258fSBjoern A. Zeeb #define B_AX_PCIE_MAX_TXDMA_MASK GENMASK(10, 8) 6328e93258fSBjoern A. Zeeb #define B_AX_TX_TRUNC_MODE BIT(5) 6338e93258fSBjoern A. Zeeb #define B_AX_RX_TRUNC_MODE BIT(4) 6348e93258fSBjoern A. Zeeb #define B_AX_RST_BDRAM BIT(3) 6358e93258fSBjoern A. Zeeb #define B_AX_DIS_RXDMA_PRE BIT(2) 6368e93258fSBjoern A. Zeeb 6378e93258fSBjoern A. Zeeb #define R_AX_TXDMA_ADDR_H 0x10F0 6388e93258fSBjoern A. Zeeb #define R_AX_RXDMA_ADDR_H 0x10F4 6398e93258fSBjoern A. Zeeb 6408e93258fSBjoern A. Zeeb #define R_AX_PCIE_DMA_STOP1 0x1010 6418e93258fSBjoern A. Zeeb #define B_AX_STOP_PCIEIO BIT(20) 6428e93258fSBjoern A. Zeeb #define B_AX_STOP_WPDMA BIT(19) 6438e93258fSBjoern A. Zeeb #define B_AX_STOP_CH12 BIT(18) 6448e93258fSBjoern A. Zeeb #define B_AX_STOP_CH9 BIT(17) 6458e93258fSBjoern A. Zeeb #define B_AX_STOP_CH8 BIT(16) 6468e93258fSBjoern A. Zeeb #define B_AX_STOP_ACH7 BIT(15) 6478e93258fSBjoern A. Zeeb #define B_AX_STOP_ACH6 BIT(14) 6488e93258fSBjoern A. Zeeb #define B_AX_STOP_ACH5 BIT(13) 6498e93258fSBjoern A. Zeeb #define B_AX_STOP_ACH4 BIT(12) 6508e93258fSBjoern A. Zeeb #define B_AX_STOP_ACH3 BIT(11) 6518e93258fSBjoern A. Zeeb #define B_AX_STOP_ACH2 BIT(10) 6528e93258fSBjoern A. Zeeb #define B_AX_STOP_ACH1 BIT(9) 6538e93258fSBjoern A. Zeeb #define B_AX_STOP_ACH0 BIT(8) 6548e93258fSBjoern A. Zeeb #define B_AX_STOP_RPQ BIT(1) 6558e93258fSBjoern A. Zeeb #define B_AX_STOP_RXQ BIT(0) 6568e93258fSBjoern A. Zeeb #define B_AX_TX_STOP1_ALL GENMASK(18, 8) 657e2340276SBjoern A. Zeeb #define B_AX_TX_STOP1_MASK (B_AX_STOP_ACH0 | B_AX_STOP_ACH1 | \ 658e2340276SBjoern A. Zeeb B_AX_STOP_ACH2 | B_AX_STOP_ACH3 | \ 659e2340276SBjoern A. Zeeb B_AX_STOP_ACH4 | B_AX_STOP_ACH5 | \ 660e2340276SBjoern A. Zeeb B_AX_STOP_ACH6 | B_AX_STOP_ACH7 | \ 661e2340276SBjoern A. Zeeb B_AX_STOP_CH8 | B_AX_STOP_CH9 | \ 662e2340276SBjoern A. Zeeb B_AX_STOP_CH12) 663e2340276SBjoern A. Zeeb #define B_AX_TX_STOP1_MASK_V1 (B_AX_STOP_ACH0 | B_AX_STOP_ACH1 | \ 664e2340276SBjoern A. Zeeb B_AX_STOP_ACH2 | B_AX_STOP_ACH3 | \ 665e2340276SBjoern A. Zeeb B_AX_STOP_CH8 | B_AX_STOP_CH9 | \ 666e2340276SBjoern A. Zeeb B_AX_STOP_CH12) 6678e93258fSBjoern A. Zeeb 6688e93258fSBjoern A. Zeeb #define R_AX_PCIE_DMA_STOP2 0x1310 6698e93258fSBjoern A. Zeeb #define B_AX_STOP_CH11 BIT(1) 6708e93258fSBjoern A. Zeeb #define B_AX_STOP_CH10 BIT(0) 6718e93258fSBjoern A. Zeeb #define B_AX_TX_STOP2_ALL GENMASK(1, 0) 6728e93258fSBjoern A. Zeeb 6738e93258fSBjoern A. Zeeb #define R_AX_TXBD_RWPTR_CLR1 0x1014 6748e93258fSBjoern A. Zeeb #define B_AX_CLR_CH12_IDX BIT(10) 6758e93258fSBjoern A. Zeeb #define B_AX_CLR_CH9_IDX BIT(9) 6768e93258fSBjoern A. Zeeb #define B_AX_CLR_CH8_IDX BIT(8) 6778e93258fSBjoern A. Zeeb #define B_AX_CLR_ACH7_IDX BIT(7) 6788e93258fSBjoern A. Zeeb #define B_AX_CLR_ACH6_IDX BIT(6) 6798e93258fSBjoern A. Zeeb #define B_AX_CLR_ACH5_IDX BIT(5) 6808e93258fSBjoern A. Zeeb #define B_AX_CLR_ACH4_IDX BIT(4) 6818e93258fSBjoern A. Zeeb #define B_AX_CLR_ACH3_IDX BIT(3) 6828e93258fSBjoern A. Zeeb #define B_AX_CLR_ACH2_IDX BIT(2) 6838e93258fSBjoern A. Zeeb #define B_AX_CLR_ACH1_IDX BIT(1) 6848e93258fSBjoern A. Zeeb #define B_AX_CLR_ACH0_IDX BIT(0) 6858e93258fSBjoern A. Zeeb #define B_AX_TXBD_CLR1_ALL GENMASK(10, 0) 6868e93258fSBjoern A. Zeeb 6878e93258fSBjoern A. Zeeb #define R_AX_RXBD_RWPTR_CLR 0x1018 6888e93258fSBjoern A. Zeeb #define B_AX_CLR_RPQ_IDX BIT(1) 6898e93258fSBjoern A. Zeeb #define B_AX_CLR_RXQ_IDX BIT(0) 6908e93258fSBjoern A. Zeeb #define B_AX_RXBD_CLR_ALL GENMASK(1, 0) 6918e93258fSBjoern A. Zeeb 6928e93258fSBjoern A. Zeeb #define R_AX_TXBD_RWPTR_CLR2 0x1314 6938e93258fSBjoern A. Zeeb #define B_AX_CLR_CH11_IDX BIT(1) 6948e93258fSBjoern A. Zeeb #define B_AX_CLR_CH10_IDX BIT(0) 6958e93258fSBjoern A. Zeeb #define B_AX_TXBD_CLR2_ALL GENMASK(1, 0) 6968e93258fSBjoern A. Zeeb 6978e93258fSBjoern A. Zeeb #define R_AX_PCIE_DMA_BUSY1 0x101C 6988e93258fSBjoern A. Zeeb #define B_AX_PCIEIO_RX_BUSY BIT(22) 6998e93258fSBjoern A. Zeeb #define B_AX_PCIEIO_TX_BUSY BIT(21) 7008e93258fSBjoern A. Zeeb #define B_AX_PCIEIO_BUSY BIT(20) 7018e93258fSBjoern A. Zeeb #define B_AX_WPDMA_BUSY BIT(19) 7028e93258fSBjoern A. Zeeb #define B_AX_CH12_BUSY BIT(18) 7038e93258fSBjoern A. Zeeb #define B_AX_CH9_BUSY BIT(17) 7048e93258fSBjoern A. Zeeb #define B_AX_CH8_BUSY BIT(16) 7058e93258fSBjoern A. Zeeb #define B_AX_ACH7_BUSY BIT(15) 7068e93258fSBjoern A. Zeeb #define B_AX_ACH6_BUSY BIT(14) 7078e93258fSBjoern A. Zeeb #define B_AX_ACH5_BUSY BIT(13) 7088e93258fSBjoern A. Zeeb #define B_AX_ACH4_BUSY BIT(12) 7098e93258fSBjoern A. Zeeb #define B_AX_ACH3_BUSY BIT(11) 7108e93258fSBjoern A. Zeeb #define B_AX_ACH2_BUSY BIT(10) 7118e93258fSBjoern A. Zeeb #define B_AX_ACH1_BUSY BIT(9) 7128e93258fSBjoern A. Zeeb #define B_AX_ACH0_BUSY BIT(8) 7138e93258fSBjoern A. Zeeb #define B_AX_RPQ_BUSY BIT(1) 7148e93258fSBjoern A. Zeeb #define B_AX_RXQ_BUSY BIT(0) 715e2340276SBjoern A. Zeeb #define DMA_BUSY1_CHECK (B_AX_ACH0_BUSY | B_AX_ACH1_BUSY | B_AX_ACH2_BUSY | \ 716e2340276SBjoern A. Zeeb B_AX_ACH3_BUSY | B_AX_ACH4_BUSY | B_AX_ACH5_BUSY | \ 717e2340276SBjoern A. Zeeb B_AX_ACH6_BUSY | B_AX_ACH7_BUSY | B_AX_CH8_BUSY | \ 718e2340276SBjoern A. Zeeb B_AX_CH9_BUSY | B_AX_CH12_BUSY) 719e2340276SBjoern A. Zeeb #define DMA_BUSY1_CHECK_V1 (B_AX_ACH0_BUSY | B_AX_ACH1_BUSY | B_AX_ACH2_BUSY | \ 720e2340276SBjoern A. Zeeb B_AX_ACH3_BUSY | B_AX_CH8_BUSY | B_AX_CH9_BUSY | \ 721e2340276SBjoern A. Zeeb B_AX_CH12_BUSY) 7228e93258fSBjoern A. Zeeb 7238e93258fSBjoern A. Zeeb #define R_AX_PCIE_DMA_BUSY2 0x131C 7248e93258fSBjoern A. Zeeb #define B_AX_CH11_BUSY BIT(1) 7258e93258fSBjoern A. Zeeb #define B_AX_CH10_BUSY BIT(0) 7268e93258fSBjoern A. Zeeb 727*6d67aabdSBjoern A. Zeeb #define R_AX_WP_ADDR_H_SEL0_3 0x1334 728*6d67aabdSBjoern A. Zeeb #define R_AX_WP_ADDR_H_SEL4_7 0x1338 729*6d67aabdSBjoern A. Zeeb #define R_AX_WP_ADDR_H_SEL8_11 0x133C 730*6d67aabdSBjoern A. Zeeb #define R_AX_WP_ADDR_H_SEL12_15 0x1340 731*6d67aabdSBjoern A. Zeeb 732*6d67aabdSBjoern A. Zeeb #define R_BE_HAXI_DMA_STOP1 0xB010 733*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_WPDMA BIT(31) 734*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH14 BIT(14) 735*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH13 BIT(13) 736*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH12 BIT(12) 737*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH11 BIT(11) 738*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH10 BIT(10) 739*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH9 BIT(9) 740*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH8 BIT(8) 741*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH7 BIT(7) 742*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH6 BIT(6) 743*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH5 BIT(5) 744*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH4 BIT(4) 745*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH3 BIT(3) 746*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH2 BIT(2) 747*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH1 BIT(1) 748*6d67aabdSBjoern A. Zeeb #define B_BE_STOP_CH0 BIT(0) 749*6d67aabdSBjoern A. Zeeb #define B_BE_TX_STOP1_MASK (B_BE_STOP_CH0 | B_BE_STOP_CH1 | \ 750*6d67aabdSBjoern A. Zeeb B_BE_STOP_CH2 | B_BE_STOP_CH3 | \ 751*6d67aabdSBjoern A. Zeeb B_BE_STOP_CH4 | B_BE_STOP_CH5 | \ 752*6d67aabdSBjoern A. Zeeb B_BE_STOP_CH6 | B_BE_STOP_CH7 | \ 753*6d67aabdSBjoern A. Zeeb B_BE_STOP_CH8 | B_BE_STOP_CH9 | \ 754*6d67aabdSBjoern A. Zeeb B_BE_STOP_CH10 | B_BE_STOP_CH11 | \ 755*6d67aabdSBjoern A. Zeeb B_BE_STOP_CH12) 756*6d67aabdSBjoern A. Zeeb 757*6d67aabdSBjoern A. Zeeb #define R_BE_CH0_TXBD_NUM_V1 0xB030 758*6d67aabdSBjoern A. Zeeb #define R_BE_CH1_TXBD_NUM_V1 0xB032 759*6d67aabdSBjoern A. Zeeb #define R_BE_CH2_TXBD_NUM_V1 0xB034 760*6d67aabdSBjoern A. Zeeb #define R_BE_CH3_TXBD_NUM_V1 0xB036 761*6d67aabdSBjoern A. Zeeb #define R_BE_CH4_TXBD_NUM_V1 0xB038 762*6d67aabdSBjoern A. Zeeb #define R_BE_CH5_TXBD_NUM_V1 0xB03A 763*6d67aabdSBjoern A. Zeeb #define R_BE_CH6_TXBD_NUM_V1 0xB03C 764*6d67aabdSBjoern A. Zeeb #define R_BE_CH7_TXBD_NUM_V1 0xB03E 765*6d67aabdSBjoern A. Zeeb #define R_BE_CH8_TXBD_NUM_V1 0xB040 766*6d67aabdSBjoern A. Zeeb #define R_BE_CH9_TXBD_NUM_V1 0xB042 767*6d67aabdSBjoern A. Zeeb #define R_BE_CH10_TXBD_NUM_V1 0xB044 768*6d67aabdSBjoern A. Zeeb #define R_BE_CH11_TXBD_NUM_V1 0xB046 769*6d67aabdSBjoern A. Zeeb #define R_BE_CH12_TXBD_NUM_V1 0xB048 770*6d67aabdSBjoern A. Zeeb #define R_BE_CH13_TXBD_NUM_V1 0xB04C 771*6d67aabdSBjoern A. Zeeb #define R_BE_CH14_TXBD_NUM_V1 0xB04E 772*6d67aabdSBjoern A. Zeeb 773*6d67aabdSBjoern A. Zeeb #define R_BE_RXQ0_RXBD_NUM_V1 0xB050 774*6d67aabdSBjoern A. Zeeb #define R_BE_RPQ0_RXBD_NUM_V1 0xB052 775*6d67aabdSBjoern A. Zeeb 776*6d67aabdSBjoern A. Zeeb #define R_BE_CH0_TXBD_IDX_V1 0xB100 777*6d67aabdSBjoern A. Zeeb #define R_BE_CH1_TXBD_IDX_V1 0xB104 778*6d67aabdSBjoern A. Zeeb #define R_BE_CH2_TXBD_IDX_V1 0xB108 779*6d67aabdSBjoern A. Zeeb #define R_BE_CH3_TXBD_IDX_V1 0xB10C 780*6d67aabdSBjoern A. Zeeb #define R_BE_CH4_TXBD_IDX_V1 0xB110 781*6d67aabdSBjoern A. Zeeb #define R_BE_CH5_TXBD_IDX_V1 0xB114 782*6d67aabdSBjoern A. Zeeb #define R_BE_CH6_TXBD_IDX_V1 0xB118 783*6d67aabdSBjoern A. Zeeb #define R_BE_CH7_TXBD_IDX_V1 0xB11C 784*6d67aabdSBjoern A. Zeeb #define R_BE_CH8_TXBD_IDX_V1 0xB120 785*6d67aabdSBjoern A. Zeeb #define R_BE_CH9_TXBD_IDX_V1 0xB124 786*6d67aabdSBjoern A. Zeeb #define R_BE_CH10_TXBD_IDX_V1 0xB128 787*6d67aabdSBjoern A. Zeeb #define R_BE_CH11_TXBD_IDX_V1 0xB12C 788*6d67aabdSBjoern A. Zeeb #define R_BE_CH12_TXBD_IDX_V1 0xB130 789*6d67aabdSBjoern A. Zeeb #define R_BE_CH13_TXBD_IDX_V1 0xB134 790*6d67aabdSBjoern A. Zeeb #define R_BE_CH14_TXBD_IDX_V1 0xB138 791*6d67aabdSBjoern A. Zeeb 792*6d67aabdSBjoern A. Zeeb #define R_BE_RXQ0_RXBD_IDX_V1 0xB160 793*6d67aabdSBjoern A. Zeeb #define R_BE_RPQ0_RXBD_IDX_V1 0xB164 794*6d67aabdSBjoern A. Zeeb 795*6d67aabdSBjoern A. Zeeb #define R_BE_CH0_TXBD_DESA_L_V1 0xB200 796*6d67aabdSBjoern A. Zeeb #define R_BE_CH0_TXBD_DESA_H_V1 0xB204 797*6d67aabdSBjoern A. Zeeb #define R_BE_CH1_TXBD_DESA_L_V1 0xB208 798*6d67aabdSBjoern A. Zeeb #define R_BE_CH1_TXBD_DESA_H_V1 0xB20C 799*6d67aabdSBjoern A. Zeeb #define R_BE_CH2_TXBD_DESA_L_V1 0xB210 800*6d67aabdSBjoern A. Zeeb #define R_BE_CH2_TXBD_DESA_H_V1 0xB214 801*6d67aabdSBjoern A. Zeeb #define R_BE_CH3_TXBD_DESA_L_V1 0xB218 802*6d67aabdSBjoern A. Zeeb #define R_BE_CH3_TXBD_DESA_H_V1 0xB21C 803*6d67aabdSBjoern A. Zeeb #define R_BE_CH4_TXBD_DESA_L_V1 0xB220 804*6d67aabdSBjoern A. Zeeb #define R_BE_CH4_TXBD_DESA_H_V1 0xB224 805*6d67aabdSBjoern A. Zeeb #define R_BE_CH5_TXBD_DESA_L_V1 0xB228 806*6d67aabdSBjoern A. Zeeb #define R_BE_CH5_TXBD_DESA_H_V1 0xB22C 807*6d67aabdSBjoern A. Zeeb #define R_BE_CH6_TXBD_DESA_L_V1 0xB230 808*6d67aabdSBjoern A. Zeeb #define R_BE_CH6_TXBD_DESA_H_V1 0xB234 809*6d67aabdSBjoern A. Zeeb #define R_BE_CH7_TXBD_DESA_L_V1 0xB238 810*6d67aabdSBjoern A. Zeeb #define R_BE_CH7_TXBD_DESA_H_V1 0xB23C 811*6d67aabdSBjoern A. Zeeb #define R_BE_CH8_TXBD_DESA_L_V1 0xB240 812*6d67aabdSBjoern A. Zeeb #define R_BE_CH8_TXBD_DESA_H_V1 0xB244 813*6d67aabdSBjoern A. Zeeb #define R_BE_CH9_TXBD_DESA_L_V1 0xB248 814*6d67aabdSBjoern A. Zeeb #define R_BE_CH9_TXBD_DESA_H_V1 0xB24C 815*6d67aabdSBjoern A. Zeeb #define R_BE_CH10_TXBD_DESA_L_V1 0xB250 816*6d67aabdSBjoern A. Zeeb #define R_BE_CH10_TXBD_DESA_H_V1 0xB254 817*6d67aabdSBjoern A. Zeeb #define R_BE_CH11_TXBD_DESA_L_V1 0xB258 818*6d67aabdSBjoern A. Zeeb #define R_BE_CH11_TXBD_DESA_H_V1 0xB25C 819*6d67aabdSBjoern A. Zeeb #define R_BE_CH12_TXBD_DESA_L_V1 0xB260 820*6d67aabdSBjoern A. Zeeb #define R_BE_CH12_TXBD_DESA_H_V1 0xB264 821*6d67aabdSBjoern A. Zeeb #define R_BE_CH13_TXBD_DESA_L_V1 0xB268 822*6d67aabdSBjoern A. Zeeb #define R_BE_CH13_TXBD_DESA_H_V1 0xB26C 823*6d67aabdSBjoern A. Zeeb #define R_BE_CH14_TXBD_DESA_L_V1 0xB270 824*6d67aabdSBjoern A. Zeeb #define R_BE_CH14_TXBD_DESA_H_V1 0xB274 825*6d67aabdSBjoern A. Zeeb 826*6d67aabdSBjoern A. Zeeb #define R_BE_RXQ0_RXBD_DESA_L_V1 0xB300 827*6d67aabdSBjoern A. Zeeb #define R_BE_RXQ0_RXBD_DESA_H_V1 0xB304 828*6d67aabdSBjoern A. Zeeb #define R_BE_RPQ0_RXBD_DESA_L_V1 0xB308 829*6d67aabdSBjoern A. Zeeb #define R_BE_RPQ0_RXBD_DESA_H_V1 0xB30C 830*6d67aabdSBjoern A. Zeeb 831*6d67aabdSBjoern A. Zeeb #define R_BE_WP_ADDR_H_SEL0_3_V1 0xB420 832*6d67aabdSBjoern A. Zeeb #define R_BE_WP_ADDR_H_SEL4_7_V1 0xB424 833*6d67aabdSBjoern A. Zeeb #define R_BE_WP_ADDR_H_SEL8_11_V1 0xB428 834*6d67aabdSBjoern A. Zeeb #define R_BE_WP_ADDR_H_SEL12_15_V1 0xB42C 835*6d67aabdSBjoern A. Zeeb 8368e93258fSBjoern A. Zeeb /* Configure */ 8378e93258fSBjoern A. Zeeb #define R_AX_PCIE_INIT_CFG2 0x1004 8388e93258fSBjoern A. Zeeb #define B_AX_WD_ITVL_IDLE GENMASK(27, 24) 8398e93258fSBjoern A. Zeeb #define B_AX_WD_ITVL_ACT GENMASK(19, 16) 8408e93258fSBjoern A. Zeeb #define B_AX_PCIE_RX_APPLEN_MASK GENMASK(13, 0) 8418e93258fSBjoern A. Zeeb 8428e93258fSBjoern A. Zeeb #define R_AX_PCIE_PS_CTRL 0x1008 8438e93258fSBjoern A. Zeeb #define B_AX_L1OFF_PWR_OFF_EN BIT(5) 8448e93258fSBjoern A. Zeeb 8458e93258fSBjoern A. Zeeb #define R_AX_INT_MIT_RX 0x10D4 8468e93258fSBjoern A. Zeeb #define B_AX_RXMIT_RXP2_SEL BIT(19) 8478e93258fSBjoern A. Zeeb #define B_AX_RXMIT_RXP1_SEL BIT(18) 8488e93258fSBjoern A. Zeeb #define B_AX_RXTIMER_UNIT_MASK GENMASK(17, 16) 8498e93258fSBjoern A. Zeeb #define AX_RXTIMER_UNIT_64US 0 8508e93258fSBjoern A. Zeeb #define AX_RXTIMER_UNIT_128US 1 8518e93258fSBjoern A. Zeeb #define AX_RXTIMER_UNIT_256US 2 8528e93258fSBjoern A. Zeeb #define AX_RXTIMER_UNIT_512US 3 8538e93258fSBjoern A. Zeeb #define B_AX_RXCOUNTER_MATCH_MASK GENMASK(15, 8) 8548e93258fSBjoern A. Zeeb #define B_AX_RXTIMER_MATCH_MASK GENMASK(7, 0) 8558e93258fSBjoern A. Zeeb 856*6d67aabdSBjoern A. Zeeb #define R_AX_DBG_ERR_FLAG_V1 0x1104 857*6d67aabdSBjoern A. Zeeb 858*6d67aabdSBjoern A. Zeeb #define R_AX_INT_MIT_RX_V1 0x1184 859*6d67aabdSBjoern A. Zeeb #define B_AX_RXMIT_RXP2_SEL_V1 BIT(19) 860*6d67aabdSBjoern A. Zeeb #define B_AX_RXMIT_RXP1_SEL_V1 BIT(18) 861*6d67aabdSBjoern A. Zeeb #define B_AX_MIT_RXTIMER_UNIT_MASK GENMASK(17, 16) 862*6d67aabdSBjoern A. Zeeb #define B_AX_MIT_RXCOUNTER_MATCH_MASK GENMASK(15, 8) 863*6d67aabdSBjoern A. Zeeb #define B_AX_MIT_RXTIMER_MATCH_MASK GENMASK(7, 0) 864*6d67aabdSBjoern A. Zeeb 8658e93258fSBjoern A. Zeeb #define R_AX_DBG_ERR_FLAG 0x11C4 8668e93258fSBjoern A. Zeeb #define B_AX_PCIE_RPQ_FULL BIT(29) 8678e93258fSBjoern A. Zeeb #define B_AX_PCIE_RXQ_FULL BIT(28) 8688e93258fSBjoern A. Zeeb #define B_AX_CPL_STATUS_MASK GENMASK(27, 25) 8698e93258fSBjoern A. Zeeb #define B_AX_RX_STUCK BIT(22) 8708e93258fSBjoern A. Zeeb #define B_AX_TX_STUCK BIT(21) 8718e93258fSBjoern A. Zeeb #define B_AX_PCIEDBG_TXERR0 BIT(16) 8728e93258fSBjoern A. Zeeb #define B_AX_PCIE_RXP1_ERR0 BIT(4) 8738e93258fSBjoern A. Zeeb #define B_AX_PCIE_TXBD_LEN0 BIT(1) 8748e93258fSBjoern A. Zeeb #define B_AX_PCIE_TXBD_4KBOUD_LENERR BIT(0) 8758e93258fSBjoern A. Zeeb 8768e93258fSBjoern A. Zeeb #define R_AX_TXBD_RWPTR_CLR2_V1 0x11C4 8778e93258fSBjoern A. Zeeb #define B_AX_CLR_CH11_IDX BIT(1) 8788e93258fSBjoern A. Zeeb #define B_AX_CLR_CH10_IDX BIT(0) 8798e93258fSBjoern A. Zeeb 8808e93258fSBjoern A. Zeeb #define R_AX_LBC_WATCHDOG 0x11D8 8818e93258fSBjoern A. Zeeb #define B_AX_LBC_TIMER GENMASK(7, 4) 8828e93258fSBjoern A. Zeeb #define B_AX_LBC_FLAG BIT(1) 8838e93258fSBjoern A. Zeeb #define B_AX_LBC_EN BIT(0) 8848e93258fSBjoern A. Zeeb 8858e93258fSBjoern A. Zeeb #define R_AX_RXBD_RWPTR_CLR_V1 0x1200 8868e93258fSBjoern A. Zeeb #define B_AX_CLR_RPQ_IDX BIT(1) 8878e93258fSBjoern A. Zeeb #define B_AX_CLR_RXQ_IDX BIT(0) 8888e93258fSBjoern A. Zeeb 8898e93258fSBjoern A. Zeeb #define R_AX_HAXI_EXP_CTRL 0x1204 8908e93258fSBjoern A. Zeeb #define B_AX_MAX_TAG_NUM_V1_MASK GENMASK(2, 0) 8918e93258fSBjoern A. Zeeb 8928e93258fSBjoern A. Zeeb #define R_AX_PCIE_EXP_CTRL 0x13F0 8938e93258fSBjoern A. Zeeb #define B_AX_EN_CHKDSC_NO_RX_STUCK BIT(20) 8948e93258fSBjoern A. Zeeb #define B_AX_MAX_TAG_NUM GENMASK(18, 16) 8958e93258fSBjoern A. Zeeb #define B_AX_SIC_EN_FORCE_CLKREQ BIT(4) 8968e93258fSBjoern A. Zeeb 8978e93258fSBjoern A. Zeeb #define R_AX_PCIE_RX_PREF_ADV 0x13F4 8988e93258fSBjoern A. Zeeb #define B_AX_RXDMA_PREF_ADV_EN BIT(0) 8998e93258fSBjoern A. Zeeb 9008e93258fSBjoern A. Zeeb #define R_AX_PCIE_HRPWM_V1 0x30C0 9018e93258fSBjoern A. Zeeb #define R_AX_PCIE_CRPWM 0x30C4 9028e93258fSBjoern A. Zeeb 903*6d67aabdSBjoern A. Zeeb #define R_AX_LBC_WATCHDOG_V1 0x30D8 904*6d67aabdSBjoern A. Zeeb 905*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_HRPWM 0x30C0 906*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_CRPWM 0x30C4 907*6d67aabdSBjoern A. Zeeb 908*6d67aabdSBjoern A. Zeeb #define R_BE_L1_2_CTRL_HCILDO 0x3110 909*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_DIS_L1_2_CTRL_HCILDO BIT(0) 910*6d67aabdSBjoern A. Zeeb 911*6d67aabdSBjoern A. Zeeb #define R_BE_PL1_DBG_INFO 0x3120 912*6d67aabdSBjoern A. Zeeb #define B_BE_END_PL1_CNT_MASK GENMASK(23, 16) 913*6d67aabdSBjoern A. Zeeb #define B_BE_START_PL1_CNT_MASK GENMASK(7, 0) 914*6d67aabdSBjoern A. Zeeb 915*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_MIT0_TMR 0x3330 916*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT0_RX_TMR_MASK GENMASK(5, 4) 917*6d67aabdSBjoern A. Zeeb #define BE_MIT0_TMR_UNIT_1MS 0 918*6d67aabdSBjoern A. Zeeb #define BE_MIT0_TMR_UNIT_2MS 1 919*6d67aabdSBjoern A. Zeeb #define BE_MIT0_TMR_UNIT_4MS 2 920*6d67aabdSBjoern A. Zeeb #define BE_MIT0_TMR_UNIT_8MS 3 921*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT0_TX_TMR_MASK GENMASK(1, 0) 922*6d67aabdSBjoern A. Zeeb 923*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_MIT0_CNT 0x3334 924*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_MIT0_CNT_MASK GENMASK(31, 24) 925*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_MIT0_CNT_MASK GENMASK(23, 16) 926*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_RX_MIT0_TMR_CNT_MASK GENMASK(15, 8) 927*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_TX_MIT0_TMR_CNT_MASK GENMASK(7, 0) 928*6d67aabdSBjoern A. Zeeb 929*6d67aabdSBjoern A. Zeeb #define R_BE_PCIE_MIT_CH_EN 0x3338 930*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_RX1P1_EN BIT(23) 931*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_RX0P1_EN BIT(22) 932*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_ROQ1_EN BIT(21) 933*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_RPQ1_EN BIT(20) 934*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_RX1P2_EN BIT(19) 935*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_ROQ0_EN BIT(18) 936*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_RPQ0_EN BIT(17) 937*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_RX0P2_EN BIT(16) 938*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH14_EN BIT(14) 939*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH13_EN BIT(13) 940*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH12_EN BIT(12) 941*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH11_EN BIT(11) 942*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH10_EN BIT(10) 943*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH9_EN BIT(9) 944*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH8_EN BIT(8) 945*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH7_EN BIT(7) 946*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH6_EN BIT(6) 947*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH5_EN BIT(5) 948*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH4_EN BIT(4) 949*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH3_EN BIT(3) 950*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH2_EN BIT(2) 951*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH1_EN BIT(1) 952*6d67aabdSBjoern A. Zeeb #define B_BE_PCIE_MIT_TXCH0_EN BIT(0) 953*6d67aabdSBjoern A. Zeeb 954*6d67aabdSBjoern A. Zeeb #define R_BE_SER_PL1_CTRL 0x34A8 955*6d67aabdSBjoern A. Zeeb #define B_BE_PL1_SER_PL1_EN BIT(31) 956*6d67aabdSBjoern A. Zeeb #define B_BE_PL1_IGNORE_HOT_RST BIT(30) 957*6d67aabdSBjoern A. Zeeb #define B_BE_PL1_TIMER_UNIT_MASK GENMASK(19, 17) 958*6d67aabdSBjoern A. Zeeb #define B_BE_PL1_TIMER_CLEAR BIT(0) 959*6d67aabdSBjoern A. Zeeb 960*6d67aabdSBjoern A. Zeeb #define R_BE_REG_PL1_MASK 0x34B0 961*6d67aabdSBjoern A. Zeeb #define B_BE_SER_PCLKREQ_ACK_MASK BIT(5) 962*6d67aabdSBjoern A. Zeeb #define B_BE_SER_PM_CLK_MASK BIT(4) 963*6d67aabdSBjoern A. Zeeb #define B_BE_SER_LTSSM_IMR BIT(3) 964*6d67aabdSBjoern A. Zeeb #define B_BE_SER_PM_MASTER_IMR BIT(2) 965*6d67aabdSBjoern A. Zeeb #define B_BE_SER_L1SUB_IMR BIT(1) 966*6d67aabdSBjoern A. Zeeb #define B_BE_SER_PMU_IMR BIT(0) 967*6d67aabdSBjoern A. Zeeb 968*6d67aabdSBjoern A. Zeeb #define R_BE_REG_PL1_ISR 0x34B4 969*6d67aabdSBjoern A. Zeeb 970*6d67aabdSBjoern A. Zeeb #define R_BE_RX_APPEND_MODE 0x8920 971*6d67aabdSBjoern A. Zeeb #define B_BE_APPEND_OFFSET_MASK GENMASK(23, 16) 972*6d67aabdSBjoern A. Zeeb #define B_BE_APPEND_LEN_MASK GENMASK(15, 0) 973*6d67aabdSBjoern A. Zeeb 974*6d67aabdSBjoern A. Zeeb #define R_BE_TXBD_RWPTR_CLR1 0xB014 975*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH14_IDX BIT(14) 976*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH13_IDX BIT(13) 977*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH12_IDX BIT(12) 978*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH11_IDX BIT(11) 979*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH10_IDX BIT(10) 980*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH9_IDX BIT(9) 981*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH8_IDX BIT(8) 982*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH7_IDX BIT(7) 983*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH6_IDX BIT(6) 984*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH5_IDX BIT(5) 985*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH4_IDX BIT(4) 986*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH3_IDX BIT(3) 987*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH2_IDX BIT(2) 988*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH1_IDX BIT(1) 989*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_CH0_IDX BIT(0) 990*6d67aabdSBjoern A. Zeeb 991*6d67aabdSBjoern A. Zeeb #define R_BE_RXBD_RWPTR_CLR1_V1 0xB018 992*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_ROQ1_IDX_V1 BIT(5) 993*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_RPQ1_IDX_V1 BIT(4) 994*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_RXQ1_IDX_V1 BIT(3) 995*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_ROQ0_IDX BIT(2) 996*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_RPQ0_IDX BIT(1) 997*6d67aabdSBjoern A. Zeeb #define B_BE_CLR_RXQ0_IDX BIT(0) 998*6d67aabdSBjoern A. Zeeb 999*6d67aabdSBjoern A. Zeeb #define R_BE_HAXI_DMA_BUSY1 0xB01C 1000*6d67aabdSBjoern A. Zeeb #define B_BE_HAXI_MST_BUSY BIT(31) 1001*6d67aabdSBjoern A. Zeeb #define B_BE_HAXI_RX_IDLE BIT(25) 1002*6d67aabdSBjoern A. Zeeb #define B_BE_HAXI_TX_IDLE BIT(24) 1003*6d67aabdSBjoern A. Zeeb #define B_BE_ROQ1_BUSY_V1 BIT(21) 1004*6d67aabdSBjoern A. Zeeb #define B_BE_RPQ1_BUSY_V1 BIT(20) 1005*6d67aabdSBjoern A. Zeeb #define B_BE_RXQ1_BUSY_V1 BIT(19) 1006*6d67aabdSBjoern A. Zeeb #define B_BE_ROQ0_BUSY_V1 BIT(18) 1007*6d67aabdSBjoern A. Zeeb #define B_BE_RPQ0_BUSY_V1 BIT(17) 1008*6d67aabdSBjoern A. Zeeb #define B_BE_RXQ0_BUSY_V1 BIT(16) 1009*6d67aabdSBjoern A. Zeeb #define B_BE_WPDMA_BUSY BIT(15) 1010*6d67aabdSBjoern A. Zeeb #define B_BE_CH14_BUSY BIT(14) 1011*6d67aabdSBjoern A. Zeeb #define B_BE_CH13_BUSY BIT(13) 1012*6d67aabdSBjoern A. Zeeb #define B_BE_CH12_BUSY BIT(12) 1013*6d67aabdSBjoern A. Zeeb #define B_BE_CH11_BUSY BIT(11) 1014*6d67aabdSBjoern A. Zeeb #define B_BE_CH10_BUSY BIT(10) 1015*6d67aabdSBjoern A. Zeeb #define B_BE_CH9_BUSY BIT(9) 1016*6d67aabdSBjoern A. Zeeb #define B_BE_CH8_BUSY BIT(8) 1017*6d67aabdSBjoern A. Zeeb #define B_BE_CH7_BUSY BIT(7) 1018*6d67aabdSBjoern A. Zeeb #define B_BE_CH6_BUSY BIT(6) 1019*6d67aabdSBjoern A. Zeeb #define B_BE_CH5_BUSY BIT(5) 1020*6d67aabdSBjoern A. Zeeb #define B_BE_CH4_BUSY BIT(4) 1021*6d67aabdSBjoern A. Zeeb #define B_BE_CH3_BUSY BIT(3) 1022*6d67aabdSBjoern A. Zeeb #define B_BE_CH2_BUSY BIT(2) 1023*6d67aabdSBjoern A. Zeeb #define B_BE_CH1_BUSY BIT(1) 1024*6d67aabdSBjoern A. Zeeb #define B_BE_CH0_BUSY BIT(0) 1025*6d67aabdSBjoern A. Zeeb #define DMA_BUSY1_CHECK_BE (B_BE_CH0_BUSY | B_BE_CH1_BUSY | B_BE_CH2_BUSY | \ 1026*6d67aabdSBjoern A. Zeeb B_BE_CH3_BUSY | B_BE_CH4_BUSY | B_BE_CH5_BUSY | \ 1027*6d67aabdSBjoern A. Zeeb B_BE_CH6_BUSY | B_BE_CH7_BUSY | B_BE_CH8_BUSY | \ 1028*6d67aabdSBjoern A. Zeeb B_BE_CH9_BUSY | B_BE_CH10_BUSY | B_BE_CH11_BUSY | \ 1029*6d67aabdSBjoern A. Zeeb B_BE_CH12_BUSY | B_BE_CH13_BUSY | B_BE_CH14_BUSY) 1030*6d67aabdSBjoern A. Zeeb 1031*6d67aabdSBjoern A. Zeeb #define R_BE_HAXI_EXP_CTRL_V1 0xB020 1032*6d67aabdSBjoern A. Zeeb #define B_BE_R_NO_SEC_ACCESS BIT(31) 1033*6d67aabdSBjoern A. Zeeb #define B_BE_FORCE_EN_DMA_RX_GCLK BIT(5) 1034*6d67aabdSBjoern A. Zeeb #define B_BE_FORCE_EN_DMA_TX_GCLK BIT(4) 1035*6d67aabdSBjoern A. Zeeb #define B_BE_MAX_TAG_NUM_MASK GENMASK(3, 0) 1036*6d67aabdSBjoern A. Zeeb 10378e93258fSBjoern A. Zeeb #define RTW89_PCI_TXBD_NUM_MAX 256 10388e93258fSBjoern A. Zeeb #define RTW89_PCI_RXBD_NUM_MAX 256 10398e93258fSBjoern A. Zeeb #define RTW89_PCI_TXWD_NUM_MAX 512 10408e93258fSBjoern A. Zeeb #define RTW89_PCI_TXWD_PAGE_SIZE 128 10418e93258fSBjoern A. Zeeb #define RTW89_PCI_ADDRINFO_MAX 4 1042*6d67aabdSBjoern A. Zeeb #define RTW89_PCI_RX_BUF_SIZE (11454 + 40) /* +40 for rtw89_rxdesc_long_v2 */ 10438e93258fSBjoern A. Zeeb 10448e93258fSBjoern A. Zeeb #define RTW89_PCI_POLL_BDRAM_RST_CNT 100 10458e93258fSBjoern A. Zeeb #define RTW89_PCI_MULTITAG 8 10468e93258fSBjoern A. Zeeb 10478e93258fSBjoern A. Zeeb /* PCIE CFG register */ 1048*6d67aabdSBjoern A. Zeeb #define RTW89_PCIE_CAPABILITY_SPEED 0x7C 1049*6d67aabdSBjoern A. Zeeb #define RTW89_PCIE_SUPPORT_GEN_MASK GENMASK(3, 0) 10508e93258fSBjoern A. Zeeb #define RTW89_PCIE_L1_STS_V1 0x80 10518e93258fSBjoern A. Zeeb #define RTW89_BCFG_LINK_SPEED_MASK GENMASK(19, 16) 10528e93258fSBjoern A. Zeeb #define RTW89_PCIE_GEN1_SPEED 0x01 10538e93258fSBjoern A. Zeeb #define RTW89_PCIE_GEN2_SPEED 0x02 10548e93258fSBjoern A. Zeeb #define RTW89_PCIE_PHY_RATE 0x82 10558e93258fSBjoern A. Zeeb #define RTW89_PCIE_PHY_RATE_MASK GENMASK(1, 0) 1056*6d67aabdSBjoern A. Zeeb #define RTW89_PCIE_LINK_CHANGE_SPEED 0xA0 10578e93258fSBjoern A. Zeeb #define RTW89_PCIE_L1SS_STS_V1 0x0168 10588e93258fSBjoern A. Zeeb #define RTW89_PCIE_BIT_ASPM_L11 BIT(3) 10598e93258fSBjoern A. Zeeb #define RTW89_PCIE_BIT_ASPM_L12 BIT(2) 10608e93258fSBjoern A. Zeeb #define RTW89_PCIE_BIT_PCI_L11 BIT(1) 10618e93258fSBjoern A. Zeeb #define RTW89_PCIE_BIT_PCI_L12 BIT(0) 10628e93258fSBjoern A. Zeeb #define RTW89_PCIE_ASPM_CTRL 0x070F 10638e93258fSBjoern A. Zeeb #define RTW89_L1DLY_MASK GENMASK(5, 3) 10648e93258fSBjoern A. Zeeb #define RTW89_L0DLY_MASK GENMASK(2, 0) 10658e93258fSBjoern A. Zeeb #define RTW89_PCIE_TIMER_CTRL 0x0718 10668e93258fSBjoern A. Zeeb #define RTW89_PCIE_BIT_L1SUB BIT(5) 10678e93258fSBjoern A. Zeeb #define RTW89_PCIE_L1_CTRL 0x0719 1068*6d67aabdSBjoern A. Zeeb #define RTW89_PCIE_BIT_EN_64BITS BIT(5) 10698e93258fSBjoern A. Zeeb #define RTW89_PCIE_BIT_CLK BIT(4) 10708e93258fSBjoern A. Zeeb #define RTW89_PCIE_BIT_L1 BIT(3) 10718e93258fSBjoern A. Zeeb #define RTW89_PCIE_CLK_CTRL 0x0725 1072*6d67aabdSBjoern A. Zeeb #define RTW89_PCIE_FTS 0x080C 1073*6d67aabdSBjoern A. Zeeb #define RTW89_PCIE_POLLING_BIT BIT(17) 10748e93258fSBjoern A. Zeeb #define RTW89_PCIE_RST_MSTATE 0x0B48 10758e93258fSBjoern A. Zeeb #define RTW89_PCIE_BIT_CFG_RST_MSTATE BIT(0) 10768e93258fSBjoern A. Zeeb 10778e93258fSBjoern A. Zeeb #define INTF_INTGRA_MINREF_V1 90 10788e93258fSBjoern A. Zeeb #define INTF_INTGRA_HOSTREF_V1 100 10798e93258fSBjoern A. Zeeb 10808e93258fSBjoern A. Zeeb enum rtw89_pcie_phy { 10818e93258fSBjoern A. Zeeb PCIE_PHY_GEN1, 10828e93258fSBjoern A. Zeeb PCIE_PHY_GEN2, 10838e93258fSBjoern A. Zeeb PCIE_PHY_GEN1_UNDEFINE = 0x7F, 10848e93258fSBjoern A. Zeeb }; 10858e93258fSBjoern A. Zeeb 10868e93258fSBjoern A. Zeeb enum rtw89_pcie_l0sdly { 10878e93258fSBjoern A. Zeeb PCIE_L0SDLY_1US = 0, 10888e93258fSBjoern A. Zeeb PCIE_L0SDLY_2US = 1, 10898e93258fSBjoern A. Zeeb PCIE_L0SDLY_3US = 2, 10908e93258fSBjoern A. Zeeb PCIE_L0SDLY_4US = 3, 10918e93258fSBjoern A. Zeeb PCIE_L0SDLY_5US = 4, 10928e93258fSBjoern A. Zeeb PCIE_L0SDLY_6US = 5, 10938e93258fSBjoern A. Zeeb PCIE_L0SDLY_7US = 6, 10948e93258fSBjoern A. Zeeb }; 10958e93258fSBjoern A. Zeeb 10968e93258fSBjoern A. Zeeb enum rtw89_pcie_l1dly { 10978e93258fSBjoern A. Zeeb PCIE_L1DLY_16US = 4, 10988e93258fSBjoern A. Zeeb PCIE_L1DLY_32US = 5, 10998e93258fSBjoern A. Zeeb PCIE_L1DLY_64US = 6, 11008e93258fSBjoern A. Zeeb PCIE_L1DLY_HW_INFI = 7, 11018e93258fSBjoern A. Zeeb }; 11028e93258fSBjoern A. Zeeb 11038e93258fSBjoern A. Zeeb enum rtw89_pcie_clkdly_hw { 11048e93258fSBjoern A. Zeeb PCIE_CLKDLY_HW_0 = 0, 11058e93258fSBjoern A. Zeeb PCIE_CLKDLY_HW_30US = 0x1, 11068e93258fSBjoern A. Zeeb PCIE_CLKDLY_HW_50US = 0x2, 11078e93258fSBjoern A. Zeeb PCIE_CLKDLY_HW_100US = 0x3, 11088e93258fSBjoern A. Zeeb PCIE_CLKDLY_HW_150US = 0x4, 11098e93258fSBjoern A. Zeeb PCIE_CLKDLY_HW_200US = 0x5, 11108e93258fSBjoern A. Zeeb }; 11118e93258fSBjoern A. Zeeb 1112*6d67aabdSBjoern A. Zeeb enum rtw89_pcie_clkdly_hw_v1 { 1113*6d67aabdSBjoern A. Zeeb PCIE_CLKDLY_HW_V1_0 = 0, 1114*6d67aabdSBjoern A. Zeeb PCIE_CLKDLY_HW_V1_16US = 0x1, 1115*6d67aabdSBjoern A. Zeeb PCIE_CLKDLY_HW_V1_32US = 0x2, 1116*6d67aabdSBjoern A. Zeeb PCIE_CLKDLY_HW_V1_64US = 0x3, 1117*6d67aabdSBjoern A. Zeeb PCIE_CLKDLY_HW_V1_80US = 0x4, 1118*6d67aabdSBjoern A. Zeeb PCIE_CLKDLY_HW_V1_96US = 0x5, 1119*6d67aabdSBjoern A. Zeeb }; 1120*6d67aabdSBjoern A. Zeeb 11218e93258fSBjoern A. Zeeb enum mac_ax_bd_trunc_mode { 11228e93258fSBjoern A. Zeeb MAC_AX_BD_NORM, 11238e93258fSBjoern A. Zeeb MAC_AX_BD_TRUNC, 11248e93258fSBjoern A. Zeeb MAC_AX_BD_DEF = 0xFE 11258e93258fSBjoern A. Zeeb }; 11268e93258fSBjoern A. Zeeb 11278e93258fSBjoern A. Zeeb enum mac_ax_rxbd_mode { 11288e93258fSBjoern A. Zeeb MAC_AX_RXBD_PKT, 11298e93258fSBjoern A. Zeeb MAC_AX_RXBD_SEP, 11308e93258fSBjoern A. Zeeb MAC_AX_RXBD_DEF = 0xFE 11318e93258fSBjoern A. Zeeb }; 11328e93258fSBjoern A. Zeeb 11338e93258fSBjoern A. Zeeb enum mac_ax_tag_mode { 11348e93258fSBjoern A. Zeeb MAC_AX_TAG_SGL, 11358e93258fSBjoern A. Zeeb MAC_AX_TAG_MULTI, 11368e93258fSBjoern A. Zeeb MAC_AX_TAG_DEF = 0xFE 11378e93258fSBjoern A. Zeeb }; 11388e93258fSBjoern A. Zeeb 11398e93258fSBjoern A. Zeeb enum mac_ax_tx_burst { 11408e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_16B = 0, 11418e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_32B = 1, 11428e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_64B = 2, 11438e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_V1_64B = 0, 11448e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_128B = 3, 11458e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_V1_128B = 1, 11468e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_256B = 4, 11478e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_V1_256B = 2, 11488e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_512B = 5, 11498e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_1024B = 6, 11508e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_2048B = 7, 11518e93258fSBjoern A. Zeeb MAC_AX_TX_BURST_DEF = 0xFE 11528e93258fSBjoern A. Zeeb }; 11538e93258fSBjoern A. Zeeb 11548e93258fSBjoern A. Zeeb enum mac_ax_rx_burst { 11558e93258fSBjoern A. Zeeb MAC_AX_RX_BURST_16B = 0, 11568e93258fSBjoern A. Zeeb MAC_AX_RX_BURST_32B = 1, 11578e93258fSBjoern A. Zeeb MAC_AX_RX_BURST_64B = 2, 11588e93258fSBjoern A. Zeeb MAC_AX_RX_BURST_V1_64B = 0, 11598e93258fSBjoern A. Zeeb MAC_AX_RX_BURST_128B = 3, 11608e93258fSBjoern A. Zeeb MAC_AX_RX_BURST_V1_128B = 1, 11618e93258fSBjoern A. Zeeb MAC_AX_RX_BURST_V1_256B = 0, 11628e93258fSBjoern A. Zeeb MAC_AX_RX_BURST_DEF = 0xFE 11638e93258fSBjoern A. Zeeb }; 11648e93258fSBjoern A. Zeeb 11658e93258fSBjoern A. Zeeb enum mac_ax_wd_dma_intvl { 11668e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_0S, 11678e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_256NS, 11688e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_512NS, 11698e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_768NS, 11708e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_1US, 11718e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_1_5US, 11728e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_2US, 11738e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_4US, 11748e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_8US, 11758e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_16US, 11768e93258fSBjoern A. Zeeb MAC_AX_WD_DMA_INTVL_DEF = 0xFE 11778e93258fSBjoern A. Zeeb }; 11788e93258fSBjoern A. Zeeb 11798e93258fSBjoern A. Zeeb enum mac_ax_multi_tag_num { 11808e93258fSBjoern A. Zeeb MAC_AX_TAG_NUM_1, 11818e93258fSBjoern A. Zeeb MAC_AX_TAG_NUM_2, 11828e93258fSBjoern A. Zeeb MAC_AX_TAG_NUM_3, 11838e93258fSBjoern A. Zeeb MAC_AX_TAG_NUM_4, 11848e93258fSBjoern A. Zeeb MAC_AX_TAG_NUM_5, 11858e93258fSBjoern A. Zeeb MAC_AX_TAG_NUM_6, 11868e93258fSBjoern A. Zeeb MAC_AX_TAG_NUM_7, 11878e93258fSBjoern A. Zeeb MAC_AX_TAG_NUM_8, 11888e93258fSBjoern A. Zeeb MAC_AX_TAG_NUM_DEF = 0xFE 11898e93258fSBjoern A. Zeeb }; 11908e93258fSBjoern A. Zeeb 11918e93258fSBjoern A. Zeeb enum mac_ax_lbc_tmr { 11928e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_8US = 0, 11938e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_16US, 11948e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_32US, 11958e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_64US, 11968e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_128US, 11978e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_256US, 11988e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_512US, 11998e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_1MS, 12008e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_2MS, 12018e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_4MS, 12028e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_8MS, 12038e93258fSBjoern A. Zeeb MAC_AX_LBC_TMR_DEF = 0xFE 12048e93258fSBjoern A. Zeeb }; 12058e93258fSBjoern A. Zeeb 12068e93258fSBjoern A. Zeeb enum mac_ax_pcie_func_ctrl { 12078e93258fSBjoern A. Zeeb MAC_AX_PCIE_DISABLE = 0, 12088e93258fSBjoern A. Zeeb MAC_AX_PCIE_ENABLE = 1, 12098e93258fSBjoern A. Zeeb MAC_AX_PCIE_DEFAULT = 0xFE, 12108e93258fSBjoern A. Zeeb MAC_AX_PCIE_IGNORE = 0xFF 12118e93258fSBjoern A. Zeeb }; 12128e93258fSBjoern A. Zeeb 12138e93258fSBjoern A. Zeeb enum mac_ax_io_rcy_tmr { 12148e93258fSBjoern A. Zeeb MAC_AX_IO_RCY_ANA_TMR_2MS = 24000, 12158e93258fSBjoern A. Zeeb MAC_AX_IO_RCY_ANA_TMR_4MS = 48000, 12168e93258fSBjoern A. Zeeb MAC_AX_IO_RCY_ANA_TMR_6MS = 72000, 12178e93258fSBjoern A. Zeeb MAC_AX_IO_RCY_ANA_TMR_DEF = 0xFE 12188e93258fSBjoern A. Zeeb }; 12198e93258fSBjoern A. Zeeb 12208e93258fSBjoern A. Zeeb enum rtw89_pci_intr_mask_cfg { 12218e93258fSBjoern A. Zeeb RTW89_PCI_INTR_MASK_RESET, 12228e93258fSBjoern A. Zeeb RTW89_PCI_INTR_MASK_NORMAL, 12238e93258fSBjoern A. Zeeb RTW89_PCI_INTR_MASK_LOW_POWER, 12248e93258fSBjoern A. Zeeb RTW89_PCI_INTR_MASK_RECOVERY_START, 12258e93258fSBjoern A. Zeeb RTW89_PCI_INTR_MASK_RECOVERY_COMPLETE, 12268e93258fSBjoern A. Zeeb }; 12278e93258fSBjoern A. Zeeb 12288e93258fSBjoern A. Zeeb struct rtw89_pci_isrs; 12298e93258fSBjoern A. Zeeb struct rtw89_pci; 12308e93258fSBjoern A. Zeeb 12318e93258fSBjoern A. Zeeb struct rtw89_pci_bd_idx_addr { 12328e93258fSBjoern A. Zeeb u32 tx_bd_addrs[RTW89_TXCH_NUM]; 12338e93258fSBjoern A. Zeeb u32 rx_bd_addrs[RTW89_RXCH_NUM]; 12348e93258fSBjoern A. Zeeb }; 12358e93258fSBjoern A. Zeeb 12368e93258fSBjoern A. Zeeb struct rtw89_pci_ch_dma_addr { 12378e93258fSBjoern A. Zeeb u32 num; 12388e93258fSBjoern A. Zeeb u32 idx; 12398e93258fSBjoern A. Zeeb u32 bdram; 12408e93258fSBjoern A. Zeeb u32 desa_l; 12418e93258fSBjoern A. Zeeb u32 desa_h; 12428e93258fSBjoern A. Zeeb }; 12438e93258fSBjoern A. Zeeb 12448e93258fSBjoern A. Zeeb struct rtw89_pci_ch_dma_addr_set { 12458e93258fSBjoern A. Zeeb struct rtw89_pci_ch_dma_addr tx[RTW89_TXCH_NUM]; 12468e93258fSBjoern A. Zeeb struct rtw89_pci_ch_dma_addr rx[RTW89_RXCH_NUM]; 12478e93258fSBjoern A. Zeeb }; 12488e93258fSBjoern A. Zeeb 1249e2340276SBjoern A. Zeeb struct rtw89_pci_bd_ram { 1250e2340276SBjoern A. Zeeb u8 start_idx; 1251e2340276SBjoern A. Zeeb u8 max_num; 1252e2340276SBjoern A. Zeeb u8 min_num; 1253e2340276SBjoern A. Zeeb }; 1254e2340276SBjoern A. Zeeb 1255*6d67aabdSBjoern A. Zeeb struct rtw89_pci_gen_def { 1256*6d67aabdSBjoern A. Zeeb u32 isr_rdu; 1257*6d67aabdSBjoern A. Zeeb u32 isr_halt_c2h; 1258*6d67aabdSBjoern A. Zeeb u32 isr_wdt_timeout; 1259*6d67aabdSBjoern A. Zeeb struct rtw89_reg2_def isr_clear_rpq; 1260*6d67aabdSBjoern A. Zeeb struct rtw89_reg2_def isr_clear_rxq; 1261*6d67aabdSBjoern A. Zeeb 1262*6d67aabdSBjoern A. Zeeb int (*mac_pre_init)(struct rtw89_dev *rtwdev); 1263*6d67aabdSBjoern A. Zeeb int (*mac_pre_deinit)(struct rtw89_dev *rtwdev); 1264*6d67aabdSBjoern A. Zeeb int (*mac_post_init)(struct rtw89_dev *rtwdev); 1265*6d67aabdSBjoern A. Zeeb 1266*6d67aabdSBjoern A. Zeeb void (*clr_idx_all)(struct rtw89_dev *rtwdev); 1267*6d67aabdSBjoern A. Zeeb int (*rst_bdram)(struct rtw89_dev *rtwdev); 1268*6d67aabdSBjoern A. Zeeb 1269*6d67aabdSBjoern A. Zeeb int (*lv1rst_stop_dma)(struct rtw89_dev *rtwdev); 1270*6d67aabdSBjoern A. Zeeb int (*lv1rst_start_dma)(struct rtw89_dev *rtwdev); 1271*6d67aabdSBjoern A. Zeeb 1272*6d67aabdSBjoern A. Zeeb void (*ctrl_txdma_ch)(struct rtw89_dev *rtwdev, bool enable); 1273*6d67aabdSBjoern A. Zeeb void (*ctrl_txdma_fw_ch)(struct rtw89_dev *rtwdev, bool enable); 1274*6d67aabdSBjoern A. Zeeb int (*poll_txdma_ch_idle)(struct rtw89_dev *rtwdev); 1275*6d67aabdSBjoern A. Zeeb 1276*6d67aabdSBjoern A. Zeeb void (*aspm_set)(struct rtw89_dev *rtwdev, bool enable); 1277*6d67aabdSBjoern A. Zeeb void (*clkreq_set)(struct rtw89_dev *rtwdev, bool enable); 1278*6d67aabdSBjoern A. Zeeb void (*l1ss_set)(struct rtw89_dev *rtwdev, bool enable); 1279*6d67aabdSBjoern A. Zeeb }; 1280*6d67aabdSBjoern A. Zeeb 12818e93258fSBjoern A. Zeeb struct rtw89_pci_info { 1282*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_gen_def *gen_def; 12838e93258fSBjoern A. Zeeb enum mac_ax_bd_trunc_mode txbd_trunc_mode; 12848e93258fSBjoern A. Zeeb enum mac_ax_bd_trunc_mode rxbd_trunc_mode; 12858e93258fSBjoern A. Zeeb enum mac_ax_rxbd_mode rxbd_mode; 12868e93258fSBjoern A. Zeeb enum mac_ax_tag_mode tag_mode; 12878e93258fSBjoern A. Zeeb enum mac_ax_tx_burst tx_burst; 12888e93258fSBjoern A. Zeeb enum mac_ax_rx_burst rx_burst; 12898e93258fSBjoern A. Zeeb enum mac_ax_wd_dma_intvl wd_dma_idle_intvl; 12908e93258fSBjoern A. Zeeb enum mac_ax_wd_dma_intvl wd_dma_act_intvl; 12918e93258fSBjoern A. Zeeb enum mac_ax_multi_tag_num multi_tag_num; 12928e93258fSBjoern A. Zeeb enum mac_ax_pcie_func_ctrl lbc_en; 12938e93258fSBjoern A. Zeeb enum mac_ax_lbc_tmr lbc_tmr; 12948e93258fSBjoern A. Zeeb enum mac_ax_pcie_func_ctrl autok_en; 12958e93258fSBjoern A. Zeeb enum mac_ax_pcie_func_ctrl io_rcy_en; 12968e93258fSBjoern A. Zeeb enum mac_ax_io_rcy_tmr io_rcy_tmr; 1297*6d67aabdSBjoern A. Zeeb bool rx_ring_eq_is_full; 1298*6d67aabdSBjoern A. Zeeb bool check_rx_tag; 12998e93258fSBjoern A. Zeeb 13008e93258fSBjoern A. Zeeb u32 init_cfg_reg; 13018e93258fSBjoern A. Zeeb u32 txhci_en_bit; 13028e93258fSBjoern A. Zeeb u32 rxhci_en_bit; 13038e93258fSBjoern A. Zeeb u32 rxbd_mode_bit; 13048e93258fSBjoern A. Zeeb u32 exp_ctrl_reg; 13058e93258fSBjoern A. Zeeb u32 max_tag_num_mask; 13068e93258fSBjoern A. Zeeb u32 rxbd_rwptr_clr_reg; 13078e93258fSBjoern A. Zeeb u32 txbd_rwptr_clr2_reg; 1308*6d67aabdSBjoern A. Zeeb struct rtw89_reg_def dma_io_stop; 1309e2340276SBjoern A. Zeeb struct rtw89_reg_def dma_stop1; 1310e2340276SBjoern A. Zeeb struct rtw89_reg_def dma_stop2; 1311e2340276SBjoern A. Zeeb struct rtw89_reg_def dma_busy1; 13128e93258fSBjoern A. Zeeb u32 dma_busy2_reg; 13138e93258fSBjoern A. Zeeb u32 dma_busy3_reg; 13148e93258fSBjoern A. Zeeb 13158e93258fSBjoern A. Zeeb u32 rpwm_addr; 13168e93258fSBjoern A. Zeeb u32 cpwm_addr; 1317*6d67aabdSBjoern A. Zeeb u32 mit_addr; 1318*6d67aabdSBjoern A. Zeeb u32 wp_sel_addr; 1319e2340276SBjoern A. Zeeb u32 tx_dma_ch_mask; 13208e93258fSBjoern A. Zeeb const struct rtw89_pci_bd_idx_addr *bd_idx_addr_low_power; 13218e93258fSBjoern A. Zeeb const struct rtw89_pci_ch_dma_addr_set *dma_addr_set; 1322e2340276SBjoern A. Zeeb const struct rtw89_pci_bd_ram (*bd_ram_table)[RTW89_TXCH_NUM]; 13238e93258fSBjoern A. Zeeb 13248e93258fSBjoern A. Zeeb int (*ltr_set)(struct rtw89_dev *rtwdev, bool en); 13258e93258fSBjoern A. Zeeb u32 (*fill_txaddr_info)(struct rtw89_dev *rtwdev, 13268e93258fSBjoern A. Zeeb void *txaddr_info_addr, u32 total_len, 13278e93258fSBjoern A. Zeeb dma_addr_t dma, u8 *add_info_nr); 13288e93258fSBjoern A. Zeeb void (*config_intr_mask)(struct rtw89_dev *rtwdev); 13298e93258fSBjoern A. Zeeb void (*enable_intr)(struct rtw89_dev *rtwdev, struct rtw89_pci *rtwpci); 13308e93258fSBjoern A. Zeeb void (*disable_intr)(struct rtw89_dev *rtwdev, struct rtw89_pci *rtwpci); 13318e93258fSBjoern A. Zeeb void (*recognize_intrs)(struct rtw89_dev *rtwdev, 13328e93258fSBjoern A. Zeeb struct rtw89_pci *rtwpci, 13338e93258fSBjoern A. Zeeb struct rtw89_pci_isrs *isrs); 13348e93258fSBjoern A. Zeeb }; 13358e93258fSBjoern A. Zeeb 13368e93258fSBjoern A. Zeeb struct rtw89_pci_tx_data { 13378e93258fSBjoern A. Zeeb dma_addr_t dma; 13388e93258fSBjoern A. Zeeb }; 13398e93258fSBjoern A. Zeeb 13408e93258fSBjoern A. Zeeb struct rtw89_pci_rx_info { 13418e93258fSBjoern A. Zeeb dma_addr_t dma; 1342*6d67aabdSBjoern A. Zeeb u32 fs:1, ls:1, tag:13, len:14; 13438e93258fSBjoern A. Zeeb }; 13448e93258fSBjoern A. Zeeb 13458e93258fSBjoern A. Zeeb struct rtw89_pci_tx_bd_32 { 13468e93258fSBjoern A. Zeeb __le16 length; 1347*6d67aabdSBjoern A. Zeeb __le16 opt; 1348*6d67aabdSBjoern A. Zeeb #define RTW89_PCI_TXBD_OPT_LS BIT(14) 1349*6d67aabdSBjoern A. Zeeb #define RTW89_PCI_TXBD_OPT_DMA_HI GENMASK(13, 6) 13508e93258fSBjoern A. Zeeb __le32 dma; 13518e93258fSBjoern A. Zeeb } __packed; 13528e93258fSBjoern A. Zeeb 13538e93258fSBjoern A. Zeeb #define RTW89_PCI_TXWP_VALID BIT(15) 13548e93258fSBjoern A. Zeeb 13558e93258fSBjoern A. Zeeb struct rtw89_pci_tx_wp_info { 13568e93258fSBjoern A. Zeeb __le16 seq0; 13578e93258fSBjoern A. Zeeb __le16 seq1; 13588e93258fSBjoern A. Zeeb __le16 seq2; 13598e93258fSBjoern A. Zeeb __le16 seq3; 13608e93258fSBjoern A. Zeeb } __packed; 13618e93258fSBjoern A. Zeeb 13628e93258fSBjoern A. Zeeb #define RTW89_PCI_ADDR_MSDU_LS BIT(15) 13638e93258fSBjoern A. Zeeb #define RTW89_PCI_ADDR_LS BIT(14) 1364*6d67aabdSBjoern A. Zeeb #define RTW89_PCI_ADDR_HIGH_MASK GENMASK(13, 6) 13658e93258fSBjoern A. Zeeb #define RTW89_PCI_ADDR_NUM(x) ((x) & GENMASK(5, 0)) 13668e93258fSBjoern A. Zeeb 13678e93258fSBjoern A. Zeeb struct rtw89_pci_tx_addr_info_32 { 13688e93258fSBjoern A. Zeeb __le16 length; 13698e93258fSBjoern A. Zeeb __le16 option; 13708e93258fSBjoern A. Zeeb __le32 dma; 13718e93258fSBjoern A. Zeeb } __packed; 13728e93258fSBjoern A. Zeeb 13738e93258fSBjoern A. Zeeb #define RTW89_TXADDR_INFO_NR_V1 10 13748e93258fSBjoern A. Zeeb 13758e93258fSBjoern A. Zeeb struct rtw89_pci_tx_addr_info_32_v1 { 13768e93258fSBjoern A. Zeeb __le16 length_opt; 13778e93258fSBjoern A. Zeeb #define B_PCIADDR_LEN_V1_MASK GENMASK(10, 0) 13788e93258fSBjoern A. Zeeb #define B_PCIADDR_HIGH_SEL_V1_MASK GENMASK(14, 11) 13798e93258fSBjoern A. Zeeb #define B_PCIADDR_LS_V1_MASK BIT(15) 13808e93258fSBjoern A. Zeeb #define TXADDR_INFO_LENTHG_V1_MAX ALIGN_DOWN(BIT(11) - 1, 4) 13818e93258fSBjoern A. Zeeb __le16 dma_low_lsb; 13828e93258fSBjoern A. Zeeb __le16 dma_low_msb; 13838e93258fSBjoern A. Zeeb } __packed; 13848e93258fSBjoern A. Zeeb 13858e93258fSBjoern A. Zeeb #define RTW89_PCI_RPP_POLLUTED BIT(31) 13868e93258fSBjoern A. Zeeb #define RTW89_PCI_RPP_SEQ GENMASK(30, 16) 13878e93258fSBjoern A. Zeeb #define RTW89_PCI_RPP_TX_STATUS GENMASK(15, 13) 13888e93258fSBjoern A. Zeeb #define RTW89_TX_DONE 0x0 13898e93258fSBjoern A. Zeeb #define RTW89_TX_RETRY_LIMIT 0x1 13908e93258fSBjoern A. Zeeb #define RTW89_TX_LIFE_TIME 0x2 13918e93258fSBjoern A. Zeeb #define RTW89_TX_MACID_DROP 0x3 13928e93258fSBjoern A. Zeeb #define RTW89_PCI_RPP_QSEL GENMASK(12, 8) 13938e93258fSBjoern A. Zeeb #define RTW89_PCI_RPP_MACID GENMASK(7, 0) 13948e93258fSBjoern A. Zeeb 13958e93258fSBjoern A. Zeeb struct rtw89_pci_rpp_fmt { 13968e93258fSBjoern A. Zeeb __le32 dword; 13978e93258fSBjoern A. Zeeb } __packed; 13988e93258fSBjoern A. Zeeb 13998e93258fSBjoern A. Zeeb struct rtw89_pci_rx_bd_32 { 14008e93258fSBjoern A. Zeeb __le16 buf_size; 1401*6d67aabdSBjoern A. Zeeb __le16 opt; 1402*6d67aabdSBjoern A. Zeeb #define RTW89_PCI_RXBD_OPT_DMA_HI GENMASK(13, 6) 14038e93258fSBjoern A. Zeeb __le32 dma; 14048e93258fSBjoern A. Zeeb } __packed; 14058e93258fSBjoern A. Zeeb 14068e93258fSBjoern A. Zeeb #define RTW89_PCI_RXBD_FS BIT(15) 14078e93258fSBjoern A. Zeeb #define RTW89_PCI_RXBD_LS BIT(14) 14088e93258fSBjoern A. Zeeb #define RTW89_PCI_RXBD_WRITE_SIZE GENMASK(13, 0) 14098e93258fSBjoern A. Zeeb #define RTW89_PCI_RXBD_TAG GENMASK(28, 16) 14108e93258fSBjoern A. Zeeb 14118e93258fSBjoern A. Zeeb struct rtw89_pci_rxbd_info { 14128e93258fSBjoern A. Zeeb __le32 dword; 14138e93258fSBjoern A. Zeeb }; 14148e93258fSBjoern A. Zeeb 14158e93258fSBjoern A. Zeeb struct rtw89_pci_tx_wd { 14168e93258fSBjoern A. Zeeb struct list_head list; 14178e93258fSBjoern A. Zeeb struct sk_buff_head queue; 14188e93258fSBjoern A. Zeeb 14198e93258fSBjoern A. Zeeb void *vaddr; 14208e93258fSBjoern A. Zeeb dma_addr_t paddr; 14218e93258fSBjoern A. Zeeb u32 len; 14228e93258fSBjoern A. Zeeb u32 seq; 14238e93258fSBjoern A. Zeeb }; 14248e93258fSBjoern A. Zeeb 14258e93258fSBjoern A. Zeeb struct rtw89_pci_dma_ring { 14268e93258fSBjoern A. Zeeb void *head; 14278e93258fSBjoern A. Zeeb u8 desc_size; 14288e93258fSBjoern A. Zeeb dma_addr_t dma; 14298e93258fSBjoern A. Zeeb 14308e93258fSBjoern A. Zeeb struct rtw89_pci_ch_dma_addr addr; 14318e93258fSBjoern A. Zeeb 14328e93258fSBjoern A. Zeeb u32 len; 14338e93258fSBjoern A. Zeeb u32 wp; /* host idx */ 14348e93258fSBjoern A. Zeeb u32 rp; /* hw idx */ 14358e93258fSBjoern A. Zeeb }; 14368e93258fSBjoern A. Zeeb 14378e93258fSBjoern A. Zeeb struct rtw89_pci_tx_wd_ring { 14388e93258fSBjoern A. Zeeb void *head; 14398e93258fSBjoern A. Zeeb dma_addr_t dma; 14408e93258fSBjoern A. Zeeb 14418e93258fSBjoern A. Zeeb struct rtw89_pci_tx_wd pages[RTW89_PCI_TXWD_NUM_MAX]; 14428e93258fSBjoern A. Zeeb struct list_head free_pages; 14438e93258fSBjoern A. Zeeb 14448e93258fSBjoern A. Zeeb u32 page_size; 14458e93258fSBjoern A. Zeeb u32 page_num; 14468e93258fSBjoern A. Zeeb u32 curr_num; 14478e93258fSBjoern A. Zeeb }; 14488e93258fSBjoern A. Zeeb 14498e93258fSBjoern A. Zeeb #define RTW89_RX_TAG_MAX 0x1fff 14508e93258fSBjoern A. Zeeb 14518e93258fSBjoern A. Zeeb struct rtw89_pci_tx_ring { 14528e93258fSBjoern A. Zeeb struct rtw89_pci_tx_wd_ring wd_ring; 14538e93258fSBjoern A. Zeeb struct rtw89_pci_dma_ring bd_ring; 14548e93258fSBjoern A. Zeeb struct list_head busy_pages; 14558e93258fSBjoern A. Zeeb u8 txch; 14568e93258fSBjoern A. Zeeb bool dma_enabled; 14578e93258fSBjoern A. Zeeb u16 tag; /* range from 0x0001 ~ 0x1fff */ 14588e93258fSBjoern A. Zeeb 14598e93258fSBjoern A. Zeeb u64 tx_cnt; 14608e93258fSBjoern A. Zeeb u64 tx_acked; 14618e93258fSBjoern A. Zeeb u64 tx_retry_lmt; 14628e93258fSBjoern A. Zeeb u64 tx_life_time; 14638e93258fSBjoern A. Zeeb u64 tx_mac_id_drop; 14648e93258fSBjoern A. Zeeb }; 14658e93258fSBjoern A. Zeeb 14668e93258fSBjoern A. Zeeb struct rtw89_pci_rx_ring { 14678e93258fSBjoern A. Zeeb struct rtw89_pci_dma_ring bd_ring; 14688e93258fSBjoern A. Zeeb struct sk_buff *buf[RTW89_PCI_RXBD_NUM_MAX]; 14698e93258fSBjoern A. Zeeb u32 buf_sz; 14708e93258fSBjoern A. Zeeb struct sk_buff *diliver_skb; 14718e93258fSBjoern A. Zeeb struct rtw89_rx_desc_info diliver_desc; 1472*6d67aabdSBjoern A. Zeeb u32 target_rx_tag:13; 14738e93258fSBjoern A. Zeeb }; 14748e93258fSBjoern A. Zeeb 14758e93258fSBjoern A. Zeeb struct rtw89_pci_isrs { 14768e93258fSBjoern A. Zeeb u32 ind_isrs; 14778e93258fSBjoern A. Zeeb u32 halt_c2h_isrs; 14788e93258fSBjoern A. Zeeb u32 isrs[2]; 14798e93258fSBjoern A. Zeeb }; 14808e93258fSBjoern A. Zeeb 14818e93258fSBjoern A. Zeeb struct rtw89_pci { 14828e93258fSBjoern A. Zeeb struct pci_dev *pdev; 14838e93258fSBjoern A. Zeeb 14848e93258fSBjoern A. Zeeb /* protect HW irq related registers */ 14858e93258fSBjoern A. Zeeb spinlock_t irq_lock; 14868e93258fSBjoern A. Zeeb /* protect TRX resources (exclude RXQ) */ 14878e93258fSBjoern A. Zeeb spinlock_t trx_lock; 14888e93258fSBjoern A. Zeeb bool running; 14898e93258fSBjoern A. Zeeb bool low_power; 14908e93258fSBjoern A. Zeeb bool under_recovery; 1491*6d67aabdSBjoern A. Zeeb bool enable_dac; 14928e93258fSBjoern A. Zeeb struct rtw89_pci_tx_ring tx_rings[RTW89_TXCH_NUM]; 14938e93258fSBjoern A. Zeeb struct rtw89_pci_rx_ring rx_rings[RTW89_RXCH_NUM]; 14948e93258fSBjoern A. Zeeb struct sk_buff_head h2c_queue; 14958e93258fSBjoern A. Zeeb struct sk_buff_head h2c_release_queue; 14968e93258fSBjoern A. Zeeb DECLARE_BITMAP(kick_map, RTW89_TXCH_NUM); 14978e93258fSBjoern A. Zeeb 14988e93258fSBjoern A. Zeeb u32 ind_intrs; 14998e93258fSBjoern A. Zeeb u32 halt_c2h_intrs; 15008e93258fSBjoern A. Zeeb u32 intrs[2]; 15018e93258fSBjoern A. Zeeb void __iomem *mmap; 15028e93258fSBjoern A. Zeeb }; 15038e93258fSBjoern A. Zeeb 15048e93258fSBjoern A. Zeeb static inline struct rtw89_pci_rx_info *RTW89_PCI_RX_SKB_CB(struct sk_buff *skb) 15058e93258fSBjoern A. Zeeb { 15068e93258fSBjoern A. Zeeb struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); 15078e93258fSBjoern A. Zeeb 15088e93258fSBjoern A. Zeeb BUILD_BUG_ON(sizeof(struct rtw89_pci_tx_data) > 15098e93258fSBjoern A. Zeeb sizeof(info->status.status_driver_data)); 15108e93258fSBjoern A. Zeeb 15118e93258fSBjoern A. Zeeb return (struct rtw89_pci_rx_info *)skb->cb; 15128e93258fSBjoern A. Zeeb } 15138e93258fSBjoern A. Zeeb 15148e93258fSBjoern A. Zeeb static inline struct rtw89_pci_rx_bd_32 * 15158e93258fSBjoern A. Zeeb RTW89_PCI_RX_BD(struct rtw89_pci_rx_ring *rx_ring, u32 idx) 15168e93258fSBjoern A. Zeeb { 15178e93258fSBjoern A. Zeeb struct rtw89_pci_dma_ring *bd_ring = &rx_ring->bd_ring; 15188e93258fSBjoern A. Zeeb u8 *head = bd_ring->head; 15198e93258fSBjoern A. Zeeb u32 desc_size = bd_ring->desc_size; 15208e93258fSBjoern A. Zeeb u32 offset = idx * desc_size; 15218e93258fSBjoern A. Zeeb 15228e93258fSBjoern A. Zeeb return (struct rtw89_pci_rx_bd_32 *)(head + offset); 15238e93258fSBjoern A. Zeeb } 15248e93258fSBjoern A. Zeeb 15258e93258fSBjoern A. Zeeb static inline void 15268e93258fSBjoern A. Zeeb rtw89_pci_rxbd_increase(struct rtw89_pci_rx_ring *rx_ring, u32 cnt) 15278e93258fSBjoern A. Zeeb { 15288e93258fSBjoern A. Zeeb struct rtw89_pci_dma_ring *bd_ring = &rx_ring->bd_ring; 15298e93258fSBjoern A. Zeeb 15308e93258fSBjoern A. Zeeb bd_ring->wp += cnt; 15318e93258fSBjoern A. Zeeb 15328e93258fSBjoern A. Zeeb if (bd_ring->wp >= bd_ring->len) 15338e93258fSBjoern A. Zeeb bd_ring->wp -= bd_ring->len; 15348e93258fSBjoern A. Zeeb } 15358e93258fSBjoern A. Zeeb 15368e93258fSBjoern A. Zeeb static inline struct rtw89_pci_tx_data *RTW89_PCI_TX_SKB_CB(struct sk_buff *skb) 15378e93258fSBjoern A. Zeeb { 1538e2340276SBjoern A. Zeeb struct rtw89_tx_skb_data *data = RTW89_TX_SKB_CB(skb); 15398e93258fSBjoern A. Zeeb 1540e2340276SBjoern A. Zeeb return (struct rtw89_pci_tx_data *)data->hci_priv; 15418e93258fSBjoern A. Zeeb } 15428e93258fSBjoern A. Zeeb 15438e93258fSBjoern A. Zeeb static inline struct rtw89_pci_tx_bd_32 * 15448e93258fSBjoern A. Zeeb rtw89_pci_get_next_txbd(struct rtw89_pci_tx_ring *tx_ring) 15458e93258fSBjoern A. Zeeb { 15468e93258fSBjoern A. Zeeb struct rtw89_pci_dma_ring *bd_ring = &tx_ring->bd_ring; 15478e93258fSBjoern A. Zeeb struct rtw89_pci_tx_bd_32 *tx_bd, *head; 15488e93258fSBjoern A. Zeeb 15498e93258fSBjoern A. Zeeb head = bd_ring->head; 15508e93258fSBjoern A. Zeeb tx_bd = head + bd_ring->wp; 15518e93258fSBjoern A. Zeeb 15528e93258fSBjoern A. Zeeb return tx_bd; 15538e93258fSBjoern A. Zeeb } 15548e93258fSBjoern A. Zeeb 15558e93258fSBjoern A. Zeeb static inline struct rtw89_pci_tx_wd * 15568e93258fSBjoern A. Zeeb rtw89_pci_dequeue_txwd(struct rtw89_pci_tx_ring *tx_ring) 15578e93258fSBjoern A. Zeeb { 15588e93258fSBjoern A. Zeeb struct rtw89_pci_tx_wd_ring *wd_ring = &tx_ring->wd_ring; 15598e93258fSBjoern A. Zeeb struct rtw89_pci_tx_wd *txwd; 15608e93258fSBjoern A. Zeeb 15618e93258fSBjoern A. Zeeb txwd = list_first_entry_or_null(&wd_ring->free_pages, 15628e93258fSBjoern A. Zeeb struct rtw89_pci_tx_wd, list); 15638e93258fSBjoern A. Zeeb if (!txwd) 15648e93258fSBjoern A. Zeeb return NULL; 15658e93258fSBjoern A. Zeeb 15668e93258fSBjoern A. Zeeb list_del_init(&txwd->list); 15678e93258fSBjoern A. Zeeb txwd->len = 0; 15688e93258fSBjoern A. Zeeb wd_ring->curr_num--; 15698e93258fSBjoern A. Zeeb 15708e93258fSBjoern A. Zeeb return txwd; 15718e93258fSBjoern A. Zeeb } 15728e93258fSBjoern A. Zeeb 15738e93258fSBjoern A. Zeeb static inline void 15748e93258fSBjoern A. Zeeb rtw89_pci_enqueue_txwd(struct rtw89_pci_tx_ring *tx_ring, 15758e93258fSBjoern A. Zeeb struct rtw89_pci_tx_wd *txwd) 15768e93258fSBjoern A. Zeeb { 15778e93258fSBjoern A. Zeeb struct rtw89_pci_tx_wd_ring *wd_ring = &tx_ring->wd_ring; 15788e93258fSBjoern A. Zeeb 15798e93258fSBjoern A. Zeeb memset(txwd->vaddr, 0, wd_ring->page_size); 15808e93258fSBjoern A. Zeeb list_add_tail(&txwd->list, &wd_ring->free_pages); 15818e93258fSBjoern A. Zeeb wd_ring->curr_num++; 15828e93258fSBjoern A. Zeeb } 15838e93258fSBjoern A. Zeeb 15848e93258fSBjoern A. Zeeb static inline bool rtw89_pci_ltr_is_err_reg_val(u32 val) 15858e93258fSBjoern A. Zeeb { 15868e93258fSBjoern A. Zeeb return val == 0xffffffff || val == 0xeaeaeaea; 15878e93258fSBjoern A. Zeeb } 15888e93258fSBjoern A. Zeeb 15898e93258fSBjoern A. Zeeb extern const struct dev_pm_ops rtw89_pm_ops; 1590*6d67aabdSBjoern A. Zeeb extern const struct dev_pm_ops rtw89_pm_ops_be; 15918e93258fSBjoern A. Zeeb extern const struct rtw89_pci_ch_dma_addr_set rtw89_pci_ch_dma_addr_set; 15928e93258fSBjoern A. Zeeb extern const struct rtw89_pci_ch_dma_addr_set rtw89_pci_ch_dma_addr_set_v1; 1593*6d67aabdSBjoern A. Zeeb extern const struct rtw89_pci_ch_dma_addr_set rtw89_pci_ch_dma_addr_set_be; 1594e2340276SBjoern A. Zeeb extern const struct rtw89_pci_bd_ram rtw89_bd_ram_table_dual[RTW89_TXCH_NUM]; 1595e2340276SBjoern A. Zeeb extern const struct rtw89_pci_bd_ram rtw89_bd_ram_table_single[RTW89_TXCH_NUM]; 1596*6d67aabdSBjoern A. Zeeb extern const struct rtw89_pci_gen_def rtw89_pci_gen_ax; 1597*6d67aabdSBjoern A. Zeeb extern const struct rtw89_pci_gen_def rtw89_pci_gen_be; 15988e93258fSBjoern A. Zeeb 15998e93258fSBjoern A. Zeeb struct pci_device_id; 16008e93258fSBjoern A. Zeeb 16018e93258fSBjoern A. Zeeb int rtw89_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id); 16028e93258fSBjoern A. Zeeb void rtw89_pci_remove(struct pci_dev *pdev); 1603*6d67aabdSBjoern A. Zeeb void rtw89_pci_ops_reset(struct rtw89_dev *rtwdev); 16048e93258fSBjoern A. Zeeb int rtw89_pci_ltr_set(struct rtw89_dev *rtwdev, bool en); 16058e93258fSBjoern A. Zeeb int rtw89_pci_ltr_set_v1(struct rtw89_dev *rtwdev, bool en); 1606*6d67aabdSBjoern A. Zeeb int rtw89_pci_ltr_set_v2(struct rtw89_dev *rtwdev, bool en); 16078e93258fSBjoern A. Zeeb u32 rtw89_pci_fill_txaddr_info(struct rtw89_dev *rtwdev, 16088e93258fSBjoern A. Zeeb void *txaddr_info_addr, u32 total_len, 16098e93258fSBjoern A. Zeeb dma_addr_t dma, u8 *add_info_nr); 16108e93258fSBjoern A. Zeeb u32 rtw89_pci_fill_txaddr_info_v1(struct rtw89_dev *rtwdev, 16118e93258fSBjoern A. Zeeb void *txaddr_info_addr, u32 total_len, 16128e93258fSBjoern A. Zeeb dma_addr_t dma, u8 *add_info_nr); 1613*6d67aabdSBjoern A. Zeeb void rtw89_pci_ctrl_dma_all(struct rtw89_dev *rtwdev, bool enable); 16148e93258fSBjoern A. Zeeb void rtw89_pci_config_intr_mask(struct rtw89_dev *rtwdev); 16158e93258fSBjoern A. Zeeb void rtw89_pci_config_intr_mask_v1(struct rtw89_dev *rtwdev); 1616*6d67aabdSBjoern A. Zeeb void rtw89_pci_config_intr_mask_v2(struct rtw89_dev *rtwdev); 16178e93258fSBjoern A. Zeeb void rtw89_pci_enable_intr(struct rtw89_dev *rtwdev, struct rtw89_pci *rtwpci); 16188e93258fSBjoern A. Zeeb void rtw89_pci_disable_intr(struct rtw89_dev *rtwdev, struct rtw89_pci *rtwpci); 16198e93258fSBjoern A. Zeeb void rtw89_pci_enable_intr_v1(struct rtw89_dev *rtwdev, struct rtw89_pci *rtwpci); 16208e93258fSBjoern A. Zeeb void rtw89_pci_disable_intr_v1(struct rtw89_dev *rtwdev, struct rtw89_pci *rtwpci); 1621*6d67aabdSBjoern A. Zeeb void rtw89_pci_enable_intr_v2(struct rtw89_dev *rtwdev, struct rtw89_pci *rtwpci); 1622*6d67aabdSBjoern A. Zeeb void rtw89_pci_disable_intr_v2(struct rtw89_dev *rtwdev, struct rtw89_pci *rtwpci); 16238e93258fSBjoern A. Zeeb void rtw89_pci_recognize_intrs(struct rtw89_dev *rtwdev, 16248e93258fSBjoern A. Zeeb struct rtw89_pci *rtwpci, 16258e93258fSBjoern A. Zeeb struct rtw89_pci_isrs *isrs); 16268e93258fSBjoern A. Zeeb void rtw89_pci_recognize_intrs_v1(struct rtw89_dev *rtwdev, 16278e93258fSBjoern A. Zeeb struct rtw89_pci *rtwpci, 16288e93258fSBjoern A. Zeeb struct rtw89_pci_isrs *isrs); 1629*6d67aabdSBjoern A. Zeeb void rtw89_pci_recognize_intrs_v2(struct rtw89_dev *rtwdev, 1630*6d67aabdSBjoern A. Zeeb struct rtw89_pci *rtwpci, 1631*6d67aabdSBjoern A. Zeeb struct rtw89_pci_isrs *isrs); 16328e93258fSBjoern A. Zeeb 16338e93258fSBjoern A. Zeeb static inline 16348e93258fSBjoern A. Zeeb u32 rtw89_chip_fill_txaddr_info(struct rtw89_dev *rtwdev, 16358e93258fSBjoern A. Zeeb void *txaddr_info_addr, u32 total_len, 16368e93258fSBjoern A. Zeeb dma_addr_t dma, u8 *add_info_nr) 16378e93258fSBjoern A. Zeeb { 16388e93258fSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 16398e93258fSBjoern A. Zeeb 16408e93258fSBjoern A. Zeeb return info->fill_txaddr_info(rtwdev, txaddr_info_addr, total_len, 16418e93258fSBjoern A. Zeeb dma, add_info_nr); 16428e93258fSBjoern A. Zeeb } 16438e93258fSBjoern A. Zeeb 16448e93258fSBjoern A. Zeeb static inline void rtw89_chip_config_intr_mask(struct rtw89_dev *rtwdev, 16458e93258fSBjoern A. Zeeb enum rtw89_pci_intr_mask_cfg cfg) 16468e93258fSBjoern A. Zeeb { 16478e93258fSBjoern A. Zeeb struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv; 16488e93258fSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 16498e93258fSBjoern A. Zeeb 16508e93258fSBjoern A. Zeeb switch (cfg) { 16518e93258fSBjoern A. Zeeb default: 16528e93258fSBjoern A. Zeeb case RTW89_PCI_INTR_MASK_RESET: 16538e93258fSBjoern A. Zeeb rtwpci->low_power = false; 16548e93258fSBjoern A. Zeeb rtwpci->under_recovery = false; 16558e93258fSBjoern A. Zeeb break; 16568e93258fSBjoern A. Zeeb case RTW89_PCI_INTR_MASK_NORMAL: 16578e93258fSBjoern A. Zeeb rtwpci->low_power = false; 16588e93258fSBjoern A. Zeeb break; 16598e93258fSBjoern A. Zeeb case RTW89_PCI_INTR_MASK_LOW_POWER: 16608e93258fSBjoern A. Zeeb rtwpci->low_power = true; 16618e93258fSBjoern A. Zeeb break; 16628e93258fSBjoern A. Zeeb case RTW89_PCI_INTR_MASK_RECOVERY_START: 16638e93258fSBjoern A. Zeeb rtwpci->under_recovery = true; 16648e93258fSBjoern A. Zeeb break; 16658e93258fSBjoern A. Zeeb case RTW89_PCI_INTR_MASK_RECOVERY_COMPLETE: 16668e93258fSBjoern A. Zeeb rtwpci->under_recovery = false; 16678e93258fSBjoern A. Zeeb break; 16688e93258fSBjoern A. Zeeb } 16698e93258fSBjoern A. Zeeb 16708e93258fSBjoern A. Zeeb rtw89_debug(rtwdev, RTW89_DBG_HCI, 16718e93258fSBjoern A. Zeeb "Configure PCI interrupt mask mode low_power=%d under_recovery=%d\n", 16728e93258fSBjoern A. Zeeb rtwpci->low_power, rtwpci->under_recovery); 16738e93258fSBjoern A. Zeeb 16748e93258fSBjoern A. Zeeb info->config_intr_mask(rtwdev); 16758e93258fSBjoern A. Zeeb } 16768e93258fSBjoern A. Zeeb 16778e93258fSBjoern A. Zeeb static inline 16788e93258fSBjoern A. Zeeb void rtw89_chip_enable_intr(struct rtw89_dev *rtwdev, struct rtw89_pci *rtwpci) 16798e93258fSBjoern A. Zeeb { 16808e93258fSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 16818e93258fSBjoern A. Zeeb 16828e93258fSBjoern A. Zeeb info->enable_intr(rtwdev, rtwpci); 16838e93258fSBjoern A. Zeeb } 16848e93258fSBjoern A. Zeeb 16858e93258fSBjoern A. Zeeb static inline 16868e93258fSBjoern A. Zeeb void rtw89_chip_disable_intr(struct rtw89_dev *rtwdev, struct rtw89_pci *rtwpci) 16878e93258fSBjoern A. Zeeb { 16888e93258fSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 16898e93258fSBjoern A. Zeeb 16908e93258fSBjoern A. Zeeb info->disable_intr(rtwdev, rtwpci); 16918e93258fSBjoern A. Zeeb } 16928e93258fSBjoern A. Zeeb 16938e93258fSBjoern A. Zeeb static inline 16948e93258fSBjoern A. Zeeb void rtw89_chip_recognize_intrs(struct rtw89_dev *rtwdev, 16958e93258fSBjoern A. Zeeb struct rtw89_pci *rtwpci, 16968e93258fSBjoern A. Zeeb struct rtw89_pci_isrs *isrs) 16978e93258fSBjoern A. Zeeb { 16988e93258fSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 16998e93258fSBjoern A. Zeeb 17008e93258fSBjoern A. Zeeb info->recognize_intrs(rtwdev, rtwpci, isrs); 17018e93258fSBjoern A. Zeeb } 17028e93258fSBjoern A. Zeeb 1703*6d67aabdSBjoern A. Zeeb static inline int rtw89_pci_ops_mac_pre_init(struct rtw89_dev *rtwdev) 1704*6d67aabdSBjoern A. Zeeb { 1705*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 1706*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_gen_def *gen_def = info->gen_def; 1707*6d67aabdSBjoern A. Zeeb 1708*6d67aabdSBjoern A. Zeeb return gen_def->mac_pre_init(rtwdev); 1709*6d67aabdSBjoern A. Zeeb } 1710*6d67aabdSBjoern A. Zeeb 1711*6d67aabdSBjoern A. Zeeb static inline int rtw89_pci_ops_mac_pre_deinit(struct rtw89_dev *rtwdev) 1712*6d67aabdSBjoern A. Zeeb { 1713*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 1714*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_gen_def *gen_def = info->gen_def; 1715*6d67aabdSBjoern A. Zeeb 1716*6d67aabdSBjoern A. Zeeb if (!gen_def->mac_pre_deinit) 1717*6d67aabdSBjoern A. Zeeb return 0; 1718*6d67aabdSBjoern A. Zeeb 1719*6d67aabdSBjoern A. Zeeb return gen_def->mac_pre_deinit(rtwdev); 1720*6d67aabdSBjoern A. Zeeb } 1721*6d67aabdSBjoern A. Zeeb 1722*6d67aabdSBjoern A. Zeeb static inline int rtw89_pci_ops_mac_post_init(struct rtw89_dev *rtwdev) 1723*6d67aabdSBjoern A. Zeeb { 1724*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 1725*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_gen_def *gen_def = info->gen_def; 1726*6d67aabdSBjoern A. Zeeb 1727*6d67aabdSBjoern A. Zeeb return gen_def->mac_post_init(rtwdev); 1728*6d67aabdSBjoern A. Zeeb } 1729*6d67aabdSBjoern A. Zeeb 1730*6d67aabdSBjoern A. Zeeb static inline void rtw89_pci_clr_idx_all(struct rtw89_dev *rtwdev) 1731*6d67aabdSBjoern A. Zeeb { 1732*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 1733*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_gen_def *gen_def = info->gen_def; 1734*6d67aabdSBjoern A. Zeeb 1735*6d67aabdSBjoern A. Zeeb gen_def->clr_idx_all(rtwdev); 1736*6d67aabdSBjoern A. Zeeb } 1737*6d67aabdSBjoern A. Zeeb 1738*6d67aabdSBjoern A. Zeeb static inline int rtw89_pci_reset_bdram(struct rtw89_dev *rtwdev) 1739*6d67aabdSBjoern A. Zeeb { 1740*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 1741*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_gen_def *gen_def = info->gen_def; 1742*6d67aabdSBjoern A. Zeeb 1743*6d67aabdSBjoern A. Zeeb return gen_def->rst_bdram(rtwdev); 1744*6d67aabdSBjoern A. Zeeb } 1745*6d67aabdSBjoern A. Zeeb 1746*6d67aabdSBjoern A. Zeeb static inline void rtw89_pci_ctrl_txdma_ch(struct rtw89_dev *rtwdev, bool enable) 1747*6d67aabdSBjoern A. Zeeb { 1748*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 1749*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_gen_def *gen_def = info->gen_def; 1750*6d67aabdSBjoern A. Zeeb 1751*6d67aabdSBjoern A. Zeeb return gen_def->ctrl_txdma_ch(rtwdev, enable); 1752*6d67aabdSBjoern A. Zeeb } 1753*6d67aabdSBjoern A. Zeeb 1754*6d67aabdSBjoern A. Zeeb static inline void rtw89_pci_ctrl_txdma_fw_ch(struct rtw89_dev *rtwdev, bool enable) 1755*6d67aabdSBjoern A. Zeeb { 1756*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 1757*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_gen_def *gen_def = info->gen_def; 1758*6d67aabdSBjoern A. Zeeb 1759*6d67aabdSBjoern A. Zeeb return gen_def->ctrl_txdma_fw_ch(rtwdev, enable); 1760*6d67aabdSBjoern A. Zeeb } 1761*6d67aabdSBjoern A. Zeeb 1762*6d67aabdSBjoern A. Zeeb static inline int rtw89_pci_poll_txdma_ch_idle(struct rtw89_dev *rtwdev) 1763*6d67aabdSBjoern A. Zeeb { 1764*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_info *info = rtwdev->pci_info; 1765*6d67aabdSBjoern A. Zeeb const struct rtw89_pci_gen_def *gen_def = info->gen_def; 1766*6d67aabdSBjoern A. Zeeb 1767*6d67aabdSBjoern A. Zeeb return gen_def->poll_txdma_ch_idle(rtwdev); 1768*6d67aabdSBjoern A. Zeeb } 17698e93258fSBjoern A. Zeeb #endif 1770