mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 16:46:15 -04:00
qcacld-3.0: Configure tsf gpio pin
qcacld-2.0 to qcacld-3.0 propagation Add configuration of gpio pin used for TSF. FW shall toggle this gpio when receive capture/get tsf cmd. Change-Id: I442f2de3af4f3946a20bf3f4a9d8c9b285aa7a7c CRs-Fixed: 817527
This commit is contained in:
parent
dcc21ba7f6
commit
976e756f56
10 changed files with 129 additions and 20 deletions
|
|
@ -2911,6 +2911,11 @@ enum dot11p_mode {
|
|||
#define CFG_INFORM_BSS_RSSI_RAW_MAX (1)
|
||||
#define CFG_INFORM_BSS_RSSI_RAW_DEFAULT (1)
|
||||
|
||||
/* GPIO pin to toggle when capture tsf */
|
||||
#define CFG_SET_TSF_GPIO_PIN_NAME "gtsf_gpio_pin"
|
||||
#define CFG_SET_TSF_GPIO_PIN_MIN (0)
|
||||
#define CFG_SET_TSF_GPIO_PIN_MAX (255)
|
||||
#define CFG_SET_TSF_GPIO_PIN_DEFAULT (34)
|
||||
|
||||
/*
|
||||
* OBSS scan parameters
|
||||
|
|
@ -3579,6 +3584,7 @@ struct hdd_config {
|
|||
uint16_t obss_passive_dwelltime;
|
||||
uint16_t obss_width_trigger_interval;
|
||||
uint8_t inform_bss_rssi_raw;
|
||||
uint32_t tsf_gpio_pin;
|
||||
#ifdef QCA_WIFI_3_0_EMU
|
||||
bool enable_m2m_limitation;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3725,6 +3725,15 @@ REG_TABLE_ENTRY g_registry_table[] = {
|
|||
CFG_INFORM_BSS_RSSI_RAW_MIN,
|
||||
CFG_INFORM_BSS_RSSI_RAW_MAX),
|
||||
|
||||
#ifdef WLAN_FEATURE_TSF
|
||||
REG_VARIABLE(CFG_SET_TSF_GPIO_PIN_NAME, WLAN_PARAM_Integer,
|
||||
struct hdd_config, tsf_gpio_pin,
|
||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||
CFG_SET_TSF_GPIO_PIN_DEFAULT,
|
||||
CFG_SET_TSF_GPIO_PIN_MIN,
|
||||
CFG_SET_TSF_GPIO_PIN_MAX),
|
||||
#endif
|
||||
|
||||
#ifdef QCA_WIFI_3_0_EMU
|
||||
REG_VARIABLE(CFG_ENABLE_M2M_LIMITATION, WLAN_PARAM_Integer,
|
||||
struct hdd_config, enable_m2m_limitation,
|
||||
|
|
|
|||
|
|
@ -5943,6 +5943,10 @@ int hdd_wlan_startup(struct device *dev, void *hif_sc)
|
|||
if (QDF_IS_STATUS_SUCCESS(status))
|
||||
hdd_err("Error setting txlimit in sme: %d", status);
|
||||
|
||||
status = sme_set_tsf_gpio(hdd_ctx->hHal, hdd_ctx->config->tsf_gpio_pin);
|
||||
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||
hdd_err("set tsf GPIO fail");
|
||||
|
||||
#ifdef MSM_PLATFORM
|
||||
spin_lock_init(&hdd_ctx->bus_bw_lock);
|
||||
qdf_mc_timer_init(&hdd_ctx->bus_bw_timer,
|
||||
|
|
|
|||
|
|
@ -599,6 +599,8 @@ typedef struct sSirMbMsgP2p {
|
|||
#define SIR_HAL_SET_EGAP_CONF_PARAMS (SIR_HAL_ITC_MSG_TYPES_BEGIN + 336)
|
||||
#define SIR_HAL_HT40_OBSS_SCAN_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 337)
|
||||
|
||||
#define SIR_HAL_TSF_GPIO_PIN_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 338)
|
||||
|
||||
#define SIR_HAL_ADD_BCN_FILTER_CMDID (SIR_HAL_ITC_MSG_TYPES_BEGIN + 339)
|
||||
#define SIR_HAL_REMOVE_BCN_FILTER_CMDID (SIR_HAL_ITC_MSG_TYPES_BEGIN + 340)
|
||||
|
||||
|
|
|
|||
|
|
@ -1099,6 +1099,15 @@ QDF_STATUS sme_ht40_stop_obss_scan(tHalHandle hHal, uint32_t vdev_id);
|
|||
QDF_STATUS sme_set_tsfcb(tHalHandle hHal,
|
||||
int (*cb_fn)(void *cb_ctx, struct stsf *ptsf), void *cb_ctx);
|
||||
|
||||
#ifdef WLAN_FEATURE_TSF
|
||||
QDF_STATUS sme_set_tsf_gpio(tHalHandle h_hal, uint32_t pinvalue);
|
||||
#else
|
||||
static inline QDF_STATUS sme_set_tsf_gpio(tHalHandle h_hal, uint32_t pinvalue)
|
||||
{
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS sme_update_mimo_power_save(tHalHandle hHal,
|
||||
uint8_t is_ht_smps_enabled,
|
||||
uint8_t ht_smps_mode,
|
||||
|
|
|
|||
|
|
@ -7310,27 +7310,58 @@ QDF_STATUS sme_preferred_network_found_ind(tHalHandle hHal, void *pMsg)
|
|||
|
||||
/*
|
||||
* sme_set_tsfcb() - Set callback for TSF capture
|
||||
* @hHal: Handler return by macOpen
|
||||
* @h_hal: Handler return by mac_open
|
||||
* @cb_fn: Callback function pointer
|
||||
* @db_ctx: Callback data
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS sme_set_tsfcb(tHalHandle hHal,
|
||||
QDF_STATUS sme_set_tsfcb(tHalHandle h_hal,
|
||||
int (*cb_fn)(void *cb_ctx, struct stsf *ptsf), void *cb_ctx)
|
||||
{
|
||||
tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
|
||||
tpAniSirGlobal mac = PMAC_STRUCT(h_hal);
|
||||
QDF_STATUS status;
|
||||
|
||||
status = sme_acquire_global_lock(&pMac->sme);
|
||||
status = sme_acquire_global_lock(&mac->sme);
|
||||
if (QDF_IS_STATUS_SUCCESS(status)) {
|
||||
pMac->sme.get_tsf_cb = cb_fn;
|
||||
pMac->sme.get_tsf_cxt = cb_ctx;
|
||||
sme_release_global_lock(&pMac->sme);
|
||||
mac->sme.get_tsf_cb = cb_fn;
|
||||
mac->sme.get_tsf_cxt = cb_ctx;
|
||||
sme_release_global_lock(&mac->sme);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_TSF
|
||||
/*
|
||||
* sme_set_tsf_gpio() - set gpio pin that be toggled when capture tef
|
||||
* @h_hal: Handler return by mac_open
|
||||
* @pinvalue: gpio pin id
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS sme_set_tsf_gpio(tHalHandle h_hal, uint32_t pinvalue)
|
||||
{
|
||||
QDF_STATUS status;
|
||||
cds_msg_t tsf_msg = {0};
|
||||
tpAniSirGlobal mac = PMAC_STRUCT(h_hal);
|
||||
|
||||
status = sme_acquire_global_lock(&mac->sme);
|
||||
if (QDF_IS_STATUS_SUCCESS(status)) {
|
||||
tsf_msg.type = WMA_TSF_GPIO_PIN;
|
||||
tsf_msg.reserved = 0;
|
||||
tsf_msg.bodyval = pinvalue;
|
||||
|
||||
status = cds_mq_post_message(CDS_MQ_ID_WMA, &tsf_msg);
|
||||
if (!QDF_IS_STATUS_SUCCESS(status)) {
|
||||
sms_log(mac, LOGE, "Unable to post WMA_TSF_GPIO_PIN");
|
||||
status = QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
sme_release_global_lock(&mac->sme);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS sme_get_cfg_valid_channels(tHalHandle hHal, uint8_t *aValidChannels,
|
||||
uint32_t *len)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1072,9 +1072,37 @@ QDF_STATUS wma_set_auto_shutdown_timer_req(tp_wma_handle wma_handle,
|
|||
auto_sh_cmd);
|
||||
#endif
|
||||
|
||||
#ifdef WLAN_FEATURE_TSF
|
||||
int wma_vdev_tsf_handler(void *handle, uint8_t *data, uint32_t data_len);
|
||||
QDF_STATUS wma_capture_tsf(tp_wma_handle wma_handle, uint32_t vdev_id);
|
||||
QDF_STATUS wma_reset_tsf_gpio(tp_wma_handle wma_handle, uint32_t vdev_id);
|
||||
QDF_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle, uint32_t pin);
|
||||
#else
|
||||
static inline QDF_STATUS wma_capture_tsf(tp_wma_handle wma_handle,
|
||||
uint32_t vdev_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS wma_reset_tsf_gpio(tp_wma_handle wma_handle,
|
||||
uint32_t vdev_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline int wma_vdev_tsf_handler(void *handle, uint8_t *data,
|
||||
uint32_t data_len)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle, uint32_t pin)
|
||||
{
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef WLAN_FEATURE_NAN
|
||||
|
||||
|
|
|
|||
|
|
@ -432,6 +432,7 @@
|
|||
#endif
|
||||
|
||||
#define WMA_SET_SCAN_MAC_OUI_REQ SIR_HAL_SET_SCAN_MAC_OUI_REQ
|
||||
#define WMA_TSF_GPIO_PIN SIR_HAL_TSF_GPIO_PIN_REQ
|
||||
|
||||
#ifdef DHCP_SERVER_OFFLOAD
|
||||
#define WMA_SET_DHCP_SERVER_OFFLOAD_CMD SIR_HAL_SET_DHCP_SERVER_OFFLOAD
|
||||
|
|
|
|||
|
|
@ -419,25 +419,40 @@ error:
|
|||
wmi_buf_free(buf);
|
||||
return status;
|
||||
}
|
||||
#else
|
||||
QDF_STATUS wma_capture_tsf(tp_wma_handle wma_handle, uint32_t vdev_id)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS wma_reset_tsf_gpio(tp_wma_handle wma_handle, uint32_t vdev_id)
|
||||
/**
|
||||
* wma_set_tsf_gpio_pin() - send wmi cmd to configure gpio pin
|
||||
* @handle: wma handler
|
||||
* @pin: GPIO pin id
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS wma_set_tsf_gpio_pin(WMA_HANDLE handle, uint32_t pin)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
tp_wma_handle wma = (tp_wma_handle)handle;
|
||||
struct pdev_params pdev_param = {0};
|
||||
int32_t ret;
|
||||
|
||||
int wma_vdev_tsf_handler(void *handle, uint8_t *data, uint32_t data_len)
|
||||
{
|
||||
return 0;
|
||||
if (!wma || !wma->wmi_handle) {
|
||||
WMA_LOGE("%s: WMA is closed, can not set gpio", __func__);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
WMA_LOGD("%s: set tsf gpio pin: %d", __func__, pin);
|
||||
|
||||
pdev_param.param_id = WMI_PDEV_PARAM_WNTS_CONFIG;
|
||||
pdev_param.param_value = pin;
|
||||
ret = wmi_unified_pdev_param_send(wma->wmi_handle,
|
||||
&pdev_param,
|
||||
WMA_WILDCARD_PDEV_ID);
|
||||
if (ret) {
|
||||
WMA_LOGE("%s: Failed to set tsf gpio pin (%d)", __func__, ret);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef FEATURE_WLAN_LPHB
|
||||
/**
|
||||
* wma_lphb_conf_hbenable() - enable command of LPHB configuration requests
|
||||
|
|
|
|||
|
|
@ -5123,6 +5123,10 @@ QDF_STATUS wma_mc_process_msg(void *cds_context, cds_msg_t *msg)
|
|||
wma_get_temperature(wma_handle);
|
||||
qdf_mem_free(msg->bodyptr);
|
||||
break;
|
||||
case WMA_TSF_GPIO_PIN:
|
||||
wma_set_tsf_gpio_pin(wma_handle, msg->bodyval);
|
||||
break;
|
||||
|
||||
#ifdef DHCP_SERVER_OFFLOAD
|
||||
case WMA_SET_DHCP_SERVER_OFFLOAD_CMD:
|
||||
wma_process_dhcpserver_offload(wma_handle,
|
||||
|
|
|
|||
Loading…
Reference in a new issue