From patchwork Mon Sep 4 19:56:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 111615 Delivered-To: patch@linaro.org Received: by 10.140.94.166 with SMTP id g35csp1937351qge; Mon, 4 Sep 2017 13:00:22 -0700 (PDT) X-Received: by 10.84.235.203 with SMTP id m11mr1749581plt.28.1504555222616; Mon, 04 Sep 2017 13:00:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1504555222; cv=none; d=google.com; s=arc-20160816; b=K+lhTOZoIDMeqdwd6hQHyzWDAoRRmbKpYFLgqz3x2XH9+TQnROtC9/eEptcuWWMGTE Dgup4ygsLMq6vhLFbbHzK5/KPT16Sj6VZMFwIieXnlGPRMjFm3hYqntUCQlRZDgvOVnn jhwQ9LqkOoBQSr0f53s/3WHX7DwHk8L8Se12sPdpUUf7IkduseiHhELrqpS6EtxrhMax pSEfVmyZO/sDKv8LAgBbnVHXUk5qD5KlyPE2pH0nI0M/FtmfBhHwlyyHYK1vnCROxtJd i4jmaW5ayGh3hI3zbcV2ROuhMajysYj5CQtixbxlkHxU2kXhH4QyfisO9MRFAAU4oaUv YHYQ== 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=5I8mkUE7/qyP/tez8VZpxc30jNELR4h693da5NkRK2Q=; b=Rr5hhuuiwG2/1C3gFse0t7BjQxSR0OxGoyb19hkm6nd/isl8Kk0mSamcYD1NwSIjwz uIA/3aSlLMQzBY7Rp8/F5O+m0vXPXxEbKBRkPOuAfNwXccbJrOvt6llZQ63DXyZ2MzB0 XLL8UYgV7Zsh1Cd1eiB3pIRDYI6c3v4S/PqwXxY5p+y/ygcABXkmHsgmJqXpg9C0lmXH c2gqCxntHegY9ZVNwOgzgPLXzKyfvyz+zElPx9qaz5g4fUNKHZF3sZl1H9yFvkdUOT6k ZGZ1QQK9xfOwX9PHpR4DwEWOzorU8c+008LXmL2poOVudTf/w6e04JbWXNQL/QQE0s5Y 1xnw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=MZJKN8/N; 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 k30si5071pgn.341.2017.09.04.13.00.22; Mon, 04 Sep 2017 13:00:22 -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=MZJKN8/N; 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 S1753977AbdIDUAU (ORCPT + 12 others); Mon, 4 Sep 2017 16:00:20 -0400 Received: from mail-wr0-f179.google.com ([209.85.128.179]:35503 "EHLO mail-wr0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753953AbdIDT5f (ORCPT ); Mon, 4 Sep 2017 15:57:35 -0400 Received: by mail-wr0-f179.google.com with SMTP id y15so4042763wrc.2 for ; Mon, 04 Sep 2017 12:57:35 -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=5I8mkUE7/qyP/tez8VZpxc30jNELR4h693da5NkRK2Q=; b=MZJKN8/NOLhLWJBnDSVRRW0JuXRJQV5scI26+4/EEGjyIg0Ee/YlYa+KqJHp7iHyRG V6beCD8BX4c0fVkU4W/0HKwPHhBsuwTIUOSz5MTmRKCnmzWRE1HfJzMIoY4D5ZA/VZcW SG0QxKzQk7cvzJ44bz9ZBNZL6AJtXib3TjKfE= 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=5I8mkUE7/qyP/tez8VZpxc30jNELR4h693da5NkRK2Q=; b=OFCI+XRRdbkyo93rWiYVASab2ZGAInUudjMUjTchdOqSd/kYTaEypscntUtG1ldmmF iGdU2G+Amt2pZYf0GtiZOEs4HCxCpbEaw1NNPHSLK9hTNBEEtwllhz63XlHkVwuJSxYo DWfykJ+fe+8nr4qRJ5W7a6Yzz8WHMYWesWDR5kmYVW5b/o+nysm9gHQwFqn+ORGSfOOa vfhZEJFoSuAtlu+AVU5d7W+N6FYGAQc/n6JRaGAbxo876nedFdmF/eaTEgNR/wvYgcYs +hGCzwyf7dWYPU7QyJliLPvjamFGSly/qla1crK1oQ8490ZPfqPkEJPk4FTCUGiccp/c AYPw== X-Gm-Message-State: AHPjjUjare9sdgrtBvWTbk83dSses/dFu67vSRU4HQHda7m+5teg+C74 qZYT5CcBI1AItH42 X-Google-Smtp-Source: ADKCNb7w/buJ4nc+DhsCUKHzTCBFdaaNP11Y7gsBIM41Old6hCFs4vcSJzXKBPVrsn1STdfZdlqrIw== X-Received: by 10.223.154.81 with SMTP id z75mr906771wrb.124.1504555054500; Mon, 04 Sep 2017 12:57:34 -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.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 04 Sep 2017 12:57:33 -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 02/13] thermal/drivers/hisi: Remove the multiple sensors support Date: Mon, 4 Sep 2017 21:56:01 +0200 Message-Id: <1504554972-2624-2-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-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 8381696..725d0d4 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);