carl9170 firmware: Support multiple CAB queues
[carl9170fw.git] / include / shared / fwcmd.h
index 49fdb2f71a731ec25c0561e6ffe333b4b4be9898..f1c8f9e81d80c48bcb192ba60674fb3738fdd5bb 100644 (file)
@@ -53,7 +53,6 @@ enum carl9170_cmd_oids {
        CARL9170_CMD_REBOOT             = 0x04,
        CARL9170_CMD_FLUSH_CAB          = 0x05,
        CARL9170_CMD_READ_TSF           = 0x06,
-       CARL9170_CMD_USB_WD             = 0x07,
 
        /* CAM */
        CARL9170_CMD_EKEY               = 0x10,
@@ -66,7 +65,17 @@ enum carl9170_cmd_oids {
        CARL9170_CMD_FREQ_START         = 0x23,
        CARL9170_CMD_PSM                = 0x24,
 
+       /* Asychronous command flag */
+       CARL9170_CMD_ASYNC_FLAG         = 0x40,
+       CARL9170_CMD_WREG_ASYNC         = (CARL9170_CMD_WREG |
+                                          CARL9170_CMD_ASYNC_FLAG),
+       CARL9170_CMD_REBOOT_ASYNC       = (CARL9170_CMD_REBOOT |
+                                          CARL9170_CMD_ASYNC_FLAG),
+       CARL9170_CMD_FLUSH_CAB_ASYNC    = (CARL9170_CMD_FLUSH_CAB |
+                                          CARL9170_CMD_ASYNC_FLAG),
+
        /* responses and traps */
+       CARL9170_RSP_FLAG               = 0xc0,
        CARL9170_RSP_PRETBTT            = 0xc0,
        CARL9170_RSP_TXCOMP             = 0xc1,
        CARL9170_RSP_BEACON_CONFIG      = 0xc2,
@@ -76,7 +85,7 @@ enum carl9170_cmd_oids {
        CARL9170_RSP_HEXDUMP            = 0xcc,
        CARL9170_RSP_RADAR              = 0xcd,
        CARL9170_RSP_GPIO               = 0xce,
-       CARL9170_RSP_USB_WD             = 0xcf
+       CARL9170_RSP_BOOT               = 0xcf,
 };
 
 struct carl9170_set_key_cmd {
@@ -128,17 +137,8 @@ struct carl9170_rf_init {
 
 struct carl9170_rf_init_result {
        __le32          ret;            /* AR9170_PHY_REG_AGC_CONTROL */
-       __le32          regs[6];
-} __packed;
-#define        CARL9170_RF_INIT_RESULT_SIZE    28
-
-#define        CARL9170_USB_WATCHDOG_INACTIVE  0
-#define        CARL9170_USB_WATCHDOG_ON_DUTY   1
-
-struct carl9170_watchdog_cmd {
-       __le32          state;
 } __packed;
-#define CARL9170_WATCHDOG_CMD_SIZE     4
+#define        CARL9170_RF_INIT_RESULT_SIZE    4
 
 #define        CARL9170_PSM_SLEEP              0x1000
 #define        CARL9170_PSM_SOFTWARE           0
@@ -152,9 +152,13 @@ struct carl9170_psm {
 #define CARL9170_PSM_SIZE              4
 
 struct carl9170_cab_flush_cmd {
-       __le32          vif_id;         /* currently unused */
+       __le32          vif_id;
+       __le32          mode;
 } __packed;
-#define CARL9170_CAB_FLUSH_CMD_SIZE    4
+#define CARL9170_CAB_FLUSH_CMD_SIZE    8
+
+#define CARL9170_CAB_FLUSH_DRAIN       0
+#define CARL9170_CAB_FLUSH_CAB_TRIGGER 1
 
 struct carl9170_cmd_head {
        union {
@@ -175,7 +179,6 @@ struct carl9170_cmd {
                struct carl9170_set_key_cmd     setkey;
                struct carl9170_disable_key_cmd disablekey;
                struct carl9170_u32_list        echo;
-               struct carl9170_watchdog_cmd    watchdog;
                struct carl9170_reg_list        rreg;
                struct carl9170_write_reg       wreg;
                struct carl9170_rf_init         rf_init;
@@ -185,11 +188,12 @@ struct carl9170_cmd {
        } __packed;
 } __packed;
 
-#define        CARL9170_TX_STATUS_QUEUE_MASK   3
-#define        CARL9170_TX_STATUS_RIX_SHIFT    2
-#define        CARL9170_TX_STATUS_RIX_MASK     (3 << CARL9170_TX_STATUS_RIX_SHIFT)
-#define        CARL9170_TX_STATUS_TRIES_SHIFT  4
-#define        CARL9170_TX_STATUS_TRIES_MASK   (7 << CARL9170_TX_STATUS_TRIES_SHIFT)
+#define        CARL9170_TX_STATUS_QUEUE        3
+#define        CARL9170_TX_STATUS_QUEUE_S      0
+#define        CARL9170_TX_STATUS_RIX_S        2
+#define        CARL9170_TX_STATUS_RIX          (3 << CARL9170_TX_STATUS_RIX_S)
+#define        CARL9170_TX_STATUS_TRIES_S      4
+#define        CARL9170_TX_STATUS_TRIES        (7 << CARL9170_TX_STATUS_TRIES_S)
 #define        CARL9170_TX_STATUS_SUCCESS      0x80
 
 /*
@@ -248,7 +252,6 @@ struct carl9170_rsp {
                struct carl9170_rf_init_result  rf_init_res;
                struct carl9170_u32_list        rreg_res;
                struct carl9170_u32_list        echo;
-               struct carl9170_watchdog_cmd    watchdog;
                struct carl9170_tx_status       tx_status[0];
                struct _carl9170_tx_status      _tx_status[0];
                struct carl9170_gpio            gpio;