From patchwork Mon Sep 4 19:56:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 111608 Delivered-To: patch@linaro.org Received: by 10.140.94.166 with SMTP id g35csp1935440qge; Mon, 4 Sep 2017 12:58:06 -0700 (PDT) X-Received: by 10.99.114.20 with SMTP id n20mr1587787pgc.47.1504555086273; Mon, 04 Sep 2017 12:58:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504555086; cv=none; d=google.com; s=arc-20160816; b=V7DecTl9+dFTwHSgjoKncLcACZG3atoF+4R6f/vxdGJfZDKcusddSHoxE911a/ub06 AYpYSmh+PzjGZU/PmqzpJcvDHPm+WhkKzhp5NVHfPRP4+ostLlpjKjh+gWxUuniY8Kx1 htVPwOWFJ0umCpzDkuNqIBr9TSjDp9B7J4ThV6i9NxMaMP1lvIDpe4YSK+qxXoAsM1Hm wcGhcDOWsqxut+kA5UQqHijOb3k6TFuZ+k1WUl6Mww/nRKCQPaHh2SL0Ifap9TudiKIG kaK2IuxFxoL7zuDFWja9t8Bx8KMsHkajfd8yoEXUZ42hQtRRrBxfE1GndivxOb9UAMwG i8SA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=MjWn4ppt6RnrTuq0UIU03S3llzLj1097j+OibX2snU4=; b=fRLCMBZWDxb1V2YMpdD1d3mSjYLPIVnlDvTnfoF0fyH9gVxYhJaHTA15iNtwl+Ga+E MMYxs5IpNmJR8GpGI645uwoeOpHj5jLdWG17rCXuyhba4wjTaO3r8gCCLvD94fljzbZB QRg6kjnQ1EmNeoMtQL2aUdOI4+K82XNxJQelvlKdVQ1ren8MAflWkc5QmFTfSNzBFbzG riu4FNJZsm/uem9vF/QyncWtR7CSm0xHP3R6RAMYugXU87fZT7KP+WrZeeoc4qge0etn TWbnRlit6iFjivdU7ChYatpftrny+jdU31U08Czy18VtqEF9X22Kc7BtmYGsz9NZu4ii ihpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=J/HgrZVL; 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 r8si5348496pfb.512.2017.09.04.12.58.06; Mon, 04 Sep 2017 12:58:06 -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=J/HgrZVL; 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 S1754111AbdIDT6D (ORCPT + 26 others); Mon, 4 Sep 2017 15:58:03 -0400 Received: from mail-wr0-f174.google.com ([209.85.128.174]:38647 "EHLO mail-wr0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754034AbdIDT5r (ORCPT ); Mon, 4 Sep 2017 15:57:47 -0400 Received: by mail-wr0-f174.google.com with SMTP id 108so3967038wra.5 for ; Mon, 04 Sep 2017 12:57: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 :mime-version:content-transfer-encoding; bh=MjWn4ppt6RnrTuq0UIU03S3llzLj1097j+OibX2snU4=; b=J/HgrZVLA02dn7Vxo0jembpPFFyZjYDXqhDLKA2t1lHbjshtpuQkfz+qr0fW2xhjwL d0gNoW4PnvNXgj3eHjvOw2w1mn+gG0uwsL+aGPvdBJNuxMM56/rEBAh66kT0Rd83N6rP Q8aYNCA0sTGtB7AOPoti/usmoBNOTlyLs8T9A= 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:mime-version:content-transfer-encoding; bh=MjWn4ppt6RnrTuq0UIU03S3llzLj1097j+OibX2snU4=; b=KVGITO/LhuiSSpyb1xOOzJzvehh7LlrDA8/Cl+8p0lhv2mzqSckeUKY+kD9Ob1K0he eYOG0cT9Zo4/KlfMjsStCMWzC9T6t7AGsSmorlHCXOBcgu0mb8NUzWL9D7FeOtcVBff3 aws/Yp/F33G8joN+O951GwGfQLTi+dQCZaCIZ6h0Sqtr9TSN0bZ6iyqlYTNHfIRvQpVg M6SKzoXkWjZY/n79SYJBHJkYurenD+KF4AGuSKB59bOokMUPLMvXr+dCDtOwwkwQwA/D ssoMWdJ4a9VhtryMq+/rf6Zu/7jzG5I0sA8NATb8ddtCX/sBAxRNb6uzKvy/iTIS5y+d k7+A== X-Gm-Message-State: AHPjjUge0J3MxNl/tiIMmnqDVd1/g0WYktJL0Ownw+4EjDDSYv1pZT+G tmG3WvUXxO57tmBx X-Google-Smtp-Source: ADKCNb7l1tKEbkUsyrVylw4FHRfFIDzcyr6RJAH7lUqQMswNBQa7DZouAhUFs6IkttzN7b2lMTBuhA== X-Received: by 10.223.171.167 with SMTP id s36mr870180wrc.256.1504555065871; Mon, 04 Sep 2017 12:57:45 -0700 (PDT) Received: from localhost.localdomain ([2a01:e35:879a:6cd0:f567:7c41:be9d:9286]) by smtp.gmail.com with ESMTPSA id 23sm10798976wrt.44.2017.09.04.12.57.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 04 Sep 2017 12:57:45 -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 Subject: [PATCH V2 09/13] thermal/drivers/hisi: Remove costly sensor inspection Date: Mon, 4 Sep 2017 21:56:08 +0200 Message-Id: <1504554972-2624-9-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1504554972-2624-1-git-send-email-daniel.lezcano@linaro.org> References: <1504554972-2624-1-git-send-email-daniel.lezcano@linaro.org> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The sensor is all setup, bind, resetted, acked, etc... every single second. That was the way to workaround a problem with the interrupt bouncing again and again. With the following changes, we fix all in one: - Do the setup, one time, at probe time - Add the IRQF_ONESHOT, ack the interrupt in the threaded handler - Remove the interrupt handler - Set the correct value for the LAG register - Remove all the irq_enabled stuff in the code as the interruption handling is fixed - Remove the 3ms delay - Reorder the initialization routine to be in the right order It ends up to a nicer code and more efficient, the 3-5ms delay is removed from the get_temp() path. Signed-off-by: Daniel Lezcano Reviewed-by: Leo Yan Tested-by: Leo Yan --- drivers/thermal/hisi_thermal.c | 203 +++++++++++++++++++---------------------- 1 file changed, 93 insertions(+), 110 deletions(-) -- 2.7.4 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index 10ef6bc..3ce9a4f 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -41,6 +41,7 @@ #define HISI_TEMP_BASE (-60000) #define HISI_TEMP_RESET (100000) #define HISI_TEMP_STEP (784) +#define HISI_TEMP_LAG (3500) #define HISI_MAX_SENSORS 4 #define HISI_DEFAULT_SENSOR 2 @@ -60,8 +61,6 @@ struct hisi_thermal_data { struct clk *clk; struct hisi_thermal_sensor sensors; int irq; - bool irq_enabled; - void __iomem *regs; }; @@ -99,9 +98,40 @@ static inline long hisi_thermal_round_temp(int temp) hisi_thermal_temp_to_step(temp)); } +/* + * The lag register contains 5 bits encoding the temperature in steps. + * + * Each time the temperature crosses the threshold boundary, an + * interrupt is raised. It could be when the temperature is going + * above the threshold or below. However, if the temperature is + * fluctuating around this value due to the load, we can receive + * several interrupts which may not desired. + * + * We can setup a temperature representing the delta between the + * threshold and the current temperature when the temperature is + * decreasing. + * + * For instance: the lag register is 5°C, the threshold is 65°C, when + * the temperature reaches 65°C an interrupt is raised and when the + * temperature decrease to 65°C - 5°C another interrupt is raised. + * + * A very short lag can lead to an interrupt storm, a long lag + * increase the latency to react to the temperature changes. In our + * case, that is not really a problem as we are polling the + * temperature. + * + * [0:4] : lag register + * + * The temperature is coded in steps, cf. HISI_TEMP_STEP. + * + * Min : 0x00 : 0.0 °C + * Max : 0x1F : 24.3 °C + * + * The 'value' parameter is in milliCelsius. + */ static inline void hisi_thermal_set_lag(void __iomem *addr, int value) { - writel(value, addr + TEMP0_LAG); + writel((value / HISI_TEMP_STEP) & 0x1F, addr + TEMP0_LAG); } static inline void hisi_thermal_alarm_clear(void __iomem *addr, int value) @@ -171,71 +201,6 @@ static inline void hisi_thermal_hdak_set(void __iomem *addr, int value) (value << 4), addr + TEMP0_CFG); } -static long hisi_thermal_get_sensor_temp(struct hisi_thermal_data *data, - struct hisi_thermal_sensor *sensor) -{ - long val; - - mutex_lock(&data->thermal_lock); - - /* disable interrupt */ - hisi_thermal_alarm_enable(data->regs, 0); - hisi_thermal_alarm_clear(data->regs, 1); - - /* disable module firstly */ - hisi_thermal_enable(data->regs, 0); - - /* select sensor id */ - hisi_thermal_sensor_select(data->regs, sensor->id); - - /* enable module */ - hisi_thermal_enable(data->regs, 1); - - usleep_range(3000, 5000); - - val = hisi_thermal_get_temperature(data->regs); - - mutex_unlock(&data->thermal_lock); - - return val; -} - -static void hisi_thermal_enable_bind_irq_sensor - (struct hisi_thermal_data *data) -{ - struct hisi_thermal_sensor *sensor; - - mutex_lock(&data->thermal_lock); - - sensor = &data->sensors; - - /* setting the hdak time */ - hisi_thermal_hdak_set(data->regs, 0); - - /* disable module firstly */ - hisi_thermal_reset_enable(data->regs, 0); - hisi_thermal_enable(data->regs, 0); - - /* select sensor id */ - hisi_thermal_sensor_select(data->regs, sensor->id); - - /* enable for interrupt */ - hisi_thermal_alarm_set(data->regs, sensor->thres_temp); - - hisi_thermal_reset_set(data->regs, HISI_TEMP_RESET); - - /* enable module */ - hisi_thermal_reset_enable(data->regs, 1); - hisi_thermal_enable(data->regs, 1); - - hisi_thermal_alarm_clear(data->regs, 0); - hisi_thermal_alarm_enable(data->regs, 1); - - usleep_range(3000, 5000); - - mutex_unlock(&data->thermal_lock); -} - static void hisi_thermal_disable_sensor(struct hisi_thermal_data *data) { mutex_lock(&data->thermal_lock); @@ -253,25 +218,10 @@ static int hisi_thermal_get_temp(void *_sensor, int *temp) struct hisi_thermal_sensor *sensor = _sensor; struct hisi_thermal_data *data = sensor->thermal; - *temp = hisi_thermal_get_sensor_temp(data, sensor); - - dev_dbg(&data->pdev->dev, "id=%d, irq=%d, temp=%d, thres=%d\n", - sensor->id, data->irq_enabled, *temp, sensor->thres_temp); - /* - * Bind irq to sensor for two cases: - * Reenable alarm IRQ if temperature below threshold; - * if irq has been enabled, always set it; - */ - if (data->irq_enabled) { - hisi_thermal_enable_bind_irq_sensor(data); - return 0; - } + *temp = hisi_thermal_get_temperature(data->regs); - if (*temp < sensor->thres_temp) { - data->irq_enabled = true; - hisi_thermal_enable_bind_irq_sensor(data); - enable_irq(data->irq); - } + dev_dbg(&data->pdev->dev, "id=%d, temp=%d, thres=%d\n", + sensor->id, *temp, sensor->thres_temp); return 0; } @@ -280,26 +230,27 @@ static const struct thermal_zone_of_device_ops hisi_of_thermal_ops = { .get_temp = hisi_thermal_get_temp, }; -static irqreturn_t hisi_thermal_alarm_irq(int irq, void *dev) +static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev) { struct hisi_thermal_data *data = dev; + struct hisi_thermal_sensor *sensor = &data->sensors; + int temp; - disable_irq_nosync(irq); - data->irq_enabled = false; + hisi_thermal_alarm_clear(data->regs, 1); - return IRQ_WAKE_THREAD; -} + temp = hisi_thermal_get_temperature(data->regs); -static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev) -{ - struct hisi_thermal_data *data = dev; - struct hisi_thermal_sensor *sensor = &data->sensors; + if (temp >= sensor->thres_temp) { + dev_crit(&data->pdev->dev, "THERMAL ALARM: %d > %d\n", + temp, sensor->thres_temp); - dev_crit(&data->pdev->dev, "THERMAL ALARM: T > %d\n", - sensor->thres_temp); + thermal_zone_device_update(data->sensors.tzd, + THERMAL_EVENT_UNSPECIFIED); - thermal_zone_device_update(data->sensors.tzd, - THERMAL_EVENT_UNSPECIFIED); + } else if (temp < sensor->thres_temp) { + dev_crit(&data->pdev->dev, "THERMAL ALARM stopped: %d < %d\n", + temp, sensor->thres_temp); + } return IRQ_HANDLED; } @@ -352,6 +303,40 @@ static void hisi_thermal_toggle_sensor(struct hisi_thermal_sensor *sensor, on ? THERMAL_DEVICE_ENABLED : THERMAL_DEVICE_DISABLED); } +static int hisi_thermal_setup(struct hisi_thermal_data *data) +{ + struct hisi_thermal_sensor *sensor; + + sensor = &data->sensors; + + /* disable module firstly */ + hisi_thermal_reset_enable(data->regs, 0); + hisi_thermal_enable(data->regs, 0); + + /* select sensor id */ + hisi_thermal_sensor_select(data->regs, sensor->id); + + /* setting the hdak time */ + hisi_thermal_hdak_set(data->regs, 0); + + /* setting lag value between current temp and the threshold */ + hisi_thermal_set_lag(data->regs, HISI_TEMP_LAG); + + /* enable for interrupt */ + hisi_thermal_alarm_set(data->regs, sensor->thres_temp); + + hisi_thermal_reset_set(data->regs, HISI_TEMP_RESET); + + /* enable module */ + hisi_thermal_reset_enable(data->regs, 1); + hisi_thermal_enable(data->regs, 1); + + hisi_thermal_alarm_clear(data->regs, 0); + hisi_thermal_alarm_enable(data->regs, 1); + + return 0; +} + static int hisi_thermal_probe(struct platform_device *pdev) { struct hisi_thermal_data *data; @@ -394,9 +379,6 @@ static int hisi_thermal_probe(struct platform_device *pdev) return ret; } - hisi_thermal_enable_bind_irq_sensor(data); - data->irq_enabled = true; - ret = hisi_thermal_register_sensor(pdev, data, &data->sensors, HISI_DEFAULT_SENSOR); @@ -406,18 +388,21 @@ static int hisi_thermal_probe(struct platform_device *pdev) return ret; } - hisi_thermal_toggle_sensor(&data->sensors, true); + ret = hisi_thermal_setup(data); + if (ret) { + dev_err(&pdev->dev, "Failed to setup the sensor: %d\n", ret); + return ret; + } - ret = devm_request_threaded_irq(&pdev->dev, data->irq, - hisi_thermal_alarm_irq, + ret = devm_request_threaded_irq(&pdev->dev, data->irq, NULL, hisi_thermal_alarm_irq_thread, - 0, "hisi_thermal", data); + IRQF_ONESHOT, "hisi_thermal", data); if (ret < 0) { dev_err(&pdev->dev, "failed to request alarm irq: %d\n", ret); return ret; } - enable_irq(data->irq); + hisi_thermal_toggle_sensor(&data->sensors, true); return 0; } @@ -440,7 +425,6 @@ static int hisi_thermal_suspend(struct device *dev) struct hisi_thermal_data *data = dev_get_drvdata(dev); hisi_thermal_disable_sensor(data); - data->irq_enabled = false; clk_disable_unprepare(data->clk); @@ -456,8 +440,7 @@ static int hisi_thermal_resume(struct device *dev) if (ret) return ret; - data->irq_enabled = true; - hisi_thermal_enable_bind_irq_sensor(data); + hisi_thermal_setup(data); return 0; } From patchwork Mon Sep 4 19:56:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 111612 Delivered-To: patch@linaro.org Received: by 10.140.94.166 with SMTP id g35csp1936417qge; Mon, 4 Sep 2017 12:59:23 -0700 (PDT) X-Received: by 10.99.163.26 with SMTP id s26mr1540827pge.445.1504555162971; Mon, 04 Sep 2017 12:59:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504555162; cv=none; d=google.com; s=arc-20160816; b=OrFroatK2WdICaa5Hldu4sV/Sdu68C4CUlkRax2Qt2gaIDoQ+8bZCD0Q5s+ZtFRJnS t/D6R2tIZncMxHZpkWWzozRbnFxQ6MryXSKGf/WdPFuaKIZR/kTujUw7SfR3adYRp4PN 7axWlgtaxDNzjbIsRJl2SnfSYgw113sjFKiwxvE8n4lxyjbohKwU601uCo+83LOSZ8S6 reWnJULgj1YOj4SKRcNtIgPqzE9HzClRr1aJx5M5/xR37rDSnUFA+ighlvtzUssGZhYW ZRRFyRZ+0q7EVKZoEvBAjs3kFJn7xYLHTpJUC0C70BUeURi3LrWo5OMRT2uXQMYUgXco y4aQ== 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=Sl8kFBccEl9fqk9O939IU3v3CW6Ryl8QJZmHbj4c6A8=; b=i3lMKpVE6E3JVMIlTPpovlzg2jbNqMhOPSctulnCTSgHtDO5BZrIrE3LgF4+Hwz87C bUjbAhS9yldhSMHOM80bK7cIKyyCtSdKpjAXqQu5bS6SDNGjbY0tdI/3S2z56ceWimK1 K2hIZaYH7rXvJ+0uQ4WF9VzjUZDXXQw+DRyB8vbl5MsXmmoxtiDJJd4SjhSP826DeRDh jfiC3nw+E+BXO51O1fG7VirSIG0h6DBN9iFbfDciyK6FvHntyNmschJUQDI/emAb0HhR 6gTndfW1jST6Mu+0OYUXXpd7YOoKZpAJJbUM7WydmWJWcdH5TBbXEibGGr3UMXG5w4js XNLA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NbtSapQg; 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 5si5701843plx.823.2017.09.04.12.59.22; Mon, 04 Sep 2017 12:59:22 -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=NbtSapQg; 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 S1754155AbdIDT7T (ORCPT + 26 others); Mon, 4 Sep 2017 15:59:19 -0400 Received: from mail-wm0-f42.google.com ([74.125.82.42]:37075 "EHLO mail-wm0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754037AbdIDT5u (ORCPT ); Mon, 4 Sep 2017 15:57:50 -0400 Received: by mail-wm0-f42.google.com with SMTP id u26so8559749wma.0 for ; Mon, 04 Sep 2017 12:57:49 -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=Sl8kFBccEl9fqk9O939IU3v3CW6Ryl8QJZmHbj4c6A8=; b=NbtSapQggLFDwCQ6AaVMALupM9N2C0rqfxE4vPLzhP7z+8pGJ0eKTYQUL+NFUbB4ok YEml5wo/Zi3jrgpCF/Z99uZ3KkrtrDJDnE4jXcmNvi0NWffyhiphpqRcetP+5EkBRUBD +uc/frz6YqseJ/svXOONgk5+dbyuaAs1hfTYY= 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=Sl8kFBccEl9fqk9O939IU3v3CW6Ryl8QJZmHbj4c6A8=; b=R1Y+rDRuEZvmOw7eV997ImAb2ym1w0TF+AdfmSfh/75KaZBZ0KLHGDBckZjuQ0rsui 36BxPYpOCFZh/SiC2U3MR09qjNjGuCBBqve2kwkjWwS6aK3KdiiEssbiblCdxhBEwmhy k0FC1sRCN/nZmyDrjRvEOki6+eOEaxA6Q21zy9iLNl9obou3bD1TL2xS0GV4/duWRc2u P1DH8OAx1Umzc8YrWtOASsUrinlX/sWnIWOqvbuxwZyOYE8QU30IAqXi28ndcjR6iJtU yfcUFjxr7t+tzYl85m+jsv5/ekYX/VN3f4yP+onA1Ei/HgzbJLQlTPop/DiblsXMyH6G gc/g== X-Gm-Message-State: AHPjjUi0EUKF6orkEzyvQvkE2an8t0CjmBRXSse0i13PkYUugoksxyxi Vw59/0ztR8r4RmoA X-Google-Smtp-Source: ADKCNb7PUtiD2q73aR02fzGri99WLT1W2ZGINFdXaUMpInT0EqcMMImCHP+Fb0NIYoeU95zDDkzMMw== X-Received: by 10.28.34.198 with SMTP id i189mr1282371wmi.165.1504555068443; Mon, 04 Sep 2017 12:57:48 -0700 (PDT) Received: from localhost.localdomain ([2a01:e35:879a:6cd0:f567:7c41:be9d:9286]) by smtp.gmail.com with ESMTPSA id 23sm10798976wrt.44.2017.09.04.12.57.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 04 Sep 2017 12:57:46 -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 Subject: [PATCH V2 10/13] thermal/drivers/hisi: Rename and remove unused field Date: Mon, 4 Sep 2017 21:56:09 +0200 Message-Id: <1504554972-2624-10-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1504554972-2624-1-git-send-email-daniel.lezcano@linaro.org> References: <1504554972-2624-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 Rename the 'sensors' field to 'sensor' as we describe only one sensor. Remove the 'sensor_temp' as it is no longer used. Signed-off-by: Daniel Lezcano Reviewed-by: Leo Yan Tested-by: Leo Yan --- drivers/thermal/hisi_thermal.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) -- 2.7.4 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index 3ce9a4f..4c47b4d 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -49,8 +49,6 @@ struct hisi_thermal_sensor { struct hisi_thermal_data *thermal; struct thermal_zone_device *tzd; - - long sensor_temp; uint32_t id; uint32_t thres_temp; }; @@ -59,9 +57,9 @@ struct hisi_thermal_data { struct mutex thermal_lock; /* protects register data */ struct platform_device *pdev; struct clk *clk; - struct hisi_thermal_sensor sensors; - int irq; + struct hisi_thermal_sensor sensor; void __iomem *regs; + int irq; }; /* @@ -233,7 +231,7 @@ static const struct thermal_zone_of_device_ops hisi_of_thermal_ops = { static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev) { struct hisi_thermal_data *data = dev; - struct hisi_thermal_sensor *sensor = &data->sensors; + struct hisi_thermal_sensor *sensor = &data->sensor; int temp; hisi_thermal_alarm_clear(data->regs, 1); @@ -244,7 +242,7 @@ static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev) dev_crit(&data->pdev->dev, "THERMAL ALARM: %d > %d\n", temp, sensor->thres_temp); - thermal_zone_device_update(data->sensors.tzd, + thermal_zone_device_update(data->sensor.tzd, THERMAL_EVENT_UNSPECIFIED); } else if (temp < sensor->thres_temp) { @@ -307,7 +305,7 @@ static int hisi_thermal_setup(struct hisi_thermal_data *data) { struct hisi_thermal_sensor *sensor; - sensor = &data->sensors; + sensor = &data->sensor; /* disable module firstly */ hisi_thermal_reset_enable(data->regs, 0); @@ -380,7 +378,7 @@ static int hisi_thermal_probe(struct platform_device *pdev) } ret = hisi_thermal_register_sensor(pdev, data, - &data->sensors, + &data->sensor, HISI_DEFAULT_SENSOR); if (ret) { dev_err(&pdev->dev, "failed to register thermal sensor: %d\n", @@ -402,7 +400,7 @@ static int hisi_thermal_probe(struct platform_device *pdev) return ret; } - hisi_thermal_toggle_sensor(&data->sensors, true); + hisi_thermal_toggle_sensor(&data->sensor, true); return 0; } @@ -410,7 +408,7 @@ 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); - struct hisi_thermal_sensor *sensor = &data->sensors; + struct hisi_thermal_sensor *sensor = &data->sensor; hisi_thermal_toggle_sensor(sensor, false); hisi_thermal_disable_sensor(data); From patchwork Mon Sep 4 19:56:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 111609 Delivered-To: patch@linaro.org Received: by 10.140.94.166 with SMTP id g35csp1935514qge; Mon, 4 Sep 2017 12:58:11 -0700 (PDT) X-Received: by 10.84.128.1 with SMTP id 1mr1765147pla.238.1504555090948; Mon, 04 Sep 2017 12:58:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504555090; cv=none; d=google.com; s=arc-20160816; b=npC4zaQX5+aGojlJJb0Qh/g3xJDX0nGdS6gzi71o1WEfSx9vT6XjkyLFh3FZ6V024w IBP4trz3bi5aDYVgSrTg7jdLLeLi9Jr4uQlidIjRH0z0nQ/+OHPhWVNH51b4E5UyGlZC Gqps5L71RmLnYSNHilK9UwOZupRFItuOKBy4T/Amyq82MmceM+5ms3kkplWKqK+u4+xH gavSlOz8vzHDBu+zZdmmUJdJYnAhhNO1O5mFrZDNEt2vIKaFi2R+S8iqGxMjHmgYdVyk yfFxcTnCXQJyw/TMuJtzx7SOEYKaWpS/oldcNa+wzPBD5i+ZVOX65pzP4QCZCB/E84kT WFiA== 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=2ftMwuvuGfpeb9j4YNx/1YhTlSOPykQzQRId7g4qtUg=; b=XTjopgSfiz9srABJr48Diec6QINkZqVoXJHXJZsKMIKxqmhbBa2S2hU5Ps1Ly75aX9 whIwWgQ4VHIDGcokZQ+NoC1ldbV6oXbN2hYshADTtvMoNslNAqxLJnCHzApO5Txt+yls VeP0MnGC66JMm3embVuKGhLmEfyVmn4YVYdyRNZa/S2iT46ME1TQYZ9OmrR2t0q4CvzY Mgz5DO/Wizcgwcc2rgUEeGy/wpFh6QwQprpo/wu5KLjohcjHxU+B7e2ifuN4hsWGFd8t XPFrbV5KIyF6JT/OU3SWANzcLNStGAWOu/HzUZJtGDnqN6lMCoYOBaighPbmQ0lnGd6p SDWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=EharbUu6; 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 x3si5784702plb.754.2017.09.04.12.58.10; Mon, 04 Sep 2017 12:58:10 -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=EharbUu6; 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 S1754125AbdIDT6H (ORCPT + 26 others); Mon, 4 Sep 2017 15:58:07 -0400 Received: from mail-wm0-f50.google.com ([74.125.82.50]:36590 "EHLO mail-wm0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753988AbdIDT5v (ORCPT ); Mon, 4 Sep 2017 15:57:51 -0400 Received: by mail-wm0-f50.google.com with SMTP id i145so9881182wmf.1 for ; Mon, 04 Sep 2017 12:57: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=2ftMwuvuGfpeb9j4YNx/1YhTlSOPykQzQRId7g4qtUg=; b=EharbUu6T8k1/jfxUc5bdMuqXD+1SlCRRFU2n3oy/YE8ZPjr8wVaWTkPasaOvfMdYf igkmWxPMYRILWN7pu1TpMCJ84tFJDcMNaigmc8RjVe8wz0noQ4cpbiFO45SSwzau6h19 csSMQ5OuCs7n0Bi9F9WPfwp1TIpIn9Puk1J9w= 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=2ftMwuvuGfpeb9j4YNx/1YhTlSOPykQzQRId7g4qtUg=; b=n7AWGnOpgi1L6YAKVksKNY/xvcuKexkXxs3x6bUEI/y1V0Fa+C6cNDzhyfgydvdI7z VeFmasBYeqNzhdEvvrj/mxwQX061dB3lhi8ZmEI9mOheXkO0YtPQzx/Sa+B+h8qXwRBx 2JJ9iqyWNjjeXcs3KGLlGT0r1k8VvT4YJ09DS7n31v0ZRpMw9haGbW9a1FgYMXMDUNE4 wCZIqfwWs3QPczrB3aw6PkD89n5GMyNM3h+Z6a3BXxQ7zvHCPSQfrnvYvxJLeYo8rsm9 Z7R4XcOkctImSWYVoe34TLF/Ox8ab6tNCaFTMZlQBQBn3Jk101mlQlQXT/uMGVglNQsB yswg== X-Gm-Message-State: AHPjjUjzcpSeyQyY+eLrajhJ3Ji9EXShrjUGO+lMOjPqEf1lrR0NMs2T IwfYuJivUpm+U9COU1QNDA== X-Google-Smtp-Source: ADKCNb6F0WBbZ/Qj1zpfs1N8j4HQ44ZbJiyFINvvaGQNAuYSQkXvbkH8BMw7btbPwKot0cmwrzRb2Q== X-Received: by 10.28.111.73 with SMTP id k70mr792046wmc.84.1504555070027; Mon, 04 Sep 2017 12:57:50 -0700 (PDT) Received: from localhost.localdomain ([2a01:e35:879a:6cd0:f567:7c41:be9d:9286]) by smtp.gmail.com with ESMTPSA id 23sm10798976wrt.44.2017.09.04.12.57.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 04 Sep 2017 12:57:49 -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 Subject: [PATCH V2 11/13] thermal/drivers/hisi: Convert long to int Date: Mon, 4 Sep 2017 21:56:10 +0200 Message-Id: <1504554972-2624-11-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1504554972-2624-1-git-send-email-daniel.lezcano@linaro.org> References: <1504554972-2624-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 There is no point to specify the temperature as long variable, the int is enough. Replace all long variables to int, so making the code consistent. Signed-off-by: Daniel Lezcano Reviewed-by: Leo Yan --- drivers/thermal/hisi_thermal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.7.4 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index 4c47b4d..0c06d14 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -85,12 +85,12 @@ static inline int hisi_thermal_step_to_temp(int step) return HISI_TEMP_BASE + (step * HISI_TEMP_STEP); } -static inline long hisi_thermal_temp_to_step(long temp) +static inline int hisi_thermal_temp_to_step(int temp) { return (temp - HISI_TEMP_BASE) / HISI_TEMP_STEP; } -static inline long hisi_thermal_round_temp(int temp) +static inline int hisi_thermal_round_temp(int temp) { return hisi_thermal_step_to_temp( hisi_thermal_temp_to_step(temp)); From patchwork Mon Sep 4 19:56:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 111611 Delivered-To: patch@linaro.org Received: by 10.140.94.166 with SMTP id g35csp1936162qge; Mon, 4 Sep 2017 12:59:00 -0700 (PDT) X-Received: by 10.99.126.23 with SMTP id z23mr1550759pgc.156.1504555140687; Mon, 04 Sep 2017 12:59:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504555140; cv=none; d=google.com; s=arc-20160816; b=RSlWX6x1NW7rdM7gAGaLNmFVK7cMiRJZn8t1ErmXKwNAx0NFCX57xHOIgFpEETcTgY 8zM+nny2EELMOAw+iU0zkNHBqkhzU7o2A78x97d6aF0z3Ejd/aI/44yC7uspfik3YdJl ukiD1UO54PnBHeB0zgAcqnD9aQlgWG23NE8Zv9AyIKegEtrjBkZ24EZx9V9Fch0+HJFX uuixeueux9DBYwtMlaDkE3HkCauYSi5zpEzpgGrK2hJDYRWFiNkEUJ77iimTk4iJC0Kk Fa1FpYORRtEQMK9Zi8HD2itGgKOO2uJp2HZ8PWiQOX4xb/wBimqoGmU2Pn5AKRhpGwCj YVQw== 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=BgU7k5JhkwEGgJ0Igb2l4oOFDtZp6E8NfnBvjszbATA=; b=yGacrVjAs7GIp1Qfnoz0DkBdr5tddX/2GhDg8h8KoQFsPg3G1ky9ZM/QlDIO0mEw84 hahavRdVoLb09kqOJr+vrekPhJqTFuJL+STSubQ3JckY8+t/xSqPrcxuuW+QY9w+24zO Nv8cXRkhMk0RgAcNX1hBv3Fo2h+oxQqU27FCO7QeUE+vOntN7o/Ki07wTP1/LIHoi7ER b0dtBJPIwphLFraPKXeFcvdnRQTJHPGf5rrAHXTFF/Ni7WetN/9hIB2oaf81ZxqJChHp pdQ9NjJ+xx74T1qQOgYcMN4u6zJf2+AU6mS6XVaPlHWD/KiT119AcWTLMl5wdinOi/9i YrXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Xihbyi5U; 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 d14si1694582pln.127.2017.09.04.12.59.00; Mon, 04 Sep 2017 12:59:00 -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=Xihbyi5U; 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 S1754149AbdIDT66 (ORCPT + 26 others); Mon, 4 Sep 2017 15:58:58 -0400 Received: from mail-wm0-f42.google.com ([74.125.82.42]:35256 "EHLO mail-wm0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754054AbdIDT5w (ORCPT ); Mon, 4 Sep 2017 15:57:52 -0400 Received: by mail-wm0-f42.google.com with SMTP id v2so9984823wmf.0 for ; Mon, 04 Sep 2017 12:57:52 -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=BgU7k5JhkwEGgJ0Igb2l4oOFDtZp6E8NfnBvjszbATA=; b=Xihbyi5UkKd2UU/DdIX8gdOeRetY10XZZe0P++Hi5BIo7jVFlKxZeCWR/gJgkuEBdv 4uxIt5gcvD4SBwlqTCH7PJxmV9RWCuYG7aevHBjpmR1yznM8hlFr5RaGalNJUq4Qk9NE lKrAz9XkDbfrl/fN0iLvuNbnf2mi8QOEwOzJg= 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=BgU7k5JhkwEGgJ0Igb2l4oOFDtZp6E8NfnBvjszbATA=; b=OleivEBV31iXcsZEFKErr0s0QZ9XrnjPHMGj5dWd8UTpLfvUsuaw9PRI5p7aNI9JC+ Rw7AvLapJZ/MTCR2d/Dd7I3SUlfeVvWpGRZxgXvHA9NCUuxwn26hAPD2B99T1iMgGT8U fI1DMxv0sKJhg+mVCLitn8kWDpZx5Zi5BGe+uB7i8qDR8qHG5y0FR3G02W37OY7ZIj1d jUiRXjcHXmXrJzbjnagOpEJKLKRlCejBynRQuBA3KNDGI4JmLqGjlCKeFoCzix5oAyRG lwrRdC0h/zFFMYigCPcWW6vP3r0u0OHkWK3n7ikuY9OTPNV5WQCCNQt3Ncl4Dtaes4h7 nA3Q== X-Gm-Message-State: AHPjjUhP6Et/EYbeuNewvNTpl0c4FnNSQ7XqojoA86MKpsNzSSSKeCfu wctCFTksPmembiOv X-Google-Smtp-Source: ADKCNb56lpnQTEnvqtt+wlKLvXbAdGGGhq+PuwTcNNdOTBC1tuUVpPrsKIhuvcuOpTHyJQJI1T2HfQ== X-Received: by 10.28.105.200 with SMTP id z69mr862215wmh.20.1504555071641; Mon, 04 Sep 2017 12:57:51 -0700 (PDT) Received: from localhost.localdomain ([2a01:e35:879a:6cd0:f567:7c41:be9d:9286]) by smtp.gmail.com with ESMTPSA id 23sm10798976wrt.44.2017.09.04.12.57.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 04 Sep 2017 12:57:51 -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 Subject: [PATCH V2 12/13] thermal/drivers/hisi: Remove thermal data back pointer Date: Mon, 4 Sep 2017 21:56:11 +0200 Message-Id: <1504554972-2624-12-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1504554972-2624-1-git-send-email-daniel.lezcano@linaro.org> References: <1504554972-2624-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 The presence of the thermal data pointer in the sensor structure has the unique purpose of accessing the thermal data in the interrupt handler. The sensor pointer is passed when registering the interrupt handler, replace the cookie by the thermal data pointer, so the back pointer is no longer needed. Signed-off-by: Daniel Lezcano --- drivers/thermal/hisi_thermal.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) -- 2.7.4 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index 0c06d14..cce3d10 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -47,7 +47,6 @@ #define HISI_DEFAULT_SENSOR 2 struct hisi_thermal_sensor { - struct hisi_thermal_data *thermal; struct thermal_zone_device *tzd; uint32_t id; uint32_t thres_temp; @@ -211,10 +210,10 @@ static void hisi_thermal_disable_sensor(struct hisi_thermal_data *data) mutex_unlock(&data->thermal_lock); } -static int hisi_thermal_get_temp(void *_sensor, int *temp) +static int hisi_thermal_get_temp(void *__data, int *temp) { - struct hisi_thermal_sensor *sensor = _sensor; - struct hisi_thermal_data *data = sensor->thermal; + struct hisi_thermal_data *data = __data; + struct hisi_thermal_sensor *sensor = &data->sensor; *temp = hisi_thermal_get_temperature(data->regs); @@ -262,10 +261,10 @@ static int hisi_thermal_register_sensor(struct platform_device *pdev, const struct thermal_trip *trip; sensor->id = index; - sensor->thermal = data; sensor->tzd = devm_thermal_zone_of_sensor_register(&pdev->dev, - sensor->id, sensor, &hisi_of_thermal_ops); + sensor->id, data, + &hisi_of_thermal_ops); if (IS_ERR(sensor->tzd)) { ret = PTR_ERR(sensor->tzd); sensor->tzd = NULL; From patchwork Mon Sep 4 19:56:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 111610 Delivered-To: patch@linaro.org Received: by 10.140.94.166 with SMTP id g35csp1935546qge; Mon, 4 Sep 2017 12:58:13 -0700 (PDT) X-Received: by 10.84.241.201 with SMTP id t9mr1694071plm.61.1504555093242; Mon, 04 Sep 2017 12:58:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504555093; cv=none; d=google.com; s=arc-20160816; b=ewZdLbn3Nqli80pKvunTssluUQ8c88mHVJrWQwdUMYI0Kmsm0oiiJzm1a3BVCJdvVT RWSEb5Ok/6q5FO6n7gSEnGFtdkcib5/CapB1fDM/z0IpUTwIz09kTVtQ6eG51cJb6KMM Y4Ohecg9ktZgkNOIlRWDn73YU1HdnBHA/udPGV1MICioGrGk9LsxUCBZf9p8Vi8G3siy R1PaNZjfOJgwN33pexdeIEQUbdWh6OAhX4tzexIH7URiG6jIVkv/zqbhmLxFEquYpNvH 0N6hHdIRUY2D7QX7Jz7993SZVfdbE1bKWXpffwNsnz077x1evh6eujW/a8qRlvUih/PW Sp5A== 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=+nJSSViYhQ4UTCVfIRdiFp+QWXQz5Jty49sMbZPbkdQ=; b=bMR7ZhoVUSBrLQCQ62KYzljgymTZZOo7gtZKUyuXSWH8jjmetoQGFsmb8jUDs2K5qi wrWdDj5/Cy+peOxy1x+XKJRDq+TRn1870+MXMCpuRNWqp8aJIhGDGIqlfA0WlBByZLvj 1Rs0PHB/s34orkxLkmMdcSBjcCViEUafUOVGTimKAisQOwx/yPg84O0g14dwPcmSvydy KhJSUQPklTlyQPTbAFywBwee5L40RkafXhSuD6uND0VxEKi83UCCCSm2hikWWZZb5gxq RnjQPjrgXcA4kE8IkcIsGCmBNh5r+gBYa1/B7n7EK1Tiho9dNEQYDtS8UUbCSQEWgMh/ SAyg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=fEEs5PL9; 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 x3si5784702plb.754.2017.09.04.12.58.12; Mon, 04 Sep 2017 12:58:13 -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=fEEs5PL9; 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 S1754140AbdIDT6K (ORCPT + 26 others); Mon, 4 Sep 2017 15:58:10 -0400 Received: from mail-wm0-f50.google.com ([74.125.82.50]:37097 "EHLO mail-wm0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754073AbdIDT5y (ORCPT ); Mon, 4 Sep 2017 15:57:54 -0400 Received: by mail-wm0-f50.google.com with SMTP id u26so8560547wma.0 for ; Mon, 04 Sep 2017 12:57:54 -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=+nJSSViYhQ4UTCVfIRdiFp+QWXQz5Jty49sMbZPbkdQ=; b=fEEs5PL9POPOjzuDj2ofyFZW/wZ2CzSLH954nnqRXY0eEJHjEJU2Ep63UbdK+kTvee 4yIZe05x4mq0iPVMUHs5/BloNEueL4L5s0eeXmEqDjMJ4Ffgf+RWFkuhXMddXL1CyBYX 1Tu38BS0VOVa12NxZ7AWR1I0Yn+RiQi4qM3Vw= 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=+nJSSViYhQ4UTCVfIRdiFp+QWXQz5Jty49sMbZPbkdQ=; b=ptgyPYPZLb3SPFMRjgp7xLuCfYZPw36hv9Jv67llMNHqaPdfDi0r2AuOebOLAk7b+u 39bh4GPwkWdT9EZiDH0CUA/c4rwzNRwWe2V1r6LkBsP2e1UbY3g8R5s5BUfOpQFIElay 9/SBCTWZ5hyRLlqQja/Agiv9/mFgj/zQLdIibtDhbAdMw8pFG5buTMPtWr4OoGiGqB1x 4BlicREKOWQ4mzGyOGCyy4McJTzGIt8qFFe3zeHDW9j90wushQmkpxzKzI1EKJjpldhl 0/9lj08osr8jLJECctb6g07RurUq1rUT/gd5kf7ggSyz6iPywkiIq4wx32i/TJqqW19q t46w== X-Gm-Message-State: AHPjjUiuVkK8Pi5FGNEcA8oP9pEs3haBVxPRrY4tLA4jmUXXLQTReaOo 2HmRjMbizpSOKFeG X-Google-Smtp-Source: ADKCNb74NHypE3JsEjhqmlamD3XoWJlyZcBi2wNsTRcAVf3mSSVTvYAa+hDArVk8viiTP2YdnX8t/w== X-Received: by 10.28.8.8 with SMTP id 8mr955673wmi.58.1504555073166; Mon, 04 Sep 2017 12:57:53 -0700 (PDT) Received: from localhost.localdomain ([2a01:e35:879a:6cd0:f567:7c41:be9d:9286]) by smtp.gmail.com with ESMTPSA id 23sm10798976wrt.44.2017.09.04.12.57.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 04 Sep 2017 12:57:52 -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 Subject: [PATCH V2 13/13] thermal/drivers/hisi: Remove mutex_lock in the code Date: Mon, 4 Sep 2017 21:56:12 +0200 Message-Id: <1504554972-2624-13-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1504554972-2624-1-git-send-email-daniel.lezcano@linaro.org> References: <1504554972-2624-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 The mutex is used to protect against writes in the configuration register. That happens at probe time, with no possible race yet. Then when the module is unloaded and at suspend/resume. When the module is unloaded, it is an userspace operation, thus via a process. Suspending the system goes through the freezer to suspend all the tasks synchronously before continuing. So it is not possible to hit the suspend ops in this driver while we are unloading it. The resume is the same situation than the probe. In other words, even if there are several places where we write the configuration register, there is no situation where we can write it at the same time, so far as I can judge Signed-off-by: Daniel Lezcano Reviewed-by: Leo Yan Tested-by: Leo Yan --- drivers/thermal/hisi_thermal.c | 6 ------ 1 file changed, 6 deletions(-) -- 2.7.4 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index cce3d10..39f4627 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -53,7 +53,6 @@ struct hisi_thermal_sensor { }; struct hisi_thermal_data { - struct mutex thermal_lock; /* protects register data */ struct platform_device *pdev; struct clk *clk; struct hisi_thermal_sensor sensor; @@ -200,14 +199,10 @@ static inline void hisi_thermal_hdak_set(void __iomem *addr, int value) static void hisi_thermal_disable_sensor(struct hisi_thermal_data *data) { - mutex_lock(&data->thermal_lock); - /* disable sensor module */ hisi_thermal_enable(data->regs, 0); hisi_thermal_alarm_enable(data->regs, 0); hisi_thermal_reset_enable(data->regs, 0); - - mutex_unlock(&data->thermal_lock); } static int hisi_thermal_get_temp(void *__data, int *temp) @@ -344,7 +339,6 @@ static int hisi_thermal_probe(struct platform_device *pdev) if (!data) return -ENOMEM; - mutex_init(&data->thermal_lock); data->pdev = pdev; res = platform_get_resource(pdev, IORESOURCE_MEM, 0);