|
@@ -33,15 +33,106 @@ H2H_TEST_RX_TX = DMA2
|
|
#define WCN36XX_CCU_DXE_INT_SELECT_RIVA 0x310
|
|
#define WCN36XX_CCU_DXE_INT_SELECT_RIVA 0x310
|
|
#define WCN36XX_CCU_DXE_INT_SELECT_PRONTO 0x10dc
|
|
#define WCN36XX_CCU_DXE_INT_SELECT_PRONTO 0x10dc
|
|
|
|
|
|
-/* TODO This must calculated properly but not hardcoded */
|
|
|
|
-#define WCN36XX_DXE_CTRL_TX_L 0x328a44
|
|
|
|
-#define WCN36XX_DXE_CTRL_TX_H 0x32ce44
|
|
|
|
-#define WCN36XX_DXE_CTRL_RX_L 0x12ad2f
|
|
|
|
-#define WCN36XX_DXE_CTRL_RX_H 0x12d12f
|
|
|
|
-#define WCN36XX_DXE_CTRL_TX_H_BD 0x30ce45
|
|
|
|
-#define WCN36XX_DXE_CTRL_TX_H_SKB 0x32ce4d
|
|
|
|
-#define WCN36XX_DXE_CTRL_TX_L_BD 0x308a45
|
|
|
|
-#define WCN36XX_DXE_CTRL_TX_L_SKB 0x328a4d
|
|
|
|
|
|
+/* Descriptor valid */
|
|
|
|
+#define WCN36xx_DXE_CTRL_VLD BIT(0)
|
|
|
|
+/* End of packet */
|
|
|
|
+#define WCN36xx_DXE_CTRL_EOP BIT(3)
|
|
|
|
+/* BD handling bit */
|
|
|
|
+#define WCN36xx_DXE_CTRL_BDH BIT(4)
|
|
|
|
+/* Source is a queue */
|
|
|
|
+#define WCN36xx_DXE_CTRL_SIQ BIT(5)
|
|
|
|
+/* Destination is a queue */
|
|
|
|
+#define WCN36xx_DXE_CTRL_DIQ BIT(6)
|
|
|
|
+/* Pointer address is a queue */
|
|
|
|
+#define WCN36xx_DXE_CTRL_PIQ BIT(7)
|
|
|
|
+/* Release PDU when done */
|
|
|
|
+#define WCN36xx_DXE_CTRL_PDU_REL BIT(8)
|
|
|
|
+/* STOP channel processing */
|
|
|
|
+#define WCN36xx_DXE_CTRL_STOP BIT(16)
|
|
|
|
+/* INT on descriptor done */
|
|
|
|
+#define WCN36xx_DXE_CTRL_INT BIT(17)
|
|
|
|
+/* Endian byte swap enable */
|
|
|
|
+#define WCN36xx_DXE_CTRL_SWAP BIT(20)
|
|
|
|
+/* Master endianness */
|
|
|
|
+#define WCN36xx_DXE_CTRL_ENDIANNESS BIT(21)
|
|
|
|
+
|
|
|
|
+/* Transfer type */
|
|
|
|
+#define WCN36xx_DXE_CTRL_XTYPE_SHIFT 1
|
|
|
|
+#define WCN36xx_DXE_CTRL_XTYPE_MASK GENMASK(2, WCN36xx_DXE_CTRL_XTYPE_SHIFT)
|
|
|
|
+#define WCN36xx_DXE_CTRL_XTYPE_SET(x) ((x) << WCN36xx_DXE_CTRL_XTYPE_SHIFT)
|
|
|
|
+
|
|
|
|
+/* BMU Threshold select */
|
|
|
|
+#define WCN36xx_DXE_CTRL_BTHLD_SEL_SHIFT 9
|
|
|
|
+#define WCN36xx_DXE_CTRL_BTHLD_SEL_MASK GENMASK(12, WCN36xx_DXE_CTRL_BTHLD_SEL_SHIFT)
|
|
|
|
+#define WCN36xx_DXE_CTRL_BTHLD_SEL_SET(x) ((x) << WCN36xx_DXE_CTRL_BTHLD_SEL_SHIFT)
|
|
|
|
+
|
|
|
|
+/* Priority */
|
|
|
|
+#define WCN36xx_DXE_CTRL_PRIO_SHIFT 13
|
|
|
|
+#define WCN36xx_DXE_CTRL_PRIO_MASK GENMASK(15, WCN36xx_DXE_CTRL_PRIO_SHIFT)
|
|
|
|
+#define WCN36xx_DXE_CTRL_PRIO_SET(x) ((x) << WCN36xx_DXE_CTRL_PRIO_SHIFT)
|
|
|
|
+
|
|
|
|
+/* BD Template index */
|
|
|
|
+#define WCN36xx_DXE_CTRL_BDT_IDX_SHIFT 18
|
|
|
|
+#define WCN36xx_DXE_CTRL_BDT_IDX_MASK GENMASK(19, WCN36xx_DXE_CTRL_BDT_IDX_SHIFT)
|
|
|
|
+#define WCN36xx_DXE_CTRL_BDT_IDX_SET(x) ((x) << WCN36xx_DXE_CTRL_BDT_IDX_SHIFT)
|
|
|
|
+
|
|
|
|
+/* Transfer types: */
|
|
|
|
+/* Host to host */
|
|
|
|
+#define WCN36xx_DXE_XTYPE_H2H (0)
|
|
|
|
+/* Host to BMU */
|
|
|
|
+#define WCN36xx_DXE_XTYPE_H2B (2)
|
|
|
|
+/* BMU to host */
|
|
|
|
+#define WCN36xx_DXE_XTYPE_B2H (3)
|
|
|
|
+
|
|
|
|
+#define WCN36XX_DXE_CTRL_TX_L (WCN36xx_DXE_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_H2B) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_DIQ | WCN36xx_DXE_CTRL_BTHLD_SEL_SET(5) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_PRIO_SET(4) | WCN36xx_DXE_CTRL_INT | \
|
|
|
|
+ WCN36xx_DXE_CTRL_SWAP | WCN36xx_DXE_CTRL_ENDIANNESS)
|
|
|
|
+
|
|
|
|
+#define WCN36XX_DXE_CTRL_TX_H (WCN36xx_DXE_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_H2B) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_DIQ | WCN36xx_DXE_CTRL_BTHLD_SEL_SET(7) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_PRIO_SET(6) | WCN36xx_DXE_CTRL_INT | \
|
|
|
|
+ WCN36xx_DXE_CTRL_SWAP | WCN36xx_DXE_CTRL_ENDIANNESS)
|
|
|
|
+
|
|
|
|
+#define WCN36XX_DXE_CTRL_RX_L (WCN36xx_DXE_CTRL_VLD | \
|
|
|
|
+ WCN36xx_DXE_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_B2H) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_EOP | WCN36xx_DXE_CTRL_SIQ | \
|
|
|
|
+ WCN36xx_DXE_CTRL_PDU_REL | WCN36xx_DXE_CTRL_BTHLD_SEL_SET(6) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_PRIO_SET(5) | WCN36xx_DXE_CTRL_INT | \
|
|
|
|
+ WCN36xx_DXE_CTRL_SWAP)
|
|
|
|
+
|
|
|
|
+#define WCN36XX_DXE_CTRL_RX_H (WCN36xx_DXE_CTRL_VLD | \
|
|
|
|
+ WCN36xx_DXE_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_B2H) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_EOP | WCN36xx_DXE_CTRL_SIQ | \
|
|
|
|
+ WCN36xx_DXE_CTRL_PDU_REL | WCN36xx_DXE_CTRL_BTHLD_SEL_SET(8) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_PRIO_SET(6) | WCN36xx_DXE_CTRL_INT | \
|
|
|
|
+ WCN36xx_DXE_CTRL_SWAP)
|
|
|
|
+
|
|
|
|
+#define WCN36XX_DXE_CTRL_TX_H_BD (WCN36xx_DXE_CTRL_VLD | \
|
|
|
|
+ WCN36xx_DXE_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_H2B) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_DIQ | WCN36xx_DXE_CTRL_BTHLD_SEL_SET(7) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_PRIO_SET(6) | WCN36xx_DXE_CTRL_SWAP | \
|
|
|
|
+ WCN36xx_DXE_CTRL_ENDIANNESS)
|
|
|
|
+
|
|
|
|
+#define WCN36XX_DXE_CTRL_TX_H_SKB (WCN36xx_DXE_CTRL_VLD | \
|
|
|
|
+ WCN36xx_DXE_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_H2B) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_EOP | WCN36xx_DXE_CTRL_DIQ | \
|
|
|
|
+ WCN36xx_DXE_CTRL_BTHLD_SEL_SET(7) | WCN36xx_DXE_CTRL_PRIO_SET(6) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_INT | WCN36xx_DXE_CTRL_SWAP | \
|
|
|
|
+ WCN36xx_DXE_CTRL_ENDIANNESS)
|
|
|
|
+
|
|
|
|
+#define WCN36XX_DXE_CTRL_TX_L_BD (WCN36xx_DXE_CTRL_VLD | \
|
|
|
|
+ WCN36xx_DXE_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_H2B) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_DIQ | WCN36xx_DXE_CTRL_BTHLD_SEL_SET(5) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_PRIO_SET(4) | WCN36xx_DXE_CTRL_SWAP | \
|
|
|
|
+ WCN36xx_DXE_CTRL_ENDIANNESS)
|
|
|
|
+
|
|
|
|
+#define WCN36XX_DXE_CTRL_TX_L_SKB (WCN36xx_DXE_CTRL_VLD | \
|
|
|
|
+ WCN36xx_DXE_CTRL_XTYPE_SET(WCN36xx_DXE_XTYPE_H2B) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_EOP | WCN36xx_DXE_CTRL_DIQ | \
|
|
|
|
+ WCN36xx_DXE_CTRL_BTHLD_SEL_SET(5) | WCN36xx_DXE_CTRL_PRIO_SET(4) | \
|
|
|
|
+ WCN36xx_DXE_CTRL_INT | WCN36xx_DXE_CTRL_SWAP | \
|
|
|
|
+ WCN36xx_DXE_CTRL_ENDIANNESS)
|
|
|
|
|
|
/* TODO This must calculated properly but not hardcoded */
|
|
/* TODO This must calculated properly but not hardcoded */
|
|
#define WCN36XX_DXE_WQ_TX_L 0x17
|
|
#define WCN36XX_DXE_WQ_TX_L 0x17
|
|
@@ -49,9 +140,6 @@ H2H_TEST_RX_TX = DMA2
|
|
#define WCN36XX_DXE_WQ_RX_L 0xB
|
|
#define WCN36XX_DXE_WQ_RX_L 0xB
|
|
#define WCN36XX_DXE_WQ_RX_H 0x4
|
|
#define WCN36XX_DXE_WQ_RX_H 0x4
|
|
|
|
|
|
-/* DXE descriptor control filed */
|
|
|
|
-#define WCN36XX_DXE_CTRL_VALID_MASK (0x00000001)
|
|
|
|
-
|
|
|
|
/* TODO This must calculated properly but not hardcoded */
|
|
/* TODO This must calculated properly but not hardcoded */
|
|
/* DXE default control register values */
|
|
/* DXE default control register values */
|
|
#define WCN36XX_DXE_CH_DEFAULT_CTL_RX_L 0x847EAD2F
|
|
#define WCN36XX_DXE_CH_DEFAULT_CTL_RX_L 0x847EAD2F
|