From 1dc31cf88d069c7c23e91a04d15e59b1a48d8bcc Mon Sep 17 00:00:00 2001 From: Dundi Raviteja Date: Fri, 7 Sep 2018 10:40:28 +0530 Subject: [PATCH] qcacld-3.0: Relocate thermal info cfg items Relocate thermal info config items to FW offload component. Change-Id: If03507a44041b53aa81837f687914931e8a05ec8 CRs-Fixed: 2316595 --- fw_offload/core/inc/wlan_fw_offload_main.h | 24 +++++ fw_offload/core/src/wlan_fw_offload_main.c | 23 ++++ fw_offload/dispatcher/inc/cfg_fwol.h | 4 +- fw_offload/dispatcher/inc/cfg_thermal_temp.h | 101 ++++++++++++++++++ .../dispatcher/inc/wlan_fwol_ucfg_api.h | 12 +++ .../dispatcher/src/wlan_fwol_ucfg_api.c | 17 +++ 6 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 fw_offload/dispatcher/inc/cfg_thermal_temp.h diff --git a/fw_offload/core/inc/wlan_fw_offload_main.h b/fw_offload/core/inc/wlan_fw_offload_main.h index 0a29742d54..40e87a2020 100644 --- a/fw_offload/core/inc/wlan_fw_offload_main.h +++ b/fw_offload/core/inc/wlan_fw_offload_main.h @@ -61,12 +61,36 @@ struct wlan_fwol_coex_config { int16_t bt_interference_high_ul; }; +/* + * struct wlan_fwol_thermal_temp - Thermal temperature config items + * thermal_temp_min_level0: Thermal temperature minimum level 0 + * thermal_temp_max_level0: Thermal temperature maximum level 0 + * thermal_temp_min_level1: Thermal temperature minimum level 1 + * thermal_temp_max_level1: Thermal temperature maximum level 1 + * thermal_temp_min_level2: Thermal temperature minimum level 2 + * thermal_temp_max_level2: Thermal temperature maximum level 2 + * thermal_temp_min_level3: Thermal temperature minimum level 3 + * thermal_temp_max_level3: Thermal temperature maximum level 3 + */ +struct wlan_fwol_thermal_temp { + uint16_t thermal_temp_min_level0; + uint16_t thermal_temp_max_level0; + uint16_t thermal_temp_min_level1; + uint16_t thermal_temp_max_level1; + uint16_t thermal_temp_min_level2; + uint16_t thermal_temp_max_level2; + uint16_t thermal_temp_min_level3; + uint16_t thermal_temp_max_level3; +}; + /** * struct wlan_fwol_cfg - fwol config items * coex_config: coex config items + * thermal_temp_cfg: Thermal temperature related config items */ struct wlan_fwol_cfg { struct wlan_fwol_coex_config coex_config; + struct wlan_fwol_thermal_temp thermal_temp_cfg; }; /** diff --git a/fw_offload/core/src/wlan_fw_offload_main.c b/fw_offload/core/src/wlan_fw_offload_main.c index 475890b269..2564be83ad 100644 --- a/fw_offload/core/src/wlan_fw_offload_main.c +++ b/fw_offload/core/src/wlan_fw_offload_main.c @@ -54,6 +54,28 @@ fwol_update_coex_config_in_cfg(struct wlan_objmgr_psoc *psoc, cfg_get(psoc, CFG_BT_INTERFERENCE_HIGH_UL); } +static void +fwol_update_thermal_temp_in_cfg(struct wlan_objmgr_psoc *psoc, + struct wlan_fwol_thermal_temp *thermal_temp) +{ + thermal_temp->thermal_temp_min_level0 = + cfg_get(psoc, CFG_THERMAL_TEMP_MIN_LEVEL0); + thermal_temp->thermal_temp_max_level0 = + cfg_get(psoc, CFG_THERMAL_TEMP_MAX_LEVEL0); + thermal_temp->thermal_temp_min_level1 = + cfg_get(psoc, CFG_THERMAL_TEMP_MIN_LEVEL1); + thermal_temp->thermal_temp_max_level1 = + cfg_get(psoc, CFG_THERMAL_TEMP_MAX_LEVEL1); + thermal_temp->thermal_temp_min_level2 = + cfg_get(psoc, CFG_THERMAL_TEMP_MIN_LEVEL2); + thermal_temp->thermal_temp_max_level2 = + cfg_get(psoc, CFG_THERMAL_TEMP_MAX_LEVEL2); + thermal_temp->thermal_temp_min_level3 = + cfg_get(psoc, CFG_THERMAL_TEMP_MIN_LEVEL3); + thermal_temp->thermal_temp_max_level3 = + cfg_get(psoc, CFG_THERMAL_TEMP_MAX_LEVEL3); +} + QDF_STATUS fwol_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) { QDF_STATUS status = QDF_STATUS_SUCCESS; @@ -69,6 +91,7 @@ QDF_STATUS fwol_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc) fwol_cfg = &fwol_obj->cfg; fwol_update_coex_config_in_cfg(psoc, &fwol_cfg->coex_config); + fwol_update_thermal_temp_in_cfg(psoc, &fwol_cfg->thermal_temp_cfg); return status; } diff --git a/fw_offload/dispatcher/inc/cfg_fwol.h b/fw_offload/dispatcher/inc/cfg_fwol.h index 29f9321f3b..ef00a7d93f 100644 --- a/fw_offload/dispatcher/inc/cfg_fwol.h +++ b/fw_offload/dispatcher/inc/cfg_fwol.h @@ -24,9 +24,11 @@ #include "qdf_types.h" #include "cfg_coex.h" +#include "cfg_thermal_temp.h" #define CFG_FWOL_ALL \ - CFG_COEX_ALL + CFG_COEX_ALL \ + CFG_THERMAL_TEMP_ALL #endif /* __CFG_FWOL_H */ diff --git a/fw_offload/dispatcher/inc/cfg_thermal_temp.h b/fw_offload/dispatcher/inc/cfg_thermal_temp.h new file mode 100644 index 0000000000..328546e4d9 --- /dev/null +++ b/fw_offload/dispatcher/inc/cfg_thermal_temp.h @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/** + * DOC: This file contains centralized definitions of converged configuration. + */ + +#ifndef __CFG_THERMAL_TEMP_H +#define __CFG_THERMAL_TEMP_H + +#define CFG_THERMAL_TEMP_MIN_LEVEL0 CFG_INI_UINT( \ + "gThermalTempMinLevel0", \ + 0, \ + 1000, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "Thermal Temp Min Level0") + +#define CFG_THERMAL_TEMP_MAX_LEVEL0 CFG_INI_UINT( \ + "gThermalTempMaxLevel0", \ + 0, \ + 1000, \ + 90, \ + CFG_VALUE_OR_DEFAULT, \ + "Thermal Temp Max Level0") + +#define CFG_THERMAL_TEMP_MIN_LEVEL1 CFG_INI_UINT( \ + "gThermalTempMinLevel1", \ + 0, \ + 1000, \ + 70, \ + CFG_VALUE_OR_DEFAULT, \ + "Thermal Temp Min Level1") + +#define CFG_THERMAL_TEMP_MAX_LEVEL1 CFG_INI_UINT( \ + "gThermalTempMaxLevel1", \ + 0, \ + 1000, \ + 110, \ + CFG_VALUE_OR_DEFAULT, \ + "Thermal Temp Max Level1") + +#define CFG_THERMAL_TEMP_MIN_LEVEL2 CFG_INI_UINT( \ + "gThermalTempMinLevel2", \ + 0, \ + 1000, \ + 90, \ + CFG_VALUE_OR_DEFAULT, \ + "Thermal Temp Min Level2") + +#define CFG_THERMAL_TEMP_MAX_LEVEL2 CFG_INI_UINT( \ + "gThermalTempMaxLevel2", \ + 0, \ + 1000, \ + 125, \ + CFG_VALUE_OR_DEFAULT, \ + "Thermal Temp Max Level2") + +#define CFG_THERMAL_TEMP_MIN_LEVEL3 CFG_INI_UINT( \ + "gThermalTempMinLevel3", \ + 0, \ + 1000, \ + 110, \ + CFG_VALUE_OR_DEFAULT, \ + "Thermal Temp Min Level3") + +#define CFG_THERMAL_TEMP_MAX_LEVEL3 CFG_INI_UINT( \ + "gThermalTempMaxLevel3", \ + 0, \ + 1000, \ + 0, \ + CFG_VALUE_OR_DEFAULT, \ + "Thermal Temp Max Level3") + +#define CFG_THERMAL_TEMP_ALL \ + CFG(CFG_THERMAL_TEMP_MIN_LEVEL0) \ + CFG(CFG_THERMAL_TEMP_MAX_LEVEL0) \ + CFG(CFG_THERMAL_TEMP_MIN_LEVEL1) \ + CFG(CFG_THERMAL_TEMP_MAX_LEVEL1) \ + CFG(CFG_THERMAL_TEMP_MIN_LEVEL2) \ + CFG(CFG_THERMAL_TEMP_MAX_LEVEL2) \ + CFG(CFG_THERMAL_TEMP_MIN_LEVEL3) \ + CFG(CFG_THERMAL_TEMP_MAX_LEVEL3) \ + +#endif + diff --git a/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h b/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h index 41e3fb28ef..852ef0a80c 100644 --- a/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h +++ b/fw_offload/dispatcher/inc/wlan_fwol_ucfg_api.h @@ -25,6 +25,7 @@ #include #include #include +#include "wlan_fw_offload_main.h" #include "wlan_fw_offload_main.h" @@ -77,4 +78,15 @@ QDF_STATUS ucfg_fwol_get_coex_config_params(struct wlan_objmgr_psoc *psoc, struct wlan_fwol_coex_config *coex_config); +/** + * ucfg_fwol_get_thermal_temp() - Get thermal temperature config params + * @psoc: Pointer to psoc object + * @thermal_temp: Pointer to struct wlan_fwol_thermal_temp + * + * Return: QDF Status + */ +QDF_STATUS +ucfg_fwol_get_thermal_temp(struct wlan_objmgr_psoc *psoc, + struct wlan_fwol_thermal_temp *thermal_temp); + #endif /* _WLAN_FWOL_UCFG_API_H_ */ diff --git a/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c b/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c index aa86662843..82d703b8bd 100644 --- a/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c +++ b/fw_offload/dispatcher/src/wlan_fwol_ucfg_api.c @@ -165,3 +165,20 @@ ucfg_fwol_get_coex_config_params(struct wlan_objmgr_psoc *psoc, return QDF_STATUS_SUCCESS; } + +QDF_STATUS +ucfg_fwol_get_thermal_temp(struct wlan_objmgr_psoc *psoc, + struct wlan_fwol_thermal_temp *thermal_info) +{ + struct wlan_fwol_psoc_obj *fwol_obj; + + fwol_obj = fwol_get_psoc_obj(psoc); + if (!fwol_obj) { + fwol_err("Failed to get fwol obj"); + return QDF_STATUS_E_FAILURE; + } + + *thermal_info = fwol_obj->cfg.thermal_temp_cfg; + + return QDF_STATUS_SUCCESS; +}