From patchwork Wed Aug 30 08:47:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 111281 Delivered-To: patch@linaro.org Received: by 10.140.95.112 with SMTP id h103csp595037qge; Wed, 30 Aug 2017 01:48:54 -0700 (PDT) X-Received: by 10.84.241.130 with SMTP id b2mr1039692pll.252.1504082934453; Wed, 30 Aug 2017 01:48:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504082934; cv=none; d=google.com; s=arc-20160816; b=ywB+u+Rzf7NW54HOqo6VWZRyaWkdcDfL1bvJCJzJlzxkduXj5mLd2N8wuM54lvIzAM on0GHa6v9OinHO0dQTAbiGVxCiOdCo+vF/F5pSDyDdbArEb28UaFdvICgpQW002iaxJT Efece0F+PHvwky9mJoMi8YJy67oxMKIido6IHgqXF8ROH8cIMyabKz3N8fs8duIWx8kX jR4+q9H3Sbh+GX1xJgXqpJhuot/f0y6TqvpAzWJnyI7KAhQ25S6bgZaeaOlSNNubDboH /Ja0/feCpGeMH+ItbcytEg49/cpctgsG4LgGILt2c+7y5tjhH6deLA8Ol7nocSeWGZM1 kAGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=tsKGe/FsS6FBrZr9kIBcZDFgU37QobKuMSUyAnln3hg=; b=OvZUofj0JTfkvCkFRWTFIXnwZ4kF/E1pyiafLOCbQFx3yg454IpdIPbp7rBTYs4evv 8OvTrSXHNXiVwQkvRV0WBv6HWMYP+vGrWwdVRpxKBUUzuOO4ydQWIvy9zl7OU+M+5IbS 3vuJtWu+fKO6ZtDAEhGwH1OBo10kecMt8XAyo7UIvVmQ8DfZ0Fn0cwVIldiVoPoSOKMm Be3yGS8nnGMrOfkr96Q/MnZq0lO+JDdE76yTt1unrFWvHieoBOGpsEIfOxAOnFsMOOBE qiWlgrDx4vIphAP5DORpVaUnyRKHX9q1mzNnlP2Kh/C8cXFzvRiflu8wOrgfKg/gMB8+ OwEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=TIPzjWAT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t8si3968210pfk.157.2017.08.30.01.48.54; Wed, 30 Aug 2017 01:48:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=TIPzjWAT; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751478AbdH3Ist (ORCPT + 26 others); Wed, 30 Aug 2017 04:48:49 -0400 Received: from mail-wm0-f49.google.com ([74.125.82.49]:34980 "EHLO mail-wm0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751408AbdH3Isr (ORCPT ); Wed, 30 Aug 2017 04:48:47 -0400 Received: by mail-wm0-f49.google.com with SMTP id a80so5550986wma.0 for ; Wed, 30 Aug 2017 01:48:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=tsKGe/FsS6FBrZr9kIBcZDFgU37QobKuMSUyAnln3hg=; b=TIPzjWAT0k0WtZvZjU2nzjWKtnUm/nzfsTSLVd43rTw+swFOkOCOiInZ/apDAVBHRn sPcZvIlfH3WDmY8SITjZFUPhpLyrqSqLD4IUTjP+kS+LVMiUhNv/DISO0DKThdFYEAgx 8wpOmfm1mM2Go44mTn6Pn4GWyevQPuFjghhBw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=tsKGe/FsS6FBrZr9kIBcZDFgU37QobKuMSUyAnln3hg=; b=skphRCKrpPG+xVRXr/5sZ46XG9EGy1DdCGvjGTa9slQa0MpEg3hiJmOrGAY8GBHZB/ x1s2rXAOUPEo6Gf3R7Pbv2BQI5a1D94hGIGG5jLVsN+VbtYSrN/dkmtX/I7Z2FPePZoh T8LgyKXhxOd4dXnnesWFpTDoYPWs722LjPUvNZNn0L5mBMjxmWWfHUcmOe8djLRJCXdL JgOqhubGG4/mPaenhfgZ9wETCPebgMBysHR6c7hhJM64idc8bf/QBMjOaDmg4sJAbwZy TH6EudBGkDbcKiXeb85YFbTqh0jT3iPRNQOhRcLl5kOO043PTdNiILrKoaD+O0qmU/aa 0biQ== X-Gm-Message-State: AHYfb5hWgPBD7jJdWMrBGrJKJ8bKY7HYgof+JrTqIl1XUviLm5AfDkei WMbl120IFv/QduUJu9q3Zg== X-Received: by 10.28.218.148 with SMTP id r142mr751883wmg.20.1504082925806; Wed, 30 Aug 2017 01:48:45 -0700 (PDT) Received: from localhost.localdomain ([2a01:e35:879a:6cd0:b0b0:ba2b:b9fd:8a33]) by smtp.gmail.com with ESMTPSA id q24sm4032811wrc.26.2017.08.30.01.48.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 30 Aug 2017 01:48:44 -0700 (PDT) From: Daniel Lezcano To: rui.zhang@intel.com, edubezval@gmail.com Cc: daniel.lezcano@linaro.org, linux-pm@vger.kernel.org, kevin.wangtao@linaro.org, leo.yan@linaro.org, linux-kernel@vger.kernel.org (open list) Subject: [PATCH 02/13] thermal/drivers/hisi: Remove the multiple sensors support Date: Wed, 30 Aug 2017 10:47:26 +0200 Message-Id: <1504082857-21702-2-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1504082857-21702-1-git-send-email-daniel.lezcano@linaro.org> References: <1504082857-21702-1-git-send-email-daniel.lezcano@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org By essence, the tsensor does not really support multiple sensor at the same time. It allows to set a sensor and use it to get the temperature, another sensor could be switched but with a delay of 3-5ms. It is difficult to read simultaneously several sensors without a big delay. Today, just one sensor is used, it is not necessary to deal with multiple sensors in the code. Remove them and if it is needed in the future add them on top of a code which will be clean up in the meantime. Signed-off-by: Daniel Lezcano --- drivers/thermal/hisi_thermal.c | 77 +++++++++++------------------------------- 1 file changed, 20 insertions(+), 57 deletions(-) -- 2.7.4 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index 8381696..92b6889 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -39,6 +39,7 @@ #define HISI_TEMP_RESET (100000) #define HISI_MAX_SENSORS 4 +#define HISI_DEFAULT_SENSOR 2 struct hisi_thermal_sensor { struct hisi_thermal_data *thermal; @@ -53,11 +54,10 @@ struct hisi_thermal_data { struct mutex thermal_lock; /* protects register data */ struct platform_device *pdev; struct clk *clk; - struct hisi_thermal_sensor sensors[HISI_MAX_SENSORS]; - - int irq, irq_bind_sensor; + struct hisi_thermal_sensor sensors; + int irq; bool irq_enabled; - + void __iomem *regs; }; @@ -113,7 +113,7 @@ static void hisi_thermal_enable_bind_irq_sensor mutex_lock(&data->thermal_lock); - sensor = &data->sensors[data->irq_bind_sensor]; + sensor = &data->sensors; /* setting the hdak time */ writel(0x0, data->regs + TEMP0_CFG); @@ -160,31 +160,8 @@ static int hisi_thermal_get_temp(void *_sensor, int *temp) struct hisi_thermal_sensor *sensor = _sensor; struct hisi_thermal_data *data = sensor->thermal; - int sensor_id = -1, i; - long max_temp = 0; - *temp = hisi_thermal_get_sensor_temp(data, sensor); - sensor->sensor_temp = *temp; - - for (i = 0; i < HISI_MAX_SENSORS; i++) { - if (!data->sensors[i].tzd) - continue; - - if (data->sensors[i].sensor_temp >= max_temp) { - max_temp = data->sensors[i].sensor_temp; - sensor_id = i; - } - } - - /* If no sensor has been enabled, then skip to enable irq */ - if (sensor_id == -1) - return 0; - - mutex_lock(&data->thermal_lock); - data->irq_bind_sensor = sensor_id; - mutex_unlock(&data->thermal_lock); - dev_dbg(&data->pdev->dev, "id=%d, irq=%d, temp=%d, thres=%d\n", sensor->id, data->irq_enabled, *temp, sensor->thres_temp); /* @@ -197,7 +174,7 @@ static int hisi_thermal_get_temp(void *_sensor, int *temp) return 0; } - if (max_temp < sensor->thres_temp) { + if (*temp < sensor->thres_temp) { data->irq_enabled = true; hisi_thermal_enable_bind_irq_sensor(data); enable_irq(data->irq); @@ -224,22 +201,16 @@ static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev) { struct hisi_thermal_data *data = dev; struct hisi_thermal_sensor *sensor; - int i; mutex_lock(&data->thermal_lock); - sensor = &data->sensors[data->irq_bind_sensor]; + sensor = &data->sensors; dev_crit(&data->pdev->dev, "THERMAL ALARM: T > %d\n", sensor->thres_temp / 1000); mutex_unlock(&data->thermal_lock); - for (i = 0; i < HISI_MAX_SENSORS; i++) { - if (!data->sensors[i].tzd) - continue; - - thermal_zone_device_update(data->sensors[i].tzd, - THERMAL_EVENT_UNSPECIFIED); - } + thermal_zone_device_update(data->sensors.tzd, + THERMAL_EVENT_UNSPECIFIED); return IRQ_HANDLED; } @@ -296,7 +267,6 @@ static int hisi_thermal_probe(struct platform_device *pdev) { struct hisi_thermal_data *data; struct resource *res; - int i; int ret; data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); @@ -347,16 +317,17 @@ static int hisi_thermal_probe(struct platform_device *pdev) hisi_thermal_enable_bind_irq_sensor(data); data->irq_enabled = true; - for (i = 0; i < HISI_MAX_SENSORS; ++i) { - ret = hisi_thermal_register_sensor(pdev, data, - &data->sensors[i], i); - if (ret) - dev_err(&pdev->dev, - "failed to register thermal sensor: %d\n", ret); - else - hisi_thermal_toggle_sensor(&data->sensors[i], true); + ret = hisi_thermal_register_sensor(pdev, data, + &data->sensors, + HISI_DEFAULT_SENSOR); + if (ret) { + dev_err(&pdev->dev, "failed to register thermal sensor: %d\n", + ret); + return ret; } + hisi_thermal_toggle_sensor(&data->sensors, true); + enable_irq(data->irq); return 0; @@ -365,17 +336,9 @@ static int hisi_thermal_probe(struct platform_device *pdev) static int hisi_thermal_remove(struct platform_device *pdev) { struct hisi_thermal_data *data = platform_get_drvdata(pdev); - int i; - - for (i = 0; i < HISI_MAX_SENSORS; i++) { - struct hisi_thermal_sensor *sensor = &data->sensors[i]; - - if (!sensor->tzd) - continue; - - hisi_thermal_toggle_sensor(sensor, false); - } + struct hisi_thermal_sensor *sensor = &data->sensors; + hisi_thermal_toggle_sensor(sensor, false); hisi_thermal_disable_sensor(data); clk_disable_unprepare(data->clk);