qcacld-3.0: Add support for gpio based strobe to capture tsf

Add configuration for gpio pin used to send strobe to wlan hw.

The host driver will latch the current time and toggle the gpio
to generate a strobe to wlan hw.

The tsf will be latched on detecting the strobe and it will be
made available in a register for sw access.
The wlan fw will read this tsf and report it to driver using tsf event.

Change-Id: I4365d97d22836ddbbd2bf9913d4f723e5a870369
CRs-Fixed: 2495152
这个提交包含在:
Subrat Dash
2019-07-22 14:09:34 +05:30
提交者 nshrivas
父节点 bcb1a96d5a
当前提交 b1e61b2083
修改 11 个文件,包含 351 行新增55 行删除

查看文件

@@ -462,6 +462,40 @@
#define __CFG_SET_TSF_IRQ_HOST_GPIO_PIN
#endif
#ifdef WLAN_FEATURE_TSF_PLUS_EXT_GPIO_SYNC
/*
* <ini>
* gtsf_sync_host_gpio_pin
* @Min: 0
* @Max: 254
* @Default: 255
*
* TSF sync GPIO pin of host platform
*
* The driver will use this gpio on host platform
* to drive the TSF sync pin on wlan chip.
* Toggling this gpio will generate a strobe to fw
* for latching TSF.
*
* Related: None
*
* Usage: External
*
* </ini>
*/
#define CFG_SET_TSF_SYNC_HOST_GPIO_PIN CFG_INI_UINT( \
"gtsf_sync_host_gpio_pin", \
0, \
254, \
255, \
CFG_VALUE_OR_DEFAULT, \
"TSF sync GPIO pin of host platform")
#define __CFG_SET_TSF_SYNC_HOST_GPIO_PIN CFG(CFG_SET_TSF_SYNC_HOST_GPIO_PIN)
#else
#define __CFG_SET_TSF_SYNC_HOST_GPIO_PIN
#endif
#if defined(WLAN_FEATURE_TSF) && defined(WLAN_FEATURE_TSF_PLUS)
/* <ini>
* gtsf_ptp_options: TSF Plus feature options
@@ -687,6 +721,7 @@
CFG(CFG_RA_FILTER_ENABLE) \
CFG(CFG_SET_TSF_GPIO_PIN) \
__CFG_SET_TSF_IRQ_HOST_GPIO_PIN \
__CFG_SET_TSF_SYNC_HOST_GPIO_PIN \
__CFG_SET_TSF_PTP_OPT \
CFG(CFG_LPRX) \
__CFG_IS_SAE_ENABLED \

查看文件

@@ -317,6 +317,19 @@ ucfg_fwol_get_tsf_irq_host_gpio_pin(struct wlan_objmgr_psoc *psoc,
uint32_t *tsf_irq_host_gpio_pin);
#endif
#ifdef WLAN_FEATURE_TSF_PLUS_EXT_GPIO_SYNC
/**
* ucfg_fwol_get_tsf_sync_host_gpio_pin() - Assigns tsf_sync_host_gpio_pin value
* @psoc: pointer to the psoc object
*
* Return: QDF Status
*/
QDF_STATUS
ucfg_fwol_get_tsf_sync_host_gpio_pin(struct wlan_objmgr_psoc *psoc,
uint32_t *tsf_irq_host_gpio_pin);
#endif
#ifdef DHCP_SERVER_OFFLOAD
/**
* ucfg_fwol_get_enable_dhcp_server_offload()-Assign enable_dhcp_server_offload

查看文件

@@ -578,6 +578,27 @@ ucfg_fwol_get_tsf_irq_host_gpio_pin(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
#endif
#ifdef WLAN_FEATURE_TSF_PLUS_EXT_GPIO_SYNC
QDF_STATUS
ucfg_fwol_get_tsf_sync_host_gpio_pin(struct wlan_objmgr_psoc *psoc,
uint32_t *tsf_sync_host_gpio_pin)
{
struct wlan_fwol_psoc_obj *fwol_obj;
fwol_obj = fwol_get_psoc_obj(psoc);
if (!fwol_obj) {
fwol_err("Failed to get FWOL obj");
*tsf_sync_host_gpio_pin =
cfg_default(CFG_SET_TSF_SYNC_HOST_GPIO_PIN);
return QDF_STATUS_E_FAILURE;
}
*tsf_sync_host_gpio_pin = fwol_obj->cfg.tsf_sync_host_gpio_pin;
return QDF_STATUS_SUCCESS;
}
#endif
#endif
#else