| /* SPDX-License-Identifier: ISC */ |
| /* Copyright (C) 2019 MediaTek Inc. */ |
| |
| #ifndef __MT7615_MCU_H |
| #define __MT7615_MCU_H |
| |
| #include "../mt76_connac_mcu.h" |
| |
| struct mt7615_mcu_txd { |
| __le32 txd[8]; |
| |
| __le16 len; |
| __le16 pq_id; |
| |
| u8 cid; |
| u8 pkt_type; |
| u8 set_query; /* FW don't care */ |
| u8 seq; |
| |
| u8 uc_d2b0_rev; |
| u8 ext_cid; |
| u8 s2d_index; |
| u8 ext_cid_ack; |
| |
| u32 reserved[5]; |
| } __packed __aligned(4); |
| |
| /** |
| * struct mt7615_uni_txd - mcu command descriptor for firmware v3 |
| * @txd: hardware descriptor |
| * @len: total length not including txd |
| * @cid: command identifier |
| * @pkt_type: must be 0xa0 (cmd packet by long format) |
| * @frag_n: fragment number |
| * @seq: sequence number |
| * @checksum: 0 mean there is no checksum |
| * @s2d_index: index for command source and destination |
| * Definition | value | note |
| * CMD_S2D_IDX_H2N | 0x00 | command from HOST to WM |
| * CMD_S2D_IDX_C2N | 0x01 | command from WA to WM |
| * CMD_S2D_IDX_H2C | 0x02 | command from HOST to WA |
| * CMD_S2D_IDX_H2N_AND_H2C | 0x03 | command from HOST to WA and WM |
| * |
| * @option: command option |
| * BIT[0]: UNI_CMD_OPT_BIT_ACK |
| * set to 1 to request a fw reply |
| * if UNI_CMD_OPT_BIT_0_ACK is set and UNI_CMD_OPT_BIT_2_SET_QUERY |
| * is set, mcu firmware will send response event EID = 0x01 |
| * (UNI_EVENT_ID_CMD_RESULT) to the host. |
| * BIT[1]: UNI_CMD_OPT_BIT_UNI_CMD |
| * 0: original command |
| * 1: unified command |
| * BIT[2]: UNI_CMD_OPT_BIT_SET_QUERY |
| * 0: QUERY command |
| * 1: SET command |
| */ |
| struct mt7615_uni_txd { |
| __le32 txd[8]; |
| |
| /* DW1 */ |
| __le16 len; |
| __le16 cid; |
| |
| /* DW2 */ |
| u8 reserved; |
| u8 pkt_type; |
| u8 frag_n; |
| u8 seq; |
| |
| /* DW3 */ |
| __le16 checksum; |
| u8 s2d_index; |
| u8 option; |
| |
| /* DW4 */ |
| u8 reserved2[4]; |
| } __packed __aligned(4); |
| |
| enum { |
| MT_SKU_CCK_1_2 = 0, |
| MT_SKU_CCK_55_11, |
| MT_SKU_OFDM_6_9, |
| MT_SKU_OFDM_12_18, |
| MT_SKU_OFDM_24_36, |
| MT_SKU_OFDM_48, |
| MT_SKU_OFDM_54, |
| MT_SKU_HT20_0_8, |
| MT_SKU_HT20_32, |
| MT_SKU_HT20_1_2_9_10, |
| MT_SKU_HT20_3_4_11_12, |
| MT_SKU_HT20_5_13, |
| MT_SKU_HT20_6_14, |
| MT_SKU_HT20_7_15, |
| MT_SKU_HT40_0_8, |
| MT_SKU_HT40_32, |
| MT_SKU_HT40_1_2_9_10, |
| MT_SKU_HT40_3_4_11_12, |
| MT_SKU_HT40_5_13, |
| MT_SKU_HT40_6_14, |
| MT_SKU_HT40_7_15, |
| MT_SKU_VHT20_0, |
| MT_SKU_VHT20_1_2, |
| MT_SKU_VHT20_3_4, |
| MT_SKU_VHT20_5_6, |
| MT_SKU_VHT20_7, |
| MT_SKU_VHT20_8, |
| MT_SKU_VHT20_9, |
| MT_SKU_VHT40_0, |
| MT_SKU_VHT40_1_2, |
| MT_SKU_VHT40_3_4, |
| MT_SKU_VHT40_5_6, |
| MT_SKU_VHT40_7, |
| MT_SKU_VHT40_8, |
| MT_SKU_VHT40_9, |
| MT_SKU_VHT80_0, |
| MT_SKU_VHT80_1_2, |
| MT_SKU_VHT80_3_4, |
| MT_SKU_VHT80_5_6, |
| MT_SKU_VHT80_7, |
| MT_SKU_VHT80_8, |
| MT_SKU_VHT80_9, |
| MT_SKU_VHT160_0, |
| MT_SKU_VHT160_1_2, |
| MT_SKU_VHT160_3_4, |
| MT_SKU_VHT160_5_6, |
| MT_SKU_VHT160_7, |
| MT_SKU_VHT160_8, |
| MT_SKU_VHT160_9, |
| MT_SKU_1SS_DELTA, |
| MT_SKU_2SS_DELTA, |
| MT_SKU_3SS_DELTA, |
| MT_SKU_4SS_DELTA, |
| }; |
| |
| struct mt7615_mcu_rxd { |
| __le32 rxd[4]; |
| |
| __le16 len; |
| __le16 pkt_type_id; |
| |
| u8 eid; |
| u8 seq; |
| __le16 __rsv; |
| |
| u8 ext_eid; |
| u8 __rsv1[2]; |
| u8 s2d_index; |
| }; |
| |
| struct mt7615_mcu_csa_notify { |
| struct mt7615_mcu_rxd rxd; |
| |
| u8 omac_idx; |
| u8 csa_count; |
| u8 rsv[2]; |
| } __packed; |
| |
| struct mt7615_mcu_rdd_report { |
| struct mt7615_mcu_rxd rxd; |
| |
| u8 band_idx; |
| u8 long_detected; |
| u8 constant_prf_detected; |
| u8 staggered_prf_detected; |
| u8 radar_type_idx; |
| u8 periodic_pulse_num; |
| u8 long_pulse_num; |
| u8 hw_pulse_num; |
| |
| u8 out_lpn; |
| u8 out_spn; |
| u8 out_crpn; |
| u8 out_crpw; |
| u8 out_crbn; |
| u8 out_stgpn; |
| u8 out_stgpw; |
| |
| u8 _rsv[2]; |
| |
| __le32 out_pri_const; |
| __le32 out_pri_stg[3]; |
| |
| struct { |
| __le32 start; |
| __le16 pulse_width; |
| __le16 pulse_power; |
| } long_pulse[32]; |
| |
| struct { |
| __le32 start; |
| __le16 pulse_width; |
| __le16 pulse_power; |
| } periodic_pulse[32]; |
| |
| struct { |
| __le32 start; |
| __le16 pulse_width; |
| __le16 pulse_power; |
| u8 sc_pass; |
| u8 sw_reset; |
| } hw_pulse[32]; |
| }; |
| |
| enum { |
| MCU_ATE_SET_FREQ_OFFSET = 0xa, |
| MCU_ATE_SET_TX_POWER_CONTROL = 0x15, |
| }; |
| |
| struct mt7615_roc_tlv { |
| u8 bss_idx; |
| u8 token; |
| u8 active; |
| u8 primary_chan; |
| u8 sco; |
| u8 band; |
| u8 width; /* To support 80/160MHz bandwidth */ |
| u8 freq_seg1; /* To support 80/160MHz bandwidth */ |
| u8 freq_seg2; /* To support 80/160MHz bandwidth */ |
| u8 req_type; |
| u8 dbdc_band; |
| u8 rsv0; |
| __le32 max_interval; /* ms */ |
| u8 rsv1[8]; |
| } __packed; |
| |
| enum { |
| FW_STATE_PWR_ON = 1, |
| FW_STATE_N9_RDY = 2, |
| }; |
| |
| enum { |
| DBDC_TYPE_WMM, |
| DBDC_TYPE_MGMT, |
| DBDC_TYPE_BSS, |
| DBDC_TYPE_MBSS, |
| DBDC_TYPE_REPEATER, |
| DBDC_TYPE_MU, |
| DBDC_TYPE_BF, |
| DBDC_TYPE_PTA, |
| __DBDC_TYPE_MAX, |
| }; |
| |
| #endif |