From patchwork Tue Oct 10 18:02:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 115424 Delivered-To: patch@linaro.org Received: by 10.140.22.163 with SMTP id 32csp4038796qgn; Tue, 10 Oct 2017 11:04:57 -0700 (PDT) X-Received: by 10.98.223.15 with SMTP id u15mr14293881pfg.115.1507658697093; Tue, 10 Oct 2017 11:04:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1507658697; cv=none; d=google.com; s=arc-20160816; b=T9hDcQhaEHxVK/X7Ro4Bwd8e/uUkHIslqcZ80PjSshy/8vXlqzL9aozcqpfTN32iXy W2UP2tQzEE0JvDBXHqmZs1bh7yitnd9uskutWVhqw5CQOEYi6Zcf+VvAl7SV52azNQpb 5OPo7S+LD60cSKgAXqz6AqdlTBJaCjq8qy0ojh3yw7bwmlVXcsRApQQo7VeD608MLRbw bVB/AMdoKdeGIpdV6zBJFLGxu3ZZlf2kW2Wyx9zrIAmJzLfMl2YBdi87pVOwdm1Cyk6B xD3mDFARfqTPkRR2h6/Nbh7xBebTzDCDsCjs5e1dbl4AcTMQ90CiEE5GUCHkMUxwADbl cPeA== 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=/G7VRossjOz2nJ1cUs/GSwJYQAD4x98zKuSQTeH8F/c=; b=FULkmTzFmfzojioDnPGSSaV/yy/Q3SlzybN/7s8tL8R572JzotbGS16NQS9HAutgGw nJ1zoEX9bIwT4yF8fiJH5jlJzhJb76pNLWvZF0+Sln477QNmGQZtMGx5k4DOUodHlxYS xXyrhg6BoTiXcRr8Tp9rCbTNNijEvZ+u8XTPLxCDbDHM9eUzlypfc16FJSh+cEFh58iP gQmK/ZH6edPwy4PJjPTagycmhY/YYwPLGlEJ37Lu2uidqpdpiyvC6zMek8WawzrCUzMb lZ416Ght3zImpR401DtIgXMDThDEsCXhaI8NbTx/EtvS12E+f7vaqv/hATdfrhzPKXYl AxHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=RTxnLGte; spf=pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-pm-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 x1si9101286pln.594.2017.10.10.11.04.56; Tue, 10 Oct 2017 11:04:57 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-pm-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=RTxnLGte; spf=pass (google.com: best guess record for domain of linux-pm-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-pm-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 S1756521AbdJJSEx (ORCPT + 12 others); Tue, 10 Oct 2017 14:04:53 -0400 Received: from mail-wm0-f54.google.com ([74.125.82.54]:53951 "EHLO mail-wm0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756327AbdJJSEv (ORCPT ); Tue, 10 Oct 2017 14:04:51 -0400 Received: by mail-wm0-f54.google.com with SMTP id q132so7694735wmd.2 for ; Tue, 10 Oct 2017 11:04:50 -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=/G7VRossjOz2nJ1cUs/GSwJYQAD4x98zKuSQTeH8F/c=; b=RTxnLGterHkc0cMexAL+n9DHdxH0YeRR2MEVo7fp16nJRIoR6BuQfZmY0jloLLG6nq eoTfAy8Xd76vARes5LvviR2udBXx8CYlrF4AfUZ7PVvljTlk2PZ9MQngVN6ASdlOQKWF dcZ0FrFh5XXrjuj4XO7A5jHNdGEGYl2J6Qf7Q= 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=/G7VRossjOz2nJ1cUs/GSwJYQAD4x98zKuSQTeH8F/c=; b=VegmE8SktUfKllAY5tNxrkPWTRKmN0lpbtw9e2Pw176G0D38LCRioGJyQDLxSG2M0C RugQox/VvG2WrWBf3Y871OVdoXbtzdwTmcAfIRdDyuFItUDF60XGgF0VH4WxMNjBFgMt z+wsXpRmVDE0lU85QRWHA5os2h6FeESxUBE84yVaiIQ2unlBmmSwQJjnr0Cy/0sOJuBM Uqyeqnm2JPl1P96ZZbM9ZHg7IgH4isDtegER54FdQwF1FzoavnK3k0kY0ki1qmcGcep0 YNiGSrZfn5TE3WR8H/HQH3uMmq18ndPtJKFzSMIu+vYP79APGO4xtBxlpxriylFV/2+D 6Qww== X-Gm-Message-State: AMCzsaUR3gUgKePVj8ZBjJ2jBeI4xDr5ayCA7wU+7tSa3wWk9ERM8eeU i7Ve+iFsoELcMmoZABxaQ6R/yA== X-Google-Smtp-Source: AOwi7QBOp7h8vsr7SZHmkMQbJrZMzEqKEuRRZ2ElEhaBlqh3hia2XTyafyZe9ihM5M9X97qInpsnWA== X-Received: by 10.223.178.144 with SMTP id g16mr14562102wrd.76.1507658690164; Tue, 10 Oct 2017 11:04:50 -0700 (PDT) Received: from localhost.localdomain ([2a01:e35:879a:6cd0:4f9:3ae1:43d2:31ae]) by smtp.gmail.com with ESMTPSA id l73sm12513428wmd.47.2017.10.10.11.04.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 10 Oct 2017 11:04:49 -0700 (PDT) From: Daniel Lezcano To: edubezval@gmail.com, rui.zhang@intel.com Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, kevin.wangtao@linaro.org Subject: [PATCH 02/25] thermal/drivers/hisi: Remove the multiple sensors support Date: Tue, 10 Oct 2017 20:02:27 +0200 Message-Id: <1507658570-32675-2-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1507658570-32675-1-git-send-email-daniel.lezcano@linaro.org> References: <79a5f10c-0fb7-3e4f-caac-c1625904b137@linaro.org> <1507658570-32675-1-git-send-email-daniel.lezcano@linaro.org> Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@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 | 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);