diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/hw.h')
| -rw-r--r-- | drivers/net/wireless/ath/ath10k/hw.h | 88 | 
1 files changed, 74 insertions, 14 deletions
diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h index 44ed5af0a20..007e855f4ba 100644 --- a/drivers/net/wireless/ath/ath10k/hw.h +++ b/drivers/net/wireless/ath/ath10k/hw.h @@ -20,28 +20,38 @@  #include "targaddrs.h" -/* Supported FW version */ -#define SUPPORTED_FW_MAJOR	1 -#define SUPPORTED_FW_MINOR	0 -#define SUPPORTED_FW_RELEASE	0 -#define SUPPORTED_FW_BUILD	629 - -/* QCA988X 1.0 definitions */ -#define QCA988X_HW_1_0_VERSION		0x4000002c -#define QCA988X_HW_1_0_FW_DIR		"ath10k/QCA988X/hw1.0" -#define QCA988X_HW_1_0_FW_FILE		"firmware.bin" -#define QCA988X_HW_1_0_OTP_FILE		"otp.bin" -#define QCA988X_HW_1_0_BOARD_DATA_FILE	"board.bin" -#define QCA988X_HW_1_0_PATCH_LOAD_ADDR	0x1234 +/* QCA988X 1.0 definitions (unsupported) */ +#define QCA988X_HW_1_0_CHIP_ID_REV	0x0  /* QCA988X 2.0 definitions */  #define QCA988X_HW_2_0_VERSION		0x4100016c +#define QCA988X_HW_2_0_CHIP_ID_REV	0x2  #define QCA988X_HW_2_0_FW_DIR		"ath10k/QCA988X/hw2.0"  #define QCA988X_HW_2_0_FW_FILE		"firmware.bin" +#define QCA988X_HW_2_0_FW_2_FILE	"firmware-2.bin"  #define QCA988X_HW_2_0_OTP_FILE		"otp.bin"  #define QCA988X_HW_2_0_BOARD_DATA_FILE	"board.bin"  #define QCA988X_HW_2_0_PATCH_LOAD_ADDR	0x1234 +#define ATH10K_FW_API2_FILE		"firmware-2.bin" + +/* includes also the null byte */ +#define ATH10K_FIRMWARE_MAGIC               "QCA-ATH10K" + +struct ath10k_fw_ie { +	__le32 id; +	__le32 len; +	u8 data[0]; +}; + +enum ath10k_fw_ie_type { +	ATH10K_FW_IE_FW_VERSION = 0, +	ATH10K_FW_IE_TIMESTAMP = 1, +	ATH10K_FW_IE_FEATURES = 2, +	ATH10K_FW_IE_FW_IMAGE = 3, +	ATH10K_FW_IE_OTP_IMAGE = 4, +}; +  /* Known pecularities:   *  - current FW doesn't support raw rx mode (last tested v599)   *  - current FW dumps upon raw tx mode (last tested v599) @@ -53,6 +63,9 @@ enum ath10k_hw_txrx_mode {  	ATH10K_HW_TXRX_RAW = 0,  	ATH10K_HW_TXRX_NATIVE_WIFI = 1,  	ATH10K_HW_TXRX_ETHERNET = 2, + +	/* Valid for HTT >= 3.0. Used for management frames in TX_FRM. */ +	ATH10K_HW_TXRX_MGMT = 3,  };  enum ath10k_mcast2ucast_mode { @@ -60,6 +73,7 @@ enum ath10k_mcast2ucast_mode {  	ATH10K_MCAST2UCAST_ENABLED = 1,  }; +/* Target specific defines for MAIN firmware */  #define TARGET_NUM_VDEVS			8  #define TARGET_NUM_PEER_AST			2  #define TARGET_NUM_WDS_ENTRIES			32 @@ -75,7 +89,11 @@ enum ath10k_mcast2ucast_mode {  #define TARGET_RX_CHAIN_MASK			(BIT(0) | BIT(1) | BIT(2))  #define TARGET_RX_TIMEOUT_LO_PRI		100  #define TARGET_RX_TIMEOUT_HI_PRI		40 -#define TARGET_RX_DECAP_MODE			ATH10K_HW_TXRX_ETHERNET + +/* Native Wifi decap mode is used to align IP frames to 4-byte boundaries and + * avoid a very expensive re-alignment in mac80211. */ +#define TARGET_RX_DECAP_MODE			ATH10K_HW_TXRX_NATIVE_WIFI +  #define TARGET_SCAN_MAX_PENDING_REQS		4  #define TARGET_BMISS_OFFLOAD_MAX_VDEV		3  #define TARGET_ROAM_OFFLOAD_MAX_VDEV		3 @@ -90,6 +108,37 @@ enum ath10k_mcast2ucast_mode {  #define TARGET_NUM_MSDU_DESC			(1024 + 400)  #define TARGET_MAX_FRAG_ENTRIES			0 +/* Target specific defines for 10.X firmware */ +#define TARGET_10X_NUM_VDEVS			16 +#define TARGET_10X_NUM_PEER_AST			2 +#define TARGET_10X_NUM_WDS_ENTRIES		32 +#define TARGET_10X_DMA_BURST_SIZE		0 +#define TARGET_10X_MAC_AGGR_DELIM		0 +#define TARGET_10X_AST_SKID_LIMIT		16 +#define TARGET_10X_NUM_PEERS			(128 + (TARGET_10X_NUM_VDEVS)) +#define TARGET_10X_NUM_PEERS_MAX		128 +#define TARGET_10X_NUM_OFFLOAD_PEERS		0 +#define TARGET_10X_NUM_OFFLOAD_REORDER_BUFS	0 +#define TARGET_10X_NUM_PEER_KEYS		2 +#define TARGET_10X_NUM_TIDS			256 +#define TARGET_10X_TX_CHAIN_MASK		(BIT(0) | BIT(1) | BIT(2)) +#define TARGET_10X_RX_CHAIN_MASK		(BIT(0) | BIT(1) | BIT(2)) +#define TARGET_10X_RX_TIMEOUT_LO_PRI		100 +#define TARGET_10X_RX_TIMEOUT_HI_PRI		40 +#define TARGET_10X_RX_DECAP_MODE		ATH10K_HW_TXRX_NATIVE_WIFI +#define TARGET_10X_SCAN_MAX_PENDING_REQS	4 +#define TARGET_10X_BMISS_OFFLOAD_MAX_VDEV	2 +#define TARGET_10X_ROAM_OFFLOAD_MAX_VDEV	2 +#define TARGET_10X_ROAM_OFFLOAD_MAX_AP_PROFILES	8 +#define TARGET_10X_GTK_OFFLOAD_MAX_VDEV		3 +#define TARGET_10X_NUM_MCAST_GROUPS		0 +#define TARGET_10X_NUM_MCAST_TABLE_ELEMS	0 +#define TARGET_10X_MCAST2UCAST_MODE		ATH10K_MCAST2UCAST_DISABLED +#define TARGET_10X_TX_DBG_LOG_SIZE		1024 +#define TARGET_10X_RX_SKIP_DEFRAG_TIMEOUT_DUP_DETECTION_CHECK 1 +#define TARGET_10X_VOW_CONFIG			0 +#define TARGET_10X_NUM_MSDU_DESC		(1024 + 400) +#define TARGET_10X_MAX_FRAG_ENTRIES		0  /* Number of Copy Engines supported */  #define CE_COUNT 8 @@ -157,8 +206,11 @@ enum ath10k_mcast2ucast_mode {  #define WLAN_ANALOG_INTF_PCIE_BASE_ADDRESS	0x0006c000  #define PCIE_LOCAL_BASE_ADDRESS			0x00080000 +#define SOC_RESET_CONTROL_ADDRESS		0x00000000  #define SOC_RESET_CONTROL_OFFSET		0x00000000  #define SOC_RESET_CONTROL_SI0_RST_MASK		0x00000001 +#define SOC_RESET_CONTROL_CE_RST_MASK		0x00040000 +#define SOC_RESET_CONTROL_CPU_WARM_RST_MASK	0x00000040  #define SOC_CPU_CLOCK_OFFSET			0x00000020  #define SOC_CPU_CLOCK_STANDARD_LSB		0  #define SOC_CPU_CLOCK_STANDARD_MASK		0x00000003 @@ -168,6 +220,12 @@ enum ath10k_mcast2ucast_mode {  #define SOC_LPO_CAL_OFFSET			0x000000e0  #define SOC_LPO_CAL_ENABLE_LSB			20  #define SOC_LPO_CAL_ENABLE_MASK			0x00100000 +#define SOC_LF_TIMER_CONTROL0_ADDRESS		0x00000050 +#define SOC_LF_TIMER_CONTROL0_ENABLE_MASK	0x00000004 + +#define SOC_CHIP_ID_ADDRESS			0x000000ec +#define SOC_CHIP_ID_REV_LSB			8 +#define SOC_CHIP_ID_REV_MASK			0x00000f00  #define WLAN_RESET_CONTROL_COLD_RST_MASK	0x00000008  #define WLAN_RESET_CONTROL_WARM_RST_MASK	0x00000004 @@ -218,8 +276,10 @@ enum ath10k_mcast2ucast_mode {  #define CORE_CTRL_CPU_INTR_MASK			0x00002000  #define CORE_CTRL_ADDRESS			0x0000  #define PCIE_INTR_ENABLE_ADDRESS		0x0008 +#define PCIE_INTR_CAUSE_ADDRESS			0x000c  #define PCIE_INTR_CLR_ADDRESS			0x0014  #define SCRATCH_3_ADDRESS			0x0030 +#define CPU_INTR_ADDRESS			0x0010  /* Firmware indications to the Host via SCRATCH_3 register. */  #define FW_INDICATOR_ADDRESS	(SOC_CORE_BASE_ADDRESS + SCRATCH_3_ADDRESS)  | 
