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
这个提交包含在:
@@ -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
|
||||
|
在新工单中引用
屏蔽一个用户