1dd4f32aeSBjoern A. Zeeb /* SPDX-License-Identifier: BSD-3-Clause-Clear */ 2dd4f32aeSBjoern A. Zeeb /* 3dd4f32aeSBjoern A. Zeeb * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved. 4*28348caeSBjoern A. Zeeb * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. 5dd4f32aeSBjoern A. Zeeb */ 6dd4f32aeSBjoern A. Zeeb 7dd4f32aeSBjoern A. Zeeb /* "API" level of the ath11k testmode interface. Bump it after every 8dd4f32aeSBjoern A. Zeeb * incompatible interface change. 9dd4f32aeSBjoern A. Zeeb */ 10dd4f32aeSBjoern A. Zeeb #define ATH11K_TESTMODE_VERSION_MAJOR 1 11dd4f32aeSBjoern A. Zeeb 12dd4f32aeSBjoern A. Zeeb /* Bump this after every _compatible_ interface change, for example 13dd4f32aeSBjoern A. Zeeb * addition of a new command or an attribute. 14dd4f32aeSBjoern A. Zeeb */ 15*28348caeSBjoern A. Zeeb #define ATH11K_TESTMODE_VERSION_MINOR 1 16dd4f32aeSBjoern A. Zeeb 17dd4f32aeSBjoern A. Zeeb #define ATH11K_TM_DATA_MAX_LEN 5000 18*28348caeSBjoern A. Zeeb #define ATH11K_FTM_EVENT_MAX_BUF_LENGTH 2048 19dd4f32aeSBjoern A. Zeeb 20dd4f32aeSBjoern A. Zeeb enum ath11k_tm_attr { 21dd4f32aeSBjoern A. Zeeb __ATH11K_TM_ATTR_INVALID = 0, 22dd4f32aeSBjoern A. Zeeb ATH11K_TM_ATTR_CMD = 1, 23dd4f32aeSBjoern A. Zeeb ATH11K_TM_ATTR_DATA = 2, 24dd4f32aeSBjoern A. Zeeb ATH11K_TM_ATTR_WMI_CMDID = 3, 25dd4f32aeSBjoern A. Zeeb ATH11K_TM_ATTR_VERSION_MAJOR = 4, 26dd4f32aeSBjoern A. Zeeb ATH11K_TM_ATTR_VERSION_MINOR = 5, 27dd4f32aeSBjoern A. Zeeb ATH11K_TM_ATTR_WMI_OP_VERSION = 6, 28dd4f32aeSBjoern A. Zeeb 29dd4f32aeSBjoern A. Zeeb /* keep last */ 30dd4f32aeSBjoern A. Zeeb __ATH11K_TM_ATTR_AFTER_LAST, 31dd4f32aeSBjoern A. Zeeb ATH11K_TM_ATTR_MAX = __ATH11K_TM_ATTR_AFTER_LAST - 1, 32dd4f32aeSBjoern A. Zeeb }; 33dd4f32aeSBjoern A. Zeeb 34dd4f32aeSBjoern A. Zeeb /* All ath11k testmode interface commands specified in 35dd4f32aeSBjoern A. Zeeb * ATH11K_TM_ATTR_CMD 36dd4f32aeSBjoern A. Zeeb */ 37dd4f32aeSBjoern A. Zeeb enum ath11k_tm_cmd { 38dd4f32aeSBjoern A. Zeeb /* Returns the supported ath11k testmode interface version in 39dd4f32aeSBjoern A. Zeeb * ATH11K_TM_ATTR_VERSION. Always guaranteed to work. User space 40dd4f32aeSBjoern A. Zeeb * uses this to verify it's using the correct version of the 41dd4f32aeSBjoern A. Zeeb * testmode interface 42dd4f32aeSBjoern A. Zeeb */ 43dd4f32aeSBjoern A. Zeeb ATH11K_TM_CMD_GET_VERSION = 0, 44dd4f32aeSBjoern A. Zeeb 45dd4f32aeSBjoern A. Zeeb /* The command used to transmit a WMI command to the firmware and 46dd4f32aeSBjoern A. Zeeb * the event to receive WMI events from the firmware. Without 47dd4f32aeSBjoern A. Zeeb * struct wmi_cmd_hdr header, only the WMI payload. Command id is 48dd4f32aeSBjoern A. Zeeb * provided with ATH11K_TM_ATTR_WMI_CMDID and payload in 49dd4f32aeSBjoern A. Zeeb * ATH11K_TM_ATTR_DATA. 50dd4f32aeSBjoern A. Zeeb */ 51dd4f32aeSBjoern A. Zeeb ATH11K_TM_CMD_WMI = 1, 52*28348caeSBjoern A. Zeeb 53*28348caeSBjoern A. Zeeb /* Boots the UTF firmware, the netdev interface must be down at the 54*28348caeSBjoern A. Zeeb * time. 55*28348caeSBjoern A. Zeeb */ 56*28348caeSBjoern A. Zeeb ATH11K_TM_CMD_TESTMODE_START = 2, 57*28348caeSBjoern A. Zeeb 58*28348caeSBjoern A. Zeeb /* The command used to transmit a FTM WMI command to the firmware 59*28348caeSBjoern A. Zeeb * and the event to receive WMI events from the firmware. The data 60*28348caeSBjoern A. Zeeb * received only contain the payload, need to add the tlv header 61*28348caeSBjoern A. Zeeb * and send the cmd to firmware with command id WMI_PDEV_UTF_CMDID. 62*28348caeSBjoern A. Zeeb * The data payload size could be large and the driver needs to 63*28348caeSBjoern A. Zeeb * send segmented data to firmware. 64*28348caeSBjoern A. Zeeb */ 65*28348caeSBjoern A. Zeeb ATH11K_TM_CMD_WMI_FTM = 3, 66dd4f32aeSBjoern A. Zeeb }; 67