From patchwork Thu Oct 19 17:05:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 116416 Delivered-To: patch@linaro.org Received: by 10.140.22.164 with SMTP id 33csp721666qgn; Thu, 19 Oct 2017 10:08:41 -0700 (PDT) X-Received: by 10.99.67.71 with SMTP id q68mr1914344pga.163.1508432921632; Thu, 19 Oct 2017 10:08:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1508432921; cv=none; d=google.com; s=arc-20160816; b=LPvI1UkFZzoGNWnGu8DXYIV0WB4vxL5zwEeKNI7/443mRKSorxtxpjc13oFfxx8beF hyD1+F9+ev8SNOFpyokUgr7sUF1PDwJUMI7hkdV4Q9JpCYOKDq7dI9HPC0gr52IOUHkV W4nSNEmsjFQ813FwO6/fCsT+sB1ArHG/48lffIp2rVFXVzYXuabvb0StUXabw+HUVxEW Xy3G/p618nyt/oS/jyFelebxsanqgW7xmH1AIe8WnXISLKYV1PxlHEgboBrq2fPbRQ5i AV0ZX6OIzOjj3iHL8uhln8qqGIAtXHSsbXyNIhRGVBdGlsE3+0njkfhWFsAMK8bPap9h JcHQ== 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=3+tH7NwZkH40QyBS8/8cN9a6ZBOua5bckmsjgKvaaaY=; b=YBpT7e9UJBkCkrTmi/rEX+fGHFSU34te/Q7rZ0PjKWaue0HcgkX0/HuzgQv7LYtMhK ZlBDon6rrHIT/PBoYcQWVT0JSqNi46BPAJqgflKBECE5Foz7xf0xGkD0zazk/JnyflTz B0K+RWso9tG+2tW24DTFYC8CVzLHzZLFE66CqHZqJl2OBajPhxOkbBU3CPyaipTxvMac Cd3h2Xq34C8WIUfFuDNXc5Vcq4LQjJ0qQTx4XgKKyI6Dqz0C1GTqxqIyXurKiUeAvHjU 0uyltjG/jJCkw8wig0lSkfs17nQcmMVkFWZh0Q9utBAcGAHZ9Z77TMJGuWAIo4JvoTGA EGwA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=XNynWd5f; 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 a24si8812310pfg.299.2017.10.19.10.08.41; Thu, 19 Oct 2017 10:08:41 -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=XNynWd5f; 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 S1755057AbdJSRIj (ORCPT + 27 others); Thu, 19 Oct 2017 13:08:39 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:54522 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753422AbdJSRIc (ORCPT ); Thu, 19 Oct 2017 13:08:32 -0400 Received: by mail-wm0-f68.google.com with SMTP id i124so17714408wmf.3 for ; Thu, 19 Oct 2017 10:08:32 -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=3+tH7NwZkH40QyBS8/8cN9a6ZBOua5bckmsjgKvaaaY=; b=XNynWd5flG1lW5/Yvjd2Gwv875wI3xLNSjhsQhGzTJB+vFwaSxTj1uhKvgTdwThifq OF5MaXnhTILxDCZoa8H/7MCTxpCpfgFTaY7oVFBPJQzeIf0ZrUZJqkF7K5/XD5dtUENw ziTC7eXach4Rn4qjWL+dqd3mj+XslXUZgVrYA= 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=3+tH7NwZkH40QyBS8/8cN9a6ZBOua5bckmsjgKvaaaY=; b=WQFeZpD5b1ABzRRSwHXRGMzc/+77v2CV4uJfSyTfpTH8tL6VW2tzUHAbpOjM4rWj6m e8nZultjtsbBYntdTG8Dyv5AvoCj0iUhVcvdGx4ObNrTxngQau2DigmERU65ppb0Nk0u whheSs4kUpYLjml15l7WYgy+FTvlMqfeYJPz+Ht5Y8bBXMujyTUSd6TH2x5lYaUF3xa7 b2Vy+RvJlolxWqyZ0EBm+N2HF+n8/2IQ8uJwlkv2DMSR2HWEpxPNaRrFQciNycl6Pg6Q Gmhs+VoN7hONGmeOlu1tWd1kOMeXhEMIuCZOs2sXgtE0hm5WqX0vv1+pDyq2U2jBMlG7 swkw== X-Gm-Message-State: AMCzsaUk4RigPC88O5AJLJ7SomEJrqrQ+n1QPdYYix9AoMiJCYU5tfcd tGKGVjYOL4QszcvCLAG5vsH1LA== X-Google-Smtp-Source: ABhQp+ScwMlU+D+0GugQuPYsWthI8u4lyJU1XOe2Ax38ulwxX/rV/dpZFatu4yijnGUuWohsIKQwqg== X-Received: by 10.28.15.198 with SMTP id 189mr2245415wmp.140.1508432911384; Thu, 19 Oct 2017 10:08:31 -0700 (PDT) Received: from localhost.localdomain ([2a01:e35:879a:6cd0:51c7:d9b7:e14b:6840]) by smtp.gmail.com with ESMTPSA id g16sm14277394wrd.72.2017.10.19.10.08.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Oct 2017 10:08:30 -0700 (PDT) From: Daniel Lezcano To: edubezval@gmail.com, rui.zhang@intel.com Cc: linux-pm@vger.kernel.org, leo.yan@linaro.org, linux-kernel@vger.kernel.org, "Wangtao (Kevin, Kirin)" Subject: [PATCH 02/18] thermal/drivers/hisi: Remove the multiple sensors support Date: Thu, 19 Oct 2017 19:05:44 +0200 Message-Id: <1508432760-17847-2-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1508432760-17847-1-git-send-email-daniel.lezcano@linaro.org> References: <6ac48f08-7fe6-92e9-0801-6ed3bcd05ff1@linaro.org> <1508432760-17847-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 Reviewed-by: Leo Yan Acked-by: Wangtao (Kevin, Kirin) --- drivers/thermal/hisi_thermal.c | 75 +++++++++++------------------------------- 1 file changed, 19 insertions(+), 56 deletions(-) -- 2.7.4 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index f3b50b0..687efd4 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,9 +54,8 @@ 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);