From 80095d5ca4952747071e30ddd851185ff2d4f08b Mon Sep 17 00:00:00 2001 From: Manaf Meethalavalappu Pallikunhi Date: Thu, 9 Jul 2020 17:16:12 +0530 Subject: [PATCH] drivers: thermal: qmi_cooling: Treat all devices as max type devices There is no low threshold monitor governor and min_state ops support anymore in thermal framework. Treat all qmi cooling devices as max mitigation type by default. Change-Id: I6687d22a3e81411b6f4d691d2595122e334895f9 Signed-off-by: Manaf Meethalavalappu Pallikunhi --- drivers/thermal/qcom/qmi_cooling.c | 211 ++++++----------------------- 1 file changed, 42 insertions(+), 169 deletions(-) diff --git a/drivers/thermal/qcom/qmi_cooling.c b/drivers/thermal/qcom/qmi_cooling.c index 90bfe25769d9..adf68228b7f5 100644 --- a/drivers/thermal/qcom/qmi_cooling.c +++ b/drivers/thermal/qcom/qmi_cooling.c @@ -20,18 +20,11 @@ #define QMI_TMD_RESP_TOUT msecs_to_jiffies(100) #define QMI_CLIENT_NAME_LENGTH 40 -enum qmi_device_type { - QMI_CDEV_MAX_LIMIT_TYPE, - QMI_CDEV_MIN_LIMIT_TYPE, - QMI_CDEV_TYPE_NR, -}; - struct qmi_cooling_device { struct device_node *np; char cdev_name[THERMAL_NAME_LENGTH]; char qmi_name[QMI_CLIENT_NAME_LENGTH]; bool connection_active; - enum qmi_device_type type; struct list_head qmi_node; struct thermal_cooling_device *cdev; unsigned int mtgn_state; @@ -48,143 +41,42 @@ struct qmi_tmd_instance { struct work_struct svc_arrive_work; }; -struct qmi_dev_info { - char *dev_name; - enum qmi_device_type type; -}; - static struct qmi_tmd_instance *tmd_instances; static int tmd_inst_cnt; -static struct qmi_dev_info device_clients[] = { - { - .dev_name = "pa", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "pa_fr1", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "cx_vdd_limit", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "modem", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "modem_current", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "modem_skin", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "modem_bw", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "modem_bw_backoff", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "vbatt_low", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "charge_state", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw0", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw1", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw2", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw3", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw_skin0", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw_skin1", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw_skin2", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw_skin3", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "wlan", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "wlan_bw", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw_skin0_dsc", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw_skin1_dsc", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw_skin2_dsc", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "mmw_skin3_dsc", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "modem_skin_lte_dsc", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "modem_skin_nr_dsc", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "pa_dsc", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "pa_fr1_dsc", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "cdsp_sw", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "cdsp_hw", - .type = QMI_CDEV_MAX_LIMIT_TYPE, - }, - { - .dev_name = "cpuv_restriction_cold", - .type = QMI_CDEV_MIN_LIMIT_TYPE, - }, - { - .dev_name = "cpr_cold", - .type = QMI_CDEV_MIN_LIMIT_TYPE, - } +static char device_clients[][QMI_CLIENT_NAME_LENGTH] = { + {"pa"}, + {"pa_fr1"}, + {"cx_vdd_limit"}, + {"modem"}, + {"modem_current"}, + {"modem_skin"}, + {"modem_bw"}, + {"modem_bw_backoff"}, + {"vbatt_low"}, + {"charge_state"}, + {"mmw0"}, + {"mmw1"}, + {"mmw2"}, + {"mmw3"}, + {"mmw_skin0"}, + {"mmw_skin1"}, + {"mmw_skin2"}, + {"mmw_skin3"}, + {"wlan"}, + {"wlan_bw"}, + {"mmw_skin0_dsc"}, + {"mmw_skin1_dsc"}, + {"mmw_skin2_dsc"}, + {"mmw_skin3_dsc"}, + {"modem_skin_lte_dsc"}, + {"modem_skin_nr_dsc"}, + {"pa_dsc"}, + {"pa_fr1_dsc"}, + {"cdsp_sw"}, + {"cdsp_hw"}, + {"cpuv_restriction_cold"}, + {"cpr_cold"} }; static int qmi_get_max_state(struct thermal_cooling_device *cdev, @@ -208,10 +100,6 @@ static int qmi_get_cur_state(struct thermal_cooling_device *cdev, if (!qmi_cdev) return -EINVAL; - if (qmi_cdev->type == QMI_CDEV_MIN_LIMIT_TYPE) { - *state = 0; - return 0; - } *state = qmi_cdev->mtgn_state; return 0; @@ -274,24 +162,27 @@ qmi_send_exit: return ret; } -static int qmi_set_cur_or_min_state(struct qmi_cooling_device *qmi_cdev, +static int qmi_set_cur_state(struct thermal_cooling_device *cdev, unsigned long state) { + struct qmi_cooling_device *qmi_cdev = cdev->devdata; int ret = 0; - struct qmi_tmd_instance *tmd = qmi_cdev->tmd; - if (!tmd) + if (!qmi_cdev) + return -EINVAL; + + if (state > qmi_cdev->max_level) return -EINVAL; if (qmi_cdev->mtgn_state == state) - return ret; + return 0; /* save it and return if server exit */ if (!qmi_cdev->connection_active) { qmi_cdev->mtgn_state = state; pr_debug("Pending request:%ld for %s\n", state, qmi_cdev->cdev_name); - return ret; + return 0; } /* It is best effort to save state even if QMI fail */ @@ -302,23 +193,6 @@ static int qmi_set_cur_or_min_state(struct qmi_cooling_device *qmi_cdev, return ret; } -static int qmi_set_cur_state(struct thermal_cooling_device *cdev, - unsigned long state) -{ - struct qmi_cooling_device *qmi_cdev = cdev->devdata; - - if (!qmi_cdev) - return -EINVAL; - - if (qmi_cdev->type == QMI_CDEV_MIN_LIMIT_TYPE) - return 0; - - if (state > qmi_cdev->max_level) - state = qmi_cdev->max_level; - - return qmi_set_cur_or_min_state(qmi_cdev, state); -} - static struct thermal_cooling_device_ops qmi_device_ops = { .get_max_state = qmi_get_max_state, .get_cur_state = qmi_get_cur_state, @@ -569,7 +443,7 @@ static int of_get_qmi_tmd_platform_data(struct device *dev) } /* Check for supported qmi dev*/ for (i = 0; i < ARRAY_SIZE(device_clients); i++) { - if (strcmp(device_clients[i].dev_name, + if (strcmp(device_clients[i], qmi_cdev->qmi_name) == 0) break; } @@ -580,7 +454,6 @@ static int of_get_qmi_tmd_platform_data(struct device *dev) of_node_put(cdev_np); break; } - qmi_cdev->type = device_clients[i].type; qmi_cdev->tmd = &tmd[idx]; qmi_cdev->np = cdev_np; qmi_cdev->mtgn_state = 0;