qcacmn: Set thermal action to FW in thermal mgmt command
Set "action" field when send WMI_THERMAL_MGMT_CMDID to firmware. Then driver can configure the target management action based on different customer requirement. Change-Id: I3da5eea0d756444ede816be5cb74407863d63781 CRs-Fixed: 2767144
This commit is contained in:
@@ -1461,15 +1461,39 @@ struct wmi_peer_rate_report_params {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct t_thermal_cmd_params - thermal command parameters
|
* enum thermal_mgmt_action_code - thermal mgmt action code
|
||||||
|
* @THERMAL_MGMT_ACTION_DEFAULT: target chooses what action to take, based
|
||||||
|
* on its default thermal management policy.
|
||||||
|
* @THERMAL_MGMT_ACTION_HALT_TRAFFIC: If the temperature rises above
|
||||||
|
* configured upper thresh degreeC, the target will halt tx.
|
||||||
|
* @THERMAL_MGMT_ACTION_NOTIFY_HOST: the target will notify the host
|
||||||
|
* if the temperature either rises above configured upper thresh degreeC or
|
||||||
|
* falls below lower thresh degreeC.
|
||||||
|
* @THERMAL_MGMT_ACTION_CHAINSCALING: The target will switch tx chain
|
||||||
|
* mask from multi chains to single chain if the temperature rises
|
||||||
|
* above upper thresh degreeC.
|
||||||
|
* The target will switch tx chainmask back to multi chains if the
|
||||||
|
* temperature drops below upper_thresh_degreeC.
|
||||||
|
*/
|
||||||
|
enum thermal_mgmt_action_code {
|
||||||
|
THERMAL_MGMT_ACTION_DEFAULT,
|
||||||
|
THERMAL_MGMT_ACTION_HALT_TRAFFIC,
|
||||||
|
THERMAL_MGMT_ACTION_NOTIFY_HOST,
|
||||||
|
THERMAL_MGMT_ACTION_CHAINSCALING,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct thermal_cmd_params - thermal command parameters
|
||||||
* @min_temp: minimum temprature
|
* @min_temp: minimum temprature
|
||||||
* @max_temp: maximum temprature
|
* @max_temp: maximum temprature
|
||||||
* @thermal_enable: thermal enable
|
* @thermal_enable: thermal enable
|
||||||
|
* @thermal_action: thermal action code
|
||||||
*/
|
*/
|
||||||
struct thermal_cmd_params {
|
struct thermal_cmd_params {
|
||||||
uint16_t min_temp;
|
uint16_t min_temp;
|
||||||
uint16_t max_temp;
|
uint16_t max_temp;
|
||||||
uint8_t thermal_enable;
|
uint8_t thermal_enable;
|
||||||
|
enum thermal_mgmt_action_code thermal_action;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define WMI_LRO_IPV4_SEED_ARR_SZ 5
|
#define WMI_LRO_IPV4_SEED_ARR_SZ 5
|
||||||
|
@@ -4003,6 +4003,30 @@ static QDF_STATUS send_set_thermal_mgmt_cmd_tlv(wmi_unified_t wmi_handle,
|
|||||||
wmi_buf_t buf = NULL;
|
wmi_buf_t buf = NULL;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
uint32_t len = 0;
|
uint32_t len = 0;
|
||||||
|
uint8_t action;
|
||||||
|
|
||||||
|
switch (thermal_info->thermal_action) {
|
||||||
|
case THERMAL_MGMT_ACTION_DEFAULT:
|
||||||
|
action = WMI_THERMAL_MGMT_ACTION_DEFAULT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case THERMAL_MGMT_ACTION_HALT_TRAFFIC:
|
||||||
|
action = WMI_THERMAL_MGMT_ACTION_HALT_TRAFFIC;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case THERMAL_MGMT_ACTION_NOTIFY_HOST:
|
||||||
|
action = WMI_THERMAL_MGMT_ACTION_NOTIFY_HOST;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case THERMAL_MGMT_ACTION_CHAINSCALING:
|
||||||
|
action = WMI_THERMAL_MGMT_ACTION_CHAINSCALING;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
WMI_LOGE("invalid thermal_action code %d",
|
||||||
|
thermal_info->thermal_action);
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
len = sizeof(*cmd);
|
len = sizeof(*cmd);
|
||||||
|
|
||||||
@@ -4020,9 +4044,11 @@ static QDF_STATUS send_set_thermal_mgmt_cmd_tlv(wmi_unified_t wmi_handle,
|
|||||||
cmd->lower_thresh_degreeC = thermal_info->min_temp;
|
cmd->lower_thresh_degreeC = thermal_info->min_temp;
|
||||||
cmd->upper_thresh_degreeC = thermal_info->max_temp;
|
cmd->upper_thresh_degreeC = thermal_info->max_temp;
|
||||||
cmd->enable = thermal_info->thermal_enable;
|
cmd->enable = thermal_info->thermal_enable;
|
||||||
|
cmd->action = action;
|
||||||
|
|
||||||
WMI_LOGE("TM Sending thermal mgmt cmd: low temp %d, upper temp %d, enabled %d",
|
WMI_LOGD("TM Sending thermal mgmt cmd: low temp %d, upper temp %d, enabled %d action %d",
|
||||||
cmd->lower_thresh_degreeC, cmd->upper_thresh_degreeC, cmd->enable);
|
cmd->lower_thresh_degreeC, cmd->upper_thresh_degreeC,
|
||||||
|
cmd->enable, cmd->action);
|
||||||
|
|
||||||
wmi_mtrace(WMI_THERMAL_MGMT_CMDID, NO_SESSION, 0);
|
wmi_mtrace(WMI_THERMAL_MGMT_CMDID, NO_SESSION, 0);
|
||||||
status = wmi_unified_cmd_send(wmi_handle, buf, len,
|
status = wmi_unified_cmd_send(wmi_handle, buf, len,
|
||||||
|
Reference in New Issue
Block a user