From patchwork Fri Sep 22 09:42:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wangtao \(Kevin, Kirin\)" X-Patchwork-Id: 114000 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp3082108qgf; Fri, 22 Sep 2017 02:49:34 -0700 (PDT) X-Google-Smtp-Source: AOwi7QCP1cMkE0PxITN/lcnvsVmO2MOI16ZL4so6Nwg77/ERWFZVSlAVMp0SKo7/6t5T3/gWn5J4 X-Received: by 10.98.89.6 with SMTP id n6mr8542336pfb.27.1506073773892; Fri, 22 Sep 2017 02:49:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506073773; cv=none; d=google.com; s=arc-20160816; b=mTKULcBSASCHiA14Y1V/tDUTnwZFpR+qjrw5TuL7YEQX0MGCV373jZTUjLLiuzi2f1 F9/Y21NInspj03au2TwrE4qlw0qA8OHE6wSDaH6l6E5YB7ISmG48QSRQsESZFdufJbr9 SYg0E6/f7orQonWMyYhdFeAku0ptJn5+FDoS+53yv5EsnmPnlWvk6gw4W8dGaeTEaQGI idLQGy1DzVfBmUj0ij3G6LBla1r5/XdLgMucBGaPP2WUdesRk93Uab4xIq4xcG4oWycO FrlcdePq8qs/LKQp2mZ2v7DS9sT+0w5zJJ+hLt/ycw5pR7N8V+TzmmfRt4PrTzX9uklA vkgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=PdPsBR43mUDLvXvkaOlSYYsAk1rOXQpjiB6dERHCJTo=; b=j4umh56TAPwu+MYktY0xBqbP0R/T7Rplq6jZir4CdFJKb8u0QEKC5sm6rkdzyxclHm UydIJkat2cUw3A8WoFv0Fx1rO66q5xqtRXV2PP+2jezGofRDR+Fsz3DJpyzGBH8vI6XZ 8NGD2KP/kbznLvK8Q/63emGqpev6V4fDeP1cWUJihy4OS/lhBbx1j8VgEYTDs2Xd2OJ7 QSl3p+iZTwiWuLXOweHnVC4ndmXPG2BxWXrOoHU9OjEpDYXEUbIaBwIv6TzRGto4lYHR jdYS5nER9TXTxbhiSVrmBMN/m+m+J2DFQoXa0JUg9nquqBqenKSfRL/NibrSYVmjrIzb ereA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f186si2518011pgc.744.2017.09.22.02.49.33; Fri, 22 Sep 2017 02:49:33 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752128AbdIVJta (ORCPT + 26 others); Fri, 22 Sep 2017 05:49:30 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:6544 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752054AbdIVJtZ (ORCPT ); Fri, 22 Sep 2017 05:49:25 -0400 Received: from 172.30.72.60 (EHLO DGGEMS403-HUB.china.huawei.com) ([172.30.72.60]) by dggrg05-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DHV05218; Fri, 22 Sep 2017 17:49:15 +0800 (CST) Received: from HSH1000038028.huawei.com (10.177.161.152) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.301.0; Fri, 22 Sep 2017 17:49:07 +0800 From: Tao Wang To: , , , , , , CC: , , , , , , , , , , , Kevin Wangtao Subject: [PATCH 1/9] thermal/drivers/hisi: move clk operation to related function Date: Fri, 22 Sep 2017 17:42:04 +0800 Message-ID: <1506073332-92438-2-git-send-email-kevin.wangtao@hisilicon.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> References: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> MIME-Version: 1.0 X-Originating-IP: [10.177.161.152] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020202.59C4DC9B.0117, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 44ffc5a624a2ee0dd4beae52f299aff2 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kevin Wangtao The sensor's clock is enabled and disabled outside of the probe and disable function. Moving the corresponding action in the hisi_thermal_setup() and hisi_thermal_disable_sensor(), factors out some lines of code and makes the code more symmetric. Signed-off-by: Kevin Wangtao --- drivers/thermal/hisi_thermal.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) -- 2.8.1 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index 39f4627..c43e3df 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -203,6 +203,8 @@ static void hisi_thermal_disable_sensor(struct hisi_thermal_data *data) hisi_thermal_enable(data->regs, 0); hisi_thermal_alarm_enable(data->regs, 0); hisi_thermal_reset_enable(data->regs, 0); + + clk_disable_unprepare(data->clk); } static int hisi_thermal_get_temp(void *__data, int *temp) @@ -297,9 +299,13 @@ static void hisi_thermal_toggle_sensor(struct hisi_thermal_sensor *sensor, static int hisi_thermal_setup(struct hisi_thermal_data *data) { - struct hisi_thermal_sensor *sensor; + struct hisi_thermal_sensor *sensor = &data->sensor; + int ret; - sensor = &data->sensor; + /* enable clock for tsensor */ + ret = clk_prepare_enable(data->clk); + if (ret) + return ret; /* disable module firstly */ hisi_thermal_reset_enable(data->regs, 0); @@ -363,13 +369,6 @@ static int hisi_thermal_probe(struct platform_device *pdev) return ret; } - /* enable clock for thermal */ - ret = clk_prepare_enable(data->clk); - if (ret) { - dev_err(&pdev->dev, "failed to enable thermal clk: %d\n", ret); - return ret; - } - ret = hisi_thermal_register_sensor(pdev, data, &data->sensor, HISI_DEFAULT_SENSOR); @@ -405,7 +404,6 @@ static int hisi_thermal_remove(struct platform_device *pdev) hisi_thermal_toggle_sensor(sensor, false); hisi_thermal_disable_sensor(data); - clk_disable_unprepare(data->clk); return 0; } @@ -417,23 +415,14 @@ static int hisi_thermal_suspend(struct device *dev) hisi_thermal_disable_sensor(data); - clk_disable_unprepare(data->clk); - return 0; } static int hisi_thermal_resume(struct device *dev) { struct hisi_thermal_data *data = dev_get_drvdata(dev); - int ret; - ret = clk_prepare_enable(data->clk); - if (ret) - return ret; - - hisi_thermal_setup(data); - - return 0; + return hisi_thermal_setup(data); } #endif From patchwork Fri Sep 22 09:42:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Wangtao \(Kevin, Kirin\)" X-Patchwork-Id: 114007 Delivered-To: patch@linaro.org Received: by 10.80.163.150 with SMTP id s22csp2886060edb; Fri, 22 Sep 2017 02:51:29 -0700 (PDT) X-Google-Smtp-Source: AOwi7QCAvDbruXDYOocsrLNcC2xyC+MTVUIM9c+1r02UMkR4pbv7tG422kLeqtpbExqnooLI6XQM X-Received: by 10.101.69.8 with SMTP id n8mr8709155pgq.167.1506073889203; Fri, 22 Sep 2017 02:51:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506073889; cv=none; d=google.com; s=arc-20160816; b=D5BKvkWe5zKMwJeLMTXGMHcQb90wACjUigmyAfQiNt/zp/e/NvTT57Xgjon59QSZ7e dRUtE6sSb7A3cSvdlMq+oZZKVGWoD0b8+VndXyyy+zNdS2mMtTIXxTKusrTeWUwBST8b 7/UUxcPxk1p96XswpFYTFeutgLIDVGXBPIr0RGL0hnzpjjtiDTDgHRhnxt1tMd6pEX8n 8MmFHPT4RqHf8QN7A0ufwFqIbC+mqeaaj5gtJideOI6/UQqk1CkCOG+K9nmdfrrPeGzK W1lvg9kB/Zti6FsYi3pajlkVWCwcbavNl6YxuNNwc0irOeXatxG34Gb3IPGZCMjEhZ9w Ie0g== 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 :arc-authentication-results; bh=8P6FqYSTX7RhLkK0cTcs+7X5G1tjXM8sr73DVpBUwk0=; b=Oc4nC1O8cci505DFhhCn/Y47os6pPAWym3lpH6qupg57uGHvcFe6bqbaFyYR8UlV3T bauARjZGz69Cs+jHZ7H7ut1XY16UbewjZ/1QmCUImsrbvidIRQjAohLt5lDl9iDpyqTT AvHTdJBZBNpdCHu+D4+BFWmaPilDqLMVgW4qhmJWH4Sb2AiyQS4czUnO5S9tAun+T8BN dQQwF3fuXqdYs5wZdZ31nIvKdAz9NxCwi7bvGMR9Ias3DmAVF6blonrRM9LDvRXZPLo9 Qyng91KE4Zg8RH8pMFH6JwcwvXHzhpfSzjlRjOCipOXIOzNmf33SmjtVnkgcRQZKErPV NVBw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q87si2492153pfa.98.2017.09.22.02.51.28; Fri, 22 Sep 2017 02:51:29 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752258AbdIVJv1 (ORCPT + 26 others); Fri, 22 Sep 2017 05:51:27 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:6974 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751903AbdIVJt1 (ORCPT ); Fri, 22 Sep 2017 05:49:27 -0400 Received: from 172.30.72.58 (EHLO DGGEMS403-HUB.china.huawei.com) ([172.30.72.58]) by dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DHT00602; Fri, 22 Sep 2017 17:49:20 +0800 (CST) Received: from HSH1000038028.huawei.com (10.177.161.152) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.301.0; Fri, 22 Sep 2017 17:49:10 +0800 From: Tao Wang To: , , , , , , CC: , , , , , , , , , , , Kevin Wangtao Subject: [PATCH 2/9] thermal/drivers/hisi: use round up step value Date: Fri, 22 Sep 2017 17:42:05 +0800 Message-ID: <1506073332-92438-3-git-send-email-kevin.wangtao@hisilicon.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> References: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> MIME-Version: 1.0 X-Originating-IP: [10.177.161.152] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A090203.59C4DCA1.004F, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: e149e59e30c9246686733c6e9fa08711 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kevin Wangtao Use round up divide to ensure the programmed value of threshold and lag not less than we set, and in order to keep the accuracy while using round up divide, the step value should also be a round up value. Then there is no need to use hisi_thermal_round_temp. Signed-off-by: Kevin Wangtao --- drivers/thermal/hisi_thermal.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) -- 2.8.1 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index c43e3df..c8b651d 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -40,7 +40,7 @@ #define HISI_TEMP_BASE (-60000) #define HISI_TEMP_RESET (100000) -#define HISI_TEMP_STEP (784) +#define HISI_TEMP_STEP (785) #define HISI_TEMP_LAG (3500) #define HISI_MAX_SENSORS 4 @@ -63,19 +63,19 @@ struct hisi_thermal_data { /* * The temperature computation on the tsensor is as follow: * Unit: millidegree Celsius - * Step: 255/200 (0.7843) + * Step: 200/255 (0.7843) * Temperature base: -60°C * - * The register is programmed in temperature steps, every step is 784 + * The register is programmed in temperature steps, every step is 785 * millidegree and begins at -60 000 m°C * * The temperature from the steps: * - * Temp = TempBase + (steps x 784) + * Temp = TempBase + (steps x 785) * * and the steps from the temperature: * - * steps = (Temp - TempBase) / 784 + * steps = (Temp - TempBase) / 785 * */ static inline int hisi_thermal_step_to_temp(int step) @@ -85,13 +85,7 @@ static inline int hisi_thermal_step_to_temp(int step) static inline int hisi_thermal_temp_to_step(int temp) { - return (temp - HISI_TEMP_BASE) / HISI_TEMP_STEP; -} - -static inline int hisi_thermal_round_temp(int temp) -{ - return hisi_thermal_step_to_temp( - hisi_thermal_temp_to_step(temp)); + return DIV_ROUND_UP(temp - HISI_TEMP_BASE, HISI_TEMP_STEP); } /* @@ -127,7 +121,7 @@ static inline int hisi_thermal_round_temp(int temp) */ static inline void hisi_thermal_set_lag(void __iomem *addr, int value) { - writel((value / HISI_TEMP_STEP) & 0x1F, addr + TEMP0_LAG); + writel(DIV_ROUND_UP(value, HISI_TEMP_STEP) & 0x1F, addr + TEMP0_LAG); } static inline void hisi_thermal_alarm_clear(void __iomem *addr, int value) @@ -274,7 +268,7 @@ static int hisi_thermal_register_sensor(struct platform_device *pdev, for (i = 0; i < of_thermal_get_ntrips(sensor->tzd); i++) { if (trip[i].type == THERMAL_TRIP_PASSIVE) { - sensor->thres_temp = hisi_thermal_round_temp(trip[i].temperature); + sensor->thres_temp = trip[i].temperature; break; } } From patchwork Fri Sep 22 09:42:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wangtao \(Kevin, Kirin\)" X-Patchwork-Id: 114006 Delivered-To: patch@linaro.org Received: by 10.80.163.150 with SMTP id s22csp2885889edb; Fri, 22 Sep 2017 02:51:17 -0700 (PDT) X-Google-Smtp-Source: AOwi7QAHKGXHnIjseD2Ut1JLPijcFGERQc0bX+AKWaKwVB8k3qSxj9rLqVXL2hG6qCrELtImJPG0 X-Received: by 10.159.218.69 with SMTP id x5mr8345660plv.4.1506073876985; Fri, 22 Sep 2017 02:51:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506073876; cv=none; d=google.com; s=arc-20160816; b=HRRU8kpSZjxXUEqXZ8Db6A3qRG8U6r+JjgM8ERFvBurSmQCptTAi5TJZhu6prQ3AuE /LROVcDGWwB6eO4XmXvfceBqFUdOjkvFKwUTDCFctQ9cS36201mICbccrA66fpn1cWws dD2TUkiwcIzE9Ebe6EYkezYvE4RQG4M05EtuBt0+jZVYJ+GK8i1l54SqUuTkblJFlDWl 0pQR49WsxpisWTYNh6kqQxQxEJEntzV5SAPekU0tH2pmpC8/t2IxL+CrUbqUeHN+xMnN zVE9tCgfTh+CAUdTVMAQ/9sLyR3JbYFIpxZ2qRC29a1EzGzknd8AjgGzA91QCLLj9TxY k2bw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=FnEK45JYj427+wk6hp4jDMJwkXhTG2Sml43xCyXHtrE=; b=y2D+UmbmFpImFM1njJRdqKprhc8bz2q7ai9DJ8CaFNZxXqa7oDRVeAh5vqz+bFxl2+ mEqAR4yqACK32P+GRrAuydu/xYLugqcrIgfaC6CR8fnrDkFRkKffHdRhVJKxcxtdh/NC ViOiKvj90RSal8pDW2VIdpoGnnhHEjiRu+wmI9FiCpQc3Rk//kZvRWLL+ZOwdBmlBsra ah/MvB8XRBMLiHBm3nle01iNEvfGYbsvUkEFbd/wQ7ScUIrcVtJdqh3CwcJq+VbC1Xki bd1V++RbK5iVkcA5sK7CYALpsFOktalJVmkDF1tEneI7DFCdzYWnmQwzSo+OISfol2c3 NmvQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q87si2492153pfa.98.2017.09.22.02.51.16; Fri, 22 Sep 2017 02:51:16 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752106AbdIVJt2 (ORCPT + 26 others); Fri, 22 Sep 2017 05:49:28 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:6976 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752051AbdIVJtZ (ORCPT ); Fri, 22 Sep 2017 05:49:25 -0400 Received: from 172.30.72.58 (EHLO DGGEMS403-HUB.china.huawei.com) ([172.30.72.58]) by dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DHT00606; Fri, 22 Sep 2017 17:49:21 +0800 (CST) Received: from HSH1000038028.huawei.com (10.177.161.152) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.301.0; Fri, 22 Sep 2017 17:49:12 +0800 From: Tao Wang To: , , , , , , CC: , , , , , , , , , , , Kevin Wangtao Subject: [PATCH 3/9] thermal/drivers/hisi: put platform code together Date: Fri, 22 Sep 2017 17:42:06 +0800 Message-ID: <1506073332-92438-4-git-send-email-kevin.wangtao@hisilicon.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> References: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> MIME-Version: 1.0 X-Originating-IP: [10.177.161.152] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A090203.59C4DCA1.0147, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: a12a1efced07047c35b9682db7c76b67 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kevin Wangtao reorganize code for follow-up patch, there is no functional change here. Signed-off-by: Kevin Wangtao --- drivers/thermal/hisi_thermal.c | 76 +++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 38 deletions(-) -- 2.8.1 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index c8b651d..96904b4 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -201,6 +201,44 @@ static void hisi_thermal_disable_sensor(struct hisi_thermal_data *data) clk_disable_unprepare(data->clk); } + +static int hisi_thermal_setup(struct hisi_thermal_data *data) +{ + struct hisi_thermal_sensor *sensor = &data->sensor; + int ret; + + /* enable clock for tsensor */ + ret = clk_prepare_enable(data->clk); + if (ret) + return ret; + + /* 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_get_temp(void *__data, int *temp) { struct hisi_thermal_data *data = __data; @@ -291,44 +329,6 @@ 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 = &data->sensor; - int ret; - - /* enable clock for tsensor */ - ret = clk_prepare_enable(data->clk); - if (ret) - return ret; - - /* 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; From patchwork Fri Sep 22 09:42:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Wangtao \(Kevin, Kirin\)" X-Patchwork-Id: 114001 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp3082141qgf; Fri, 22 Sep 2017 02:49:36 -0700 (PDT) X-Google-Smtp-Source: AOwi7QB/BOvN/cT97lpbUNhJuqmMFjYbd/XMaX+FeFIqsC2BGZFLx1Ke1BSH/sFXbk8WAEX6e/s0 X-Received: by 10.98.73.144 with SMTP id r16mr8561043pfi.314.1506073775886; Fri, 22 Sep 2017 02:49:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506073775; cv=none; d=google.com; s=arc-20160816; b=vJui3u4WqQhwn/5kDIWU4mWgjx4PWPnIJr5fHGZZMGOvS+y/byKODwOlWzcF9T32St lfK94aVEOkmtrAflKLMj7gbLsBv+zLUZDA5J3im4qhZCselJChTdDECqViyUYHpYRjJE Xc/P2HU/YOGY64hQNOjIc5fSwKZNHDvXmECcZNkMEkzqLhAD3B1TCmy5c5EMrgFhdTFz mgLWzcN/WeFj9Q2ofnkDhskAImAaLRp6nzNTSIPCbHp0LxUIb8YFNFg2xvlvDjGvQL0M oV2gJez6H36ksaKDYa++0oSx0zEu1BYiBzyN7HBjU5hhd79xAdp9by0G6d58DVxAUdBh ouUQ== 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 :arc-authentication-results; bh=AyDV3BiRmzsRjq8Dg9DcJFUmuUcQUs/MQpASCplskjw=; b=a6laV9f+Hl6p5NP991sY1QP2IW/Aqguhpw3GT2Hg8B+kg56ygWYF+fdDWHYlFAw43G CQOcYyi6RmG/EzlY/7ZCeUMAC09V4WyVMfJVOJkVZZbE0OIukVGmMKZXe/ijHU6dC7Cm +0cqSHLs8ZKmm6E3Y1N8dmWgCbu7xdrZVRDVDsd7SogSNGTdhQaVMYptCQ4oy6fWoZdK howws9u8zLS6Nwh8d3owYthgTWaOVzPqQ2tM6QUEh32IMqZ62UbzoJIRmG1TFgX38UXH 6bLmTyunYGkcv1gVEv5VHuf+8aBg06XERKz+qwJvlKAggg+0ETgNVFNHAgUY3Qxr154A MvVg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v126si2492124pfv.10.2017.09.22.02.49.35; Fri, 22 Sep 2017 02:49:35 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752149AbdIVJtd (ORCPT + 26 others); Fri, 22 Sep 2017 05:49:33 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:6975 "EHLO szxga04-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751878AbdIVJta (ORCPT ); Fri, 22 Sep 2017 05:49:30 -0400 Received: from 172.30.72.58 (EHLO DGGEMS403-HUB.china.huawei.com) ([172.30.72.58]) by dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DHT00605; Fri, 22 Sep 2017 17:49:21 +0800 (CST) Received: from HSH1000038028.huawei.com (10.177.161.152) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.301.0; Fri, 22 Sep 2017 17:49:13 +0800 From: Tao Wang To: , , , , , , CC: , , , , , , , , , , , Kevin Wangtao Subject: [PATCH 4/9] thermal/drivers/hisi: add platform prefix to function name Date: Fri, 22 Sep 2017 17:42:07 +0800 Message-ID: <1506073332-92438-5-git-send-email-kevin.wangtao@hisilicon.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> References: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> MIME-Version: 1.0 X-Originating-IP: [10.177.161.152] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A090203.59C4DCA1.00E6, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: a79e6ef65765157cbeb38e020f9f0cff Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kevin Wangtao reorganize code for follow-up patch, there is no functional change here. Signed-off-by: Kevin Wangtao --- drivers/thermal/hisi_thermal.c | 145 +++++++++++++++++++++-------------------- 1 file changed, 73 insertions(+), 72 deletions(-) -- 2.8.1 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index 96904b4..4635839 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -26,25 +26,24 @@ #include "thermal_core.h" -#define TEMP0_LAG (0x0) -#define TEMP0_TH (0x4) -#define TEMP0_RST_TH (0x8) -#define TEMP0_CFG (0xC) -#define TEMP0_CFG_SS_MSK (0xF000) -#define TEMP0_CFG_HDAK_MSK (0x30) -#define TEMP0_EN (0x10) -#define TEMP0_INT_EN (0x14) -#define TEMP0_INT_CLR (0x18) -#define TEMP0_RST_MSK (0x1C) -#define TEMP0_VALUE (0x28) - -#define HISI_TEMP_BASE (-60000) -#define HISI_TEMP_RESET (100000) -#define HISI_TEMP_STEP (785) -#define HISI_TEMP_LAG (3500) - -#define HISI_MAX_SENSORS 4 -#define HISI_DEFAULT_SENSOR 2 +#define HI6220_TEMP0_LAG (0x0) +#define HI6220_TEMP0_TH (0x4) +#define HI6220_TEMP0_RST_TH (0x8) +#define HI6220_TEMP0_CFG (0xC) +#define HI6220_TEMP0_CFG_SS_MSK (0xF000) +#define HI6220_TEMP0_CFG_HDAK_MSK (0x30) +#define HI6220_TEMP0_EN (0x10) +#define HI6220_TEMP0_INT_EN (0x14) +#define HI6220_TEMP0_INT_CLR (0x18) +#define HI6220_TEMP0_RST_MSK (0x1C) +#define HI6220_TEMP0_VALUE (0x28) + +#define HI6220_TEMP_BASE (-60000) +#define HI6220_TEMP_RESET (100000) +#define HI6220_TEMP_STEP (785) +#define HI6220_TEMP_LAG (3500) + +#define HI6220_DEFAULT_SENSOR 2 struct hisi_thermal_sensor { struct thermal_zone_device *tzd; @@ -78,14 +77,14 @@ struct hisi_thermal_data { * steps = (Temp - TempBase) / 785 * */ -static inline int hisi_thermal_step_to_temp(int step) +static inline int hi6220_thermal_step_to_temp(int step) { - return HISI_TEMP_BASE + (step * HISI_TEMP_STEP); + return HI6220_TEMP_BASE + (step * HI6220_TEMP_STEP); } -static inline int hisi_thermal_temp_to_step(int temp) +static inline int hi6220_thermal_temp_to_step(int temp) { - return DIV_ROUND_UP(temp - HISI_TEMP_BASE, HISI_TEMP_STEP); + return DIV_ROUND_UP(temp - HI6220_TEMP_BASE, HI6220_TEMP_STEP); } /* @@ -112,51 +111,53 @@ static inline int hisi_thermal_temp_to_step(int temp) * * [0:4] : lag register * - * The temperature is coded in steps, cf. HISI_TEMP_STEP. + * The temperature is coded in steps, cf. HI6220_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) +static inline void hi6220_thermal_set_lag(void __iomem *addr, int value) { - writel(DIV_ROUND_UP(value, HISI_TEMP_STEP) & 0x1F, addr + TEMP0_LAG); + writel(DIV_ROUND_UP(value, HI6220_TEMP_STEP) & 0x1F, + addr + HI6220_TEMP0_LAG); } -static inline void hisi_thermal_alarm_clear(void __iomem *addr, int value) +static inline void hi6220_thermal_alarm_clear(void __iomem *addr, int value) { - writel(value, addr + TEMP0_INT_CLR); + writel(value, addr + HI6220_TEMP0_INT_CLR); } -static inline void hisi_thermal_alarm_enable(void __iomem *addr, int value) +static inline void hi6220_thermal_alarm_enable(void __iomem *addr, int value) { - writel(value, addr + TEMP0_INT_EN); + writel(value, addr + HI6220_TEMP0_INT_EN); } -static inline void hisi_thermal_alarm_set(void __iomem *addr, int temp) +static inline void hi6220_thermal_alarm_set(void __iomem *addr, int temp) { - writel(hisi_thermal_temp_to_step(temp) | 0x0FFFFFF00, addr + TEMP0_TH); + writel(hi6220_thermal_temp_to_step(temp) | 0x0FFFFFF00, + addr + HI6220_TEMP0_TH); } -static inline void hisi_thermal_reset_set(void __iomem *addr, int temp) +static inline void hi6220_thermal_reset_set(void __iomem *addr, int temp) { - writel(hisi_thermal_temp_to_step(temp), addr + TEMP0_RST_TH); + writel(hi6220_thermal_temp_to_step(temp), addr + HI6220_TEMP0_RST_TH); } -static inline void hisi_thermal_reset_enable(void __iomem *addr, int value) +static inline void hi6220_thermal_reset_enable(void __iomem *addr, int value) { - writel(value, addr + TEMP0_RST_MSK); + writel(value, addr + HI6220_TEMP0_RST_MSK); } -static inline void hisi_thermal_enable(void __iomem *addr, int value) +static inline void hi6220_thermal_enable(void __iomem *addr, int value) { - writel(value, addr + TEMP0_EN); + writel(value, addr + HI6220_TEMP0_EN); } -static inline int hisi_thermal_get_temperature(void __iomem *addr) +static inline int hi6220_thermal_get_temperature(void __iomem *addr) { - return hisi_thermal_step_to_temp(readl(addr + TEMP0_VALUE)); + return hi6220_thermal_step_to_temp(readl(addr + HI6220_TEMP0_VALUE)); } /* @@ -169,10 +170,10 @@ static inline int hisi_thermal_get_temperature(void __iomem *addr) * 0x2: remote sensor 2 (ACPU cluster 0) * 0x3: remote sensor 3 (G3D) */ -static inline void hisi_thermal_sensor_select(void __iomem *addr, int sensor) +static inline void hi6220_thermal_sensor_select(void __iomem *addr, int sensor) { - writel((readl(addr + TEMP0_CFG) & ~TEMP0_CFG_SS_MSK ) | - (sensor << 12), addr + TEMP0_CFG); + writel((readl(addr + HI6220_TEMP0_CFG) & ~HI6220_TEMP0_CFG_SS_MSK) | + (sensor << 12), addr + HI6220_TEMP0_CFG); } /* @@ -185,24 +186,24 @@ static inline void hisi_thermal_sensor_select(void __iomem *addr, int sensor) * 0x2 : 49.152 ms * 0x3 : 393.216 ms */ -static inline void hisi_thermal_hdak_set(void __iomem *addr, int value) +static inline void hi6220_thermal_hdak_set(void __iomem *addr, int value) { - writel((readl(addr + TEMP0_CFG) & ~TEMP0_CFG_HDAK_MSK) | - (value << 4), addr + TEMP0_CFG); + writel((readl(addr + HI6220_TEMP0_CFG) & ~HI6220_TEMP0_CFG_HDAK_MSK) | + (value << 4), addr + HI6220_TEMP0_CFG); } -static void hisi_thermal_disable_sensor(struct hisi_thermal_data *data) +static void hi6220_thermal_disable_sensor(struct hisi_thermal_data *data) { /* disable sensor module */ - hisi_thermal_enable(data->regs, 0); - hisi_thermal_alarm_enable(data->regs, 0); - hisi_thermal_reset_enable(data->regs, 0); + hi6220_thermal_enable(data->regs, 0); + hi6220_thermal_alarm_enable(data->regs, 0); + hi6220_thermal_reset_enable(data->regs, 0); clk_disable_unprepare(data->clk); } -static int hisi_thermal_setup(struct hisi_thermal_data *data) +static int hi6220_thermal_enable_sensor(struct hisi_thermal_data *data) { struct hisi_thermal_sensor *sensor = &data->sensor; int ret; @@ -213,29 +214,29 @@ static int hisi_thermal_setup(struct hisi_thermal_data *data) return ret; /* disable module firstly */ - hisi_thermal_reset_enable(data->regs, 0); - hisi_thermal_enable(data->regs, 0); + hi6220_thermal_reset_enable(data->regs, 0); + hi6220_thermal_enable(data->regs, 0); /* select sensor id */ - hisi_thermal_sensor_select(data->regs, sensor->id); + hi6220_thermal_sensor_select(data->regs, sensor->id); /* setting the hdak time */ - hisi_thermal_hdak_set(data->regs, 0); + hi6220_thermal_hdak_set(data->regs, 0); /* setting lag value between current temp and the threshold */ - hisi_thermal_set_lag(data->regs, HISI_TEMP_LAG); + hi6220_thermal_set_lag(data->regs, HI6220_TEMP_LAG); /* enable for interrupt */ - hisi_thermal_alarm_set(data->regs, sensor->thres_temp); + hi6220_thermal_alarm_set(data->regs, sensor->thres_temp); - hisi_thermal_reset_set(data->regs, HISI_TEMP_RESET); + hi6220_thermal_reset_set(data->regs, HI6220_TEMP_RESET); /* enable module */ - hisi_thermal_reset_enable(data->regs, 1); - hisi_thermal_enable(data->regs, 1); + hi6220_thermal_reset_enable(data->regs, 1); + hi6220_thermal_enable(data->regs, 1); - hisi_thermal_alarm_clear(data->regs, 0); - hisi_thermal_alarm_enable(data->regs, 1); + hi6220_thermal_alarm_clear(data->regs, 0); + hi6220_thermal_alarm_enable(data->regs, 1); return 0; } @@ -244,7 +245,7 @@ static int hisi_thermal_get_temp(void *__data, int *temp) struct hisi_thermal_data *data = __data; struct hisi_thermal_sensor *sensor = &data->sensor; - *temp = hisi_thermal_get_temperature(data->regs); + *temp = hi6220_thermal_get_temperature(data->regs); dev_dbg(&data->pdev->dev, "id=%d, temp=%d, thres=%d\n", sensor->id, *temp, sensor->thres_temp); @@ -260,11 +261,11 @@ static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev) { struct hisi_thermal_data *data = dev; struct hisi_thermal_sensor *sensor = &data->sensor; - int temp; + int temp = 0; - hisi_thermal_alarm_clear(data->regs, 1); + hi6220_thermal_alarm_clear(data->regs, 1); - temp = hisi_thermal_get_temperature(data->regs); + hisi_thermal_get_temp(data, &temp); if (temp >= sensor->thres_temp) { dev_crit(&data->pdev->dev, "THERMAL ALARM: %d > %d\n", @@ -273,7 +274,7 @@ static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev) thermal_zone_device_update(data->sensor.tzd, THERMAL_EVENT_UNSPECIFIED); - } else if (temp < sensor->thres_temp) { + } else { dev_crit(&data->pdev->dev, "THERMAL ALARM stopped: %d < %d\n", temp, sensor->thres_temp); } @@ -365,14 +366,14 @@ static int hisi_thermal_probe(struct platform_device *pdev) ret = hisi_thermal_register_sensor(pdev, data, &data->sensor, - HISI_DEFAULT_SENSOR); + HI6220_DEFAULT_SENSOR); if (ret) { dev_err(&pdev->dev, "failed to register thermal sensor: %d\n", ret); return ret; } - ret = hisi_thermal_setup(data); + ret = hi6220_thermal_enable_sensor(data); if (ret) { dev_err(&pdev->dev, "Failed to setup the sensor: %d\n", ret); return ret; @@ -397,7 +398,7 @@ static int hisi_thermal_remove(struct platform_device *pdev) struct hisi_thermal_sensor *sensor = &data->sensor; hisi_thermal_toggle_sensor(sensor, false); - hisi_thermal_disable_sensor(data); + hi6220_thermal_disable_sensor(data); return 0; } @@ -407,7 +408,7 @@ static int hisi_thermal_suspend(struct device *dev) { struct hisi_thermal_data *data = dev_get_drvdata(dev); - hisi_thermal_disable_sensor(data); + hi6220_thermal_disable_sensor(data); return 0; } @@ -416,7 +417,7 @@ static int hisi_thermal_resume(struct device *dev) { struct hisi_thermal_data *data = dev_get_drvdata(dev); - return hisi_thermal_setup(data); + return hi6220_thermal_enable_sensor(data); } #endif From patchwork Fri Sep 22 09:42:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wangtao \(Kevin, Kirin\)" X-Patchwork-Id: 114005 Delivered-To: patch@linaro.org Received: by 10.80.163.150 with SMTP id s22csp2885504edb; Fri, 22 Sep 2017 02:50:44 -0700 (PDT) X-Google-Smtp-Source: AOwi7QBEKxHsf0BH8q/y564GyGnS4L5baF/krDj4ypTsuA7KEMTEemTaNMv1RJjvca4XpyyClXHd X-Received: by 10.84.129.226 with SMTP id b89mr8571065plb.42.1506073844180; Fri, 22 Sep 2017 02:50:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506073844; cv=none; d=google.com; s=arc-20160816; b=Rx4ybXtBd0LfdtMrjcn/YGA8CPbyuQtMReU8iydl1k2+QNs50RPOYXO5k8muvPpYjv UP6vP8cCGpYouXGiwyZGBl3LgzjEwyChOTG8WGQTZr5LEx5mvG69FHSIrqNs/VIUhhOg U7C+GjBQni4PiIRznFlRzrVCQJ1Upes+o8ONCsmDFC3CnXA7z2qhKxy5X2fVyG5Pl3Ao lMjVIIPz4pgs6edF4HKW1zSxpdn5C6JbhnOe6JH4GGiXM8D2iS4Sb1XebWsAI37DIosI XYu7Qq37ga4C+17On/84WDzVwkTjxJHz5xR2V51SQSgthq3vzIr1I3PvcWqiB9k3vwqA 7q3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=yJRSHyga5jmf+5VF3/Av9pmCQW8lOle3Z3buQhf2OYo=; b=kD7qw2rljqtJ0tofYNDGAMtP1d+1OZHMRj5LYbYSx50e4xJFdWvOpnxO3Xkxsi5huu C/cRgG+skePBS5ENouLQEW3MewGIIfnA39zxT4FNkW/ZNL90vAUGNgud+4TiiSYa/MjI 4GVbOn0N9mkCXRmjT1/B3dbp4kDDciMInjZco5e5cpbxjKZ55ixupdmNxymw8ihsi0rK btcjH2ApAZB2j5bZgm4dP75g9CHvOfu+79FWhQuJdSBDVdnFaMuFECm6YAu1C2RdKMQG Ca70P8jy+xrcI6eXqRi1dlelmd27ivYX2N55a+HKKQU1AqX8A3mrGq7hKQ+e12jrjJhh 0UwQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k67si2538008pgc.218.2017.09.22.02.50.43; Fri, 22 Sep 2017 02:50:44 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752217AbdIVJum (ORCPT + 26 others); Fri, 22 Sep 2017 05:50:42 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:6546 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752083AbdIVJt2 (ORCPT ); Fri, 22 Sep 2017 05:49:28 -0400 Received: from 172.30.72.58 (EHLO DGGEMS403-HUB.china.huawei.com) ([172.30.72.58]) by dggrg05-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DHV05248; Fri, 22 Sep 2017 17:49:26 +0800 (CST) Received: from HSH1000038028.huawei.com (10.177.161.152) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.301.0; Fri, 22 Sep 2017 17:49:14 +0800 From: Tao Wang To: , , , , , , CC: , , , , , , , , , , , Kevin Wangtao Subject: [PATCH 5/9] thermal/drivers/hisi: perpare to add support for other hisi platform Date: Fri, 22 Sep 2017 17:42:08 +0800 Message-ID: <1506073332-92438-6-git-send-email-kevin.wangtao@hisilicon.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> References: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> MIME-Version: 1.0 X-Originating-IP: [10.177.161.152] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020204.59C4DCA6.00AA, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 09c0c9076d90cede7dfc21908717515a Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kevin Wangtao For platform compatibility, add tsensor operation function pointer to thermal data, and each platform has its own probe function to register proper tsensor operation function to the pointer, platform related resource request are also implemented in the platform probe function. Signed-off-by: Kevin Wangtao --- drivers/thermal/hisi_thermal.c | 135 +++++++++++++++++++++++++++-------------- 1 file changed, 89 insertions(+), 46 deletions(-) -- 2.8.1 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index 4635839..f9d9fd6 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "thermal_core.h" @@ -30,7 +31,7 @@ #define HI6220_TEMP0_TH (0x4) #define HI6220_TEMP0_RST_TH (0x8) #define HI6220_TEMP0_CFG (0xC) -#define HI6220_TEMP0_CFG_SS_MSK (0xF000) +#define HI6220_TEMP0_CFG_SS_MSK (0xF000) #define HI6220_TEMP0_CFG_HDAK_MSK (0x30) #define HI6220_TEMP0_EN (0x10) #define HI6220_TEMP0_INT_EN (0x14) @@ -41,7 +42,7 @@ #define HI6220_TEMP_BASE (-60000) #define HI6220_TEMP_RESET (100000) #define HI6220_TEMP_STEP (785) -#define HI6220_TEMP_LAG (3500) +#define HI6220_TEMP_LAG (3500) #define HI6220_DEFAULT_SENSOR 2 @@ -52,6 +53,10 @@ struct hisi_thermal_sensor { }; struct hisi_thermal_data { + int (*get_temp)(struct hisi_thermal_data *data); + int (*enable_sensor)(struct hisi_thermal_data *data); + int (*disable_sensor)(struct hisi_thermal_data *data); + int (*irq_handler)(struct hisi_thermal_data *data); struct platform_device *pdev; struct clk *clk; struct hisi_thermal_sensor sensor; @@ -59,6 +64,7 @@ struct hisi_thermal_data { int irq; }; + /* * The temperature computation on the tsensor is as follow: * Unit: millidegree Celsius @@ -192,7 +198,18 @@ static inline void hi6220_thermal_hdak_set(void __iomem *addr, int value) (value << 4), addr + HI6220_TEMP0_CFG); } -static void hi6220_thermal_disable_sensor(struct hisi_thermal_data *data) +static int hi6220_thermal_irq_handler(struct hisi_thermal_data *data) +{ + hi6220_thermal_alarm_clear(data->regs, 1); + return 0; +} + +static int hi6220_thermal_get_temp(struct hisi_thermal_data *data) +{ + return hi6220_thermal_get_temperature(data->regs); +} + +static int hi6220_thermal_disable_sensor(struct hisi_thermal_data *data) { /* disable sensor module */ hi6220_thermal_enable(data->regs, 0); @@ -200,9 +217,9 @@ static void hi6220_thermal_disable_sensor(struct hisi_thermal_data *data) hi6220_thermal_reset_enable(data->regs, 0); clk_disable_unprepare(data->clk); + return 0; } - static int hi6220_thermal_enable_sensor(struct hisi_thermal_data *data) { struct hisi_thermal_sensor *sensor = &data->sensor; @@ -240,12 +257,50 @@ static int hi6220_thermal_enable_sensor(struct hisi_thermal_data *data) return 0; } + +static int hi6220_thermal_probe(struct hisi_thermal_data *data) +{ + struct platform_device *pdev = data->pdev; + struct device *dev = &pdev->dev; + struct resource *res; + int ret; + + data->get_temp = hi6220_thermal_get_temp; + data->enable_sensor = hi6220_thermal_enable_sensor; + data->disable_sensor = hi6220_thermal_disable_sensor; + data->irq_handler = hi6220_thermal_irq_handler; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + data->regs = devm_ioremap_resource(dev, res); + if (IS_ERR(data->regs)) { + dev_err(dev, "failed to get io address\n"); + return PTR_ERR(data->regs); + } + + data->clk = devm_clk_get(dev, "thermal_clk"); + if (IS_ERR(data->clk)) { + ret = PTR_ERR(data->clk); + if (ret != -EPROBE_DEFER) + dev_err(dev, "failed to get thermal clk: %d\n", ret); + return ret; + } + + data->irq = platform_get_irq(pdev, 0); + if (data->irq < 0) + return data->irq; + + data->sensor.id = HI6220_DEFAULT_SENSOR; + + return 0; +} + + static int hisi_thermal_get_temp(void *__data, int *temp) { struct hisi_thermal_data *data = __data; struct hisi_thermal_sensor *sensor = &data->sensor; - *temp = hi6220_thermal_get_temperature(data->regs); + *temp = data->get_temp(data); dev_dbg(&data->pdev->dev, "id=%d, temp=%d, thres=%d\n", sensor->id, *temp, sensor->thres_temp); @@ -263,7 +318,7 @@ static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev) struct hisi_thermal_sensor *sensor = &data->sensor; int temp = 0; - hi6220_thermal_alarm_clear(data->regs, 1); + data->irq_handler(data); hisi_thermal_get_temp(data, &temp); @@ -284,14 +339,11 @@ static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev) static int hisi_thermal_register_sensor(struct platform_device *pdev, struct hisi_thermal_data *data, - struct hisi_thermal_sensor *sensor, - int index) + struct hisi_thermal_sensor *sensor) { int ret, i; const struct thermal_trip *trip; - sensor->id = index; - sensor->tzd = devm_thermal_zone_of_sensor_register(&pdev->dev, sensor->id, data, &hisi_of_thermal_ops); @@ -316,7 +368,7 @@ static int hisi_thermal_register_sensor(struct platform_device *pdev, } static const struct of_device_id of_hisi_thermal_match[] = { - { .compatible = "hisilicon,tsensor" }, + { .compatible = "hisilicon,tsensor", .data = hi6220_thermal_probe }, { /* end */ } }; MODULE_DEVICE_TABLE(of, of_hisi_thermal_match); @@ -333,58 +385,48 @@ static void hisi_thermal_toggle_sensor(struct hisi_thermal_sensor *sensor, static int hisi_thermal_probe(struct platform_device *pdev) { struct hisi_thermal_data *data; - struct resource *res; + int (*platform_probe)(struct hisi_thermal_data *); + struct device *dev = &pdev->dev; int ret; - data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); + data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); if (!data) return -ENOMEM; data->pdev = pdev; + platform_set_drvdata(pdev, data); - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - data->regs = devm_ioremap_resource(&pdev->dev, res); - if (IS_ERR(data->regs)) { - dev_err(&pdev->dev, "failed to get io address\n"); - return PTR_ERR(data->regs); + platform_probe = of_device_get_match_data(dev); + if (!platform_probe) { + dev_err(dev, "failed to get probe func\n"); + return -EINVAL; } - data->irq = platform_get_irq(pdev, 0); - if (data->irq < 0) - return data->irq; - - platform_set_drvdata(pdev, data); - - data->clk = devm_clk_get(&pdev->dev, "thermal_clk"); - if (IS_ERR(data->clk)) { - ret = PTR_ERR(data->clk); - if (ret != -EPROBE_DEFER) - dev_err(&pdev->dev, - "failed to get thermal clk: %d\n", ret); + ret = platform_probe(data); + if (ret) return ret; - } ret = hisi_thermal_register_sensor(pdev, data, - &data->sensor, - HI6220_DEFAULT_SENSOR); + &data->sensor); if (ret) { - dev_err(&pdev->dev, "failed to register thermal sensor: %d\n", - ret); + dev_err(dev, "failed to register thermal sensor: %d\n", ret); return ret; } - ret = hi6220_thermal_enable_sensor(data); + ret = data->enable_sensor(data); if (ret) { - dev_err(&pdev->dev, "Failed to setup the sensor: %d\n", ret); + dev_err(dev, "Failed to setup the sensor: %d\n", ret); return ret; } - ret = devm_request_threaded_irq(&pdev->dev, data->irq, NULL, - hisi_thermal_alarm_irq_thread, - IRQF_ONESHOT, "hisi_thermal", data); - if (ret < 0) { - dev_err(&pdev->dev, "failed to request alarm irq: %d\n", ret); - return ret; + if (data->irq) { + ret = devm_request_threaded_irq(dev, data->irq, NULL, + hisi_thermal_alarm_irq_thread, + IRQF_ONESHOT, "hisi_thermal", data); + if (ret < 0) { + dev_err(dev, "failed to request alarm irq: %d\n", ret); + return ret; + } } hisi_thermal_toggle_sensor(&data->sensor, true); @@ -398,7 +440,8 @@ static int hisi_thermal_remove(struct platform_device *pdev) struct hisi_thermal_sensor *sensor = &data->sensor; hisi_thermal_toggle_sensor(sensor, false); - hi6220_thermal_disable_sensor(data); + + data->disable_sensor(data); return 0; } @@ -408,7 +451,7 @@ static int hisi_thermal_suspend(struct device *dev) { struct hisi_thermal_data *data = dev_get_drvdata(dev); - hi6220_thermal_disable_sensor(data); + data->disable_sensor(data); return 0; } @@ -417,7 +460,7 @@ static int hisi_thermal_resume(struct device *dev) { struct hisi_thermal_data *data = dev_get_drvdata(dev); - return hi6220_thermal_enable_sensor(data); + return data->enable_sensor(data); } #endif From patchwork Fri Sep 22 09:42:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wangtao \(Kevin, Kirin\)" X-Patchwork-Id: 114008 Delivered-To: patch@linaro.org Received: by 10.80.163.150 with SMTP id s22csp2888499edb; Fri, 22 Sep 2017 02:54:50 -0700 (PDT) X-Google-Smtp-Source: AOwi7QBIC/MRU+ZMUDy8zk6WLjFrC6v1uHIg98G0n3L4YUOHdobTBheo8Yyzi5QXmRzntx4n8yus X-Received: by 10.99.1.81 with SMTP id 78mr8520542pgb.99.1506074089944; Fri, 22 Sep 2017 02:54:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506074089; cv=none; d=google.com; s=arc-20160816; b=NOGx6xLsStKmQiYSI3OFy8mcdIIhimF6RG2nSG4NxSfhD6qveZVKmP8yk4Ln4V14L/ oRlKETl7i/0rGbkz+nP60ARNCKjm3tTwu8sksgabCR9PF6BtHnGGhzAbtb8yaiBh640u Ns9wy0gBDxHyzdpSIywxiBu3JQa1WJ75UGM5yyAw+gOWg7d9dQIZxXapcn+cgjCI7CWU tCQX0L0T5+il08mpuvgvq2mWKlpJetazI4DDqu7LaNgCGFoZ+HY92ToavJOKd5/mgFnd Fmu9LDHT5YDEvNMnj7xjhcfzcfJ7LILO9m+W0Mt4+VV4hm+A8hgTXHzGHq/7UzjCcRp6 zMvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=MTlJldRY/yO87whmS7oKlnZpKbutKFepz6O0Y/q6i1E=; b=CniEWbqy14hie6fvrPD+O1AkLKqhUxkuFNu0fd9QASdQHZSrrnxDFQTbJ3I4t94QXY pdaYkO+MQO3lft7gGiI9PBVqEZTYmBC9wFGKWYtZv/ZmMTTcM0HUQEfBeXpcIsrYkZnn kc8STaYqQfo4GVcs1Hmv6/g+ylaRg9Ppq0u41PfXfKSyp0GrbD3XXyIEtROu4KHONOb4 6pyuXto+3nxBCh/vr0wxIY9BzroX1D6ns7P0vo3mhWZ+bw1ycf7ZqmI5FWatGkvfjh7e HZ8OK1BFnmyQ8zMIeFNapRUfzMNOaTwjh+8MS35iWsGQfKbb98vd19plWlE4fqHhMmLz Sr9w== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 70si2617572ple.548.2017.09.22.02.54.49; Fri, 22 Sep 2017 02:54:49 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752156AbdIVJys (ORCPT + 26 others); Fri, 22 Sep 2017 05:54:48 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:6554 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751826AbdIVJyq (ORCPT ); Fri, 22 Sep 2017 05:54:46 -0400 Received: from 172.30.72.58 (EHLO DGGEMS403-HUB.china.huawei.com) ([172.30.72.58]) by dggrg05-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DHV05249; Fri, 22 Sep 2017 17:49:26 +0800 (CST) Received: from HSH1000038028.huawei.com (10.177.161.152) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.301.0; Fri, 22 Sep 2017 17:49:16 +0800 From: Tao Wang To: , , , , , , CC: , , , , , , , , , , , Kevin Wangtao Subject: [PATCH 6/9] thermal/drivers/hisi: add support for multi temp threshold Date: Fri, 22 Sep 2017 17:42:09 +0800 Message-ID: <1506073332-92438-7-git-send-email-kevin.wangtao@hisilicon.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> References: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> MIME-Version: 1.0 X-Originating-IP: [10.177.161.152] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020201.59C4DCA6.00E8, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 4d35f796d4f5e443e0243aa8851269ab Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kevin Wangtao tsensor may have multi alarm levels, so we can support more trip point interrupt. Signed-off-by: Kevin Wangtao --- drivers/thermal/hisi_thermal.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) -- 2.8.1 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index f9d9fd6..718376b 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -46,10 +46,12 @@ #define HI6220_DEFAULT_SENSOR 2 +#define MAX_THRES_NUM 2 + struct hisi_thermal_sensor { struct thermal_zone_device *tzd; uint32_t id; - uint32_t thres_temp; + uint32_t thres_temp[MAX_THRES_NUM]; }; struct hisi_thermal_data { @@ -244,7 +246,7 @@ static int hi6220_thermal_enable_sensor(struct hisi_thermal_data *data) hi6220_thermal_set_lag(data->regs, HI6220_TEMP_LAG); /* enable for interrupt */ - hi6220_thermal_alarm_set(data->regs, sensor->thres_temp); + hi6220_thermal_alarm_set(data->regs, sensor->thres_temp[0]); hi6220_thermal_reset_set(data->regs, HI6220_TEMP_RESET); @@ -303,7 +305,7 @@ static int hisi_thermal_get_temp(void *__data, int *temp) *temp = data->get_temp(data); dev_dbg(&data->pdev->dev, "id=%d, temp=%d, thres=%d\n", - sensor->id, *temp, sensor->thres_temp); + sensor->id, *temp, sensor->thres_temp[0]); return 0; } @@ -322,16 +324,16 @@ static irqreturn_t hisi_thermal_alarm_irq_thread(int irq, void *dev) hisi_thermal_get_temp(data, &temp); - if (temp >= sensor->thres_temp) { + if (temp >= sensor->thres_temp[0]) { dev_crit(&data->pdev->dev, "THERMAL ALARM: %d > %d\n", - temp, sensor->thres_temp); + temp, sensor->thres_temp[0]); thermal_zone_device_update(data->sensor.tzd, THERMAL_EVENT_UNSPECIFIED); } else { dev_crit(&data->pdev->dev, "THERMAL ALARM stopped: %d < %d\n", - temp, sensor->thres_temp); + temp, sensor->thres_temp[0]); } return IRQ_HANDLED; @@ -341,7 +343,7 @@ static int hisi_thermal_register_sensor(struct platform_device *pdev, struct hisi_thermal_data *data, struct hisi_thermal_sensor *sensor) { - int ret, i; + int ret, i, thres_idx = 0; const struct thermal_trip *trip; sensor->tzd = devm_thermal_zone_of_sensor_register(&pdev->dev, @@ -359,8 +361,9 @@ static int hisi_thermal_register_sensor(struct platform_device *pdev, for (i = 0; i < of_thermal_get_ntrips(sensor->tzd); i++) { if (trip[i].type == THERMAL_TRIP_PASSIVE) { - sensor->thres_temp = trip[i].temperature; - break; + sensor->thres_temp[thres_idx++] = trip[i].temperature; + if (thres_idx >= MAX_THRES_NUM) + break; } } From patchwork Fri Sep 22 09:42:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wangtao \(Kevin, Kirin\)" X-Patchwork-Id: 114003 Delivered-To: patch@linaro.org Received: by 10.80.163.150 with SMTP id s22csp2885119edb; Fri, 22 Sep 2017 02:50:12 -0700 (PDT) X-Google-Smtp-Source: AOwi7QAPpoXwo7Cre93KIhNyP2Oocv97HreEx1Z27EuBLJJhN83OffNL/Q4YNJY5pATq/2f0a+JP X-Received: by 10.98.186.6 with SMTP id k6mr6410670pff.166.1506073812490; Fri, 22 Sep 2017 02:50:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506073812; cv=none; d=google.com; s=arc-20160816; b=ig8UDDIjEQIsHFwu6+tf1UuZRP4IYE4C0Qq0mghGdEkb2Sd6i+9RjONeqSamnE6oRI R1g34SH4ozwQq63p7ZhAP9gekaJMfy08sCWsKhUz+WskGfTqIiI/GlO+zvPxcJXP42Ag SoVfaBejJMnegjdYvGeh+hlZjKBhfiBfKe68IwxkWkjCr6tAvORJmyWpF+hfSdq+KO6Z YLZ6JwHsjMDSSCu72wPb2xoBvyJ9v3BOlkmDBIWQ3EztepkUckqqllzA1U5qIhTfLv21 qN+UmELpiE43vohmWbeOeQoGH98tRDOfXDJRFPMnilVCKO04Q9MAdb+D9bQJxdY0f2Uh PA/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=g61ksbZGGrz2W+v93vAIDI7eSl6B5T2idK5kXOQiTjE=; b=0RXJp3xa0BCpQqMjRuNyOWyymDCc2unKFjHwznGwEt6WohZSdYXg52Jrl/C5ZnAELr vyl4IZY82NYpDzP4PkMV8iOC+L9iAg/a52PnYCJDI+X+R68EaWGzVI51wNYFBFPSwGmY DFduyFwWhH8CPqqg3CVmI5gKDMu9oHXQHDcEgLIXtNYJu0tzO6fbN++SyragDLkFAjsu V6zb3KugZmfT/iQFZZba37itohHoX0F3yK/oUjwF1XXsFYWNRhCezVFivzQ6hOaB6gw0 Sdv7daNP6VY5Q8tupmDCl/j6gdmQv0xqCHTzve8GLI7fqxlCDJAP1rEflonVf2xk8mFW KifA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s81si2562418pfg.96.2017.09.22.02.50.09; Fri, 22 Sep 2017 02:50:12 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752181AbdIVJuI (ORCPT + 26 others); Fri, 22 Sep 2017 05:50:08 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:6548 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752091AbdIVJt3 (ORCPT ); Fri, 22 Sep 2017 05:49:29 -0400 Received: from 172.30.72.58 (EHLO DGGEMS403-HUB.china.huawei.com) ([172.30.72.58]) by dggrg05-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DHV05250; Fri, 22 Sep 2017 17:49:26 +0800 (CST) Received: from HSH1000038028.huawei.com (10.177.161.152) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.301.0; Fri, 22 Sep 2017 17:49:17 +0800 From: Tao Wang To: , , , , , , CC: , , , , , , , , , , , Kevin Wangtao Subject: [PATCH 7/9] dt-bindings: Document the hi3660 thermal sensor binding Date: Fri, 22 Sep 2017 17:42:10 +0800 Message-ID: <1506073332-92438-8-git-send-email-kevin.wangtao@hisilicon.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> References: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> MIME-Version: 1.0 X-Originating-IP: [10.177.161.152] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020201.59C4DCA7.0011, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 39fc0f64840947bf4c6b1c67c96df37e Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kevin Wangtao This adds documentation of device tree bindings for the thermal sensor controller of hi3660 SoC. Signed-off-by: Kevin Wangtao --- Documentation/devicetree/bindings/thermal/hisilicon-thermal.txt | 9 +++++++++ 1 file changed, 9 insertions(+) -- 2.8.1 diff --git a/Documentation/devicetree/bindings/thermal/hisilicon-thermal.txt b/Documentation/devicetree/bindings/thermal/hisilicon-thermal.txt index d48fc52..cef716a 100644 --- a/Documentation/devicetree/bindings/thermal/hisilicon-thermal.txt +++ b/Documentation/devicetree/bindings/thermal/hisilicon-thermal.txt @@ -13,6 +13,7 @@ Example : +for Hi6220: tsensor: tsensor@0,f7030700 { compatible = "hisilicon,tsensor"; reg = <0x0 0xf7030700 0x0 0x1000>; @@ -21,3 +22,11 @@ Example : clock-names = "thermal_clk"; #thermal-sensor-cells = <1>; } + +for Hi3660: + tsensor: tsensor@fff30000 { + compatible = "hisilicon,hi3660-tsensor"; + reg = <0x0 0xfff30000 0x0 0x1000>; + interrupts = ; + #thermal-sensor-cells = <1>; + }; From patchwork Fri Sep 22 09:42:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Wangtao \(Kevin, Kirin\)" X-Patchwork-Id: 114004 Delivered-To: patch@linaro.org Received: by 10.80.163.150 with SMTP id s22csp2885302edb; Fri, 22 Sep 2017 02:50:27 -0700 (PDT) X-Google-Smtp-Source: AOwi7QALjA++ilot7W+xDVeKVTpsrvJWY3b4WT34H3yBCtTV7Me6Ho4V1jvkSuA0U7CSzXhOT0l5 X-Received: by 10.101.91.134 with SMTP id i6mr8681621pgr.428.1506073827613; Fri, 22 Sep 2017 02:50:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506073827; cv=none; d=google.com; s=arc-20160816; b=Go1mJZE3yewrXfgG32YuLWenFKowIxqvRtTU4k2AsX6EtoO4P54jTN7yx4VSAwfhbC XZndbDWVt2FiFy31yCyiDwwMJvtGz8d8Kr0j7CczMFk0tfa8eBPwq9iawdmqkZeH/Bws FumeJ3O/yEArc+D5KnAZLB7Fw8W2mimvuS9bKTCqClqKDGGTJE1vXEFcMa0pVou4TIae iwkQ/nBO28a6XzNwKIEwkhIQc834gISMChWjISnC7R0ppiPiI52TuRYOyUnnZyHyfZJO tJ49Z1UHlc3klQzZdctcaJudL5wskKro5JM4wSGXWYHUQPd73ScY4TYn0pYrIYBhTWPe SUnw== 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 :arc-authentication-results; bh=fmcbNsoM39P3VNpsv3cJwoM39CdyyDqLasZMRcaRzIo=; b=Se3aeSkTTDA+DOSobuJ5/IjDSSHu9Umue4Bn9sHOfhUljuNa/LaXvHnuvkYwPc9HX3 7etFZsCKBeKWqktFRR9UE0atEzRG/ecMfRptiYCB0XmXOpyfQ30+zjmB3vHZBfh2z1rm Tq6kd8GfSLkoir01OoCDmADexkUCXJbyRhAauB13a8zGGD2oSXodQ3lCzdPaipvBLJbW MHQinxTGt69xWQvj0E5VR+S2MjBKLW1Z+nkONbPBY2FTjGnP7HIS6rbR/ymqTvMQSmNv kx1SPQtUYMOFNnuLmPSPD8zXKqekYh4CqRqP+S+qxlrGxugIc59oVgjPVCsbAafmA3Fw +O+Q== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s75si2569018pfj.57.2017.09.22.02.50.27; Fri, 22 Sep 2017 02:50:27 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752198AbdIVJuZ (ORCPT + 26 others); Fri, 22 Sep 2017 05:50:25 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:6545 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752080AbdIVJt3 (ORCPT ); Fri, 22 Sep 2017 05:49:29 -0400 Received: from 172.30.72.58 (EHLO DGGEMS403-HUB.china.huawei.com) ([172.30.72.58]) by dggrg05-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DHV05247; Fri, 22 Sep 2017 17:49:26 +0800 (CST) Received: from HSH1000038028.huawei.com (10.177.161.152) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.301.0; Fri, 22 Sep 2017 17:49:19 +0800 From: Tao Wang To: , , , , , , CC: , , , , , , , , , , , Kevin Wangtao Subject: [PATCH 8/9] thermal/drivers/hisi: add support for hi3660 SoC Date: Fri, 22 Sep 2017 17:42:11 +0800 Message-ID: <1506073332-92438-9-git-send-email-kevin.wangtao@hisilicon.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> References: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> MIME-Version: 1.0 X-Originating-IP: [10.177.161.152] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020204.59C4DCA6.0053, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 9995eded797108bb925d6158a11cf4f0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kevin Wangtao This patch adds the support for thermal sensor of Hi3660 SoC. Hi3660 tsensor support alarm interrupt and have three configurable alarm thresholds, it also has a configurable hysteresis interval, interrupt will be triggered when temperature rise above the alarm threshold or fall below the hysteresis threshold. Signed-off-by: Kevin Wangtao --- drivers/thermal/hisi_thermal.c | 146 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 145 insertions(+), 1 deletion(-) -- 2.8.1 diff --git a/drivers/thermal/hisi_thermal.c b/drivers/thermal/hisi_thermal.c index 718376b..133238a 100644 --- a/drivers/thermal/hisi_thermal.c +++ b/drivers/thermal/hisi_thermal.c @@ -39,12 +39,24 @@ #define HI6220_TEMP0_RST_MSK (0x1C) #define HI6220_TEMP0_VALUE (0x28) +#define HI3660_OFFSET(chan) ((chan) * 0x40) +#define HI3660_TEMP(chan) (HI3660_OFFSET(chan) + 0x1C) +#define HI3660_TH(chan) (HI3660_OFFSET(chan) + 0x20) +#define HI3660_LAG(chan) (HI3660_OFFSET(chan) + 0x28) +#define HI3660_INT_EN(chan) (HI3660_OFFSET(chan) + 0x2C) +#define HI3660_INT_CLR(chan) (HI3660_OFFSET(chan) + 0x30) + #define HI6220_TEMP_BASE (-60000) #define HI6220_TEMP_RESET (100000) #define HI6220_TEMP_STEP (785) #define HI6220_TEMP_LAG (3500) +#define HI3660_TEMP_BASE (-63780) +#define HI3660_TEMP_STEP (205) +#define HI3660_TEMP_LAG (4000) + #define HI6220_DEFAULT_SENSOR 2 +#define HI3660_DEFAULT_SENSOR 1 #define MAX_THRES_NUM 2 @@ -96,6 +108,24 @@ static inline int hi6220_thermal_temp_to_step(int temp) } /* + * for Hi3660, + * Step: 189/922 (0.205) + * Temperature base: -63.780°C + * + * The register is programmed in temperature steps, every step is 205 + * millidegree and begins at -63 780 m°C + */ +static inline int hi3660_thermal_step_to_temp(int step) +{ + return HI3660_TEMP_BASE + step * HI3660_TEMP_STEP; +} + +static inline int hi3660_thermal_temp_to_step(int temp) +{ + return DIV_ROUND_UP(temp - HI3660_TEMP_BASE, HI3660_TEMP_STEP); +} + +/* * The lag register contains 5 bits encoding the temperature in steps. * * Each time the temperature crosses the threshold boundary, an @@ -169,6 +199,45 @@ static inline int hi6220_thermal_get_temperature(void __iomem *addr) } /* + * [0:6] lag register + * + * The temperature is coded in steps, cf. HI3660_TEMP_STEP. + * + * Min : 0x00 : 0.0 °C + * Max : 0x7F : 26.0 °C + * + */ +static inline void hi3660_thermal_set_lag(void __iomem *addr, + int id, int value) +{ + writel(DIV_ROUND_UP(value, HI3660_TEMP_STEP) & 0x7F, + addr + HI3660_LAG(id)); +} + +static inline void hi3660_thermal_alarm_clear(void __iomem *addr, + int id, int value) +{ + writel(value, addr + HI3660_INT_CLR(id)); +} + +static inline void hi3660_thermal_alarm_enable(void __iomem *addr, + int id, int value) +{ + writel(value, addr + HI3660_INT_EN(id)); +} + +static inline void hi3660_thermal_alarm_set(void __iomem *addr, + int id, int value) +{ + writel(value, addr + HI3660_TH(id)); +} + +static inline int hi3660_thermal_get_temperature(void __iomem *addr, int id) +{ + return hi3660_thermal_step_to_temp(readl(addr + HI3660_TEMP(id))); +} + +/* * Temperature configuration register - Sensor selection * * Bits [19:12] @@ -206,11 +275,22 @@ static int hi6220_thermal_irq_handler(struct hisi_thermal_data *data) return 0; } +static int hi3660_thermal_irq_handler(struct hisi_thermal_data *data) +{ + hi3660_thermal_alarm_clear(data->regs, data->sensor.id, 1); + return 0; +} + static int hi6220_thermal_get_temp(struct hisi_thermal_data *data) { return hi6220_thermal_get_temperature(data->regs); } +static int hi3660_thermal_get_temp(struct hisi_thermal_data *data) +{ + return hi3660_thermal_get_temperature(data->regs, data->sensor.id); +} + static int hi6220_thermal_disable_sensor(struct hisi_thermal_data *data) { /* disable sensor module */ @@ -222,6 +302,13 @@ static int hi6220_thermal_disable_sensor(struct hisi_thermal_data *data) return 0; } +static int hi3660_thermal_disable_sensor(struct hisi_thermal_data *data) +{ + /* disable sensor module */ + hi3660_thermal_alarm_enable(data->regs, data->sensor.id, 0); + return 0; +} + static int hi6220_thermal_enable_sensor(struct hisi_thermal_data *data) { struct hisi_thermal_sensor *sensor = &data->sensor; @@ -260,6 +347,29 @@ static int hi6220_thermal_enable_sensor(struct hisi_thermal_data *data) return 0; } +static int hi3660_thermal_enable_sensor(struct hisi_thermal_data *data) +{ + unsigned int value; + struct hisi_thermal_sensor *sensor = &data->sensor; + + /* disable interrupt */ + hi3660_thermal_alarm_enable(data->regs, sensor->id, 0); + + /* setting lag value between current temp and the threshold */ + hi3660_thermal_set_lag(data->regs, sensor->id, HI3660_TEMP_LAG); + + /* set interrupt threshold */ + value = hi3660_thermal_temp_to_step(sensor->thres_temp[0]); + value |= hi3660_thermal_temp_to_step(sensor->thres_temp[1]) << 10; + hi3660_thermal_alarm_set(data->regs, sensor->id, value); + + /* enable interrupt */ + hi3660_thermal_alarm_clear(data->regs, sensor->id, 1); + hi3660_thermal_alarm_enable(data->regs, sensor->id, 1); + + return 0; +} + static int hi6220_thermal_probe(struct hisi_thermal_data *data) { struct platform_device *pdev = data->pdev; @@ -296,6 +406,33 @@ static int hi6220_thermal_probe(struct hisi_thermal_data *data) return 0; } +static int hi3660_thermal_probe(struct hisi_thermal_data *data) +{ + struct platform_device *pdev = data->pdev; + struct device *dev = &pdev->dev; + struct resource *res; + + data->get_temp = hi3660_thermal_get_temp; + data->enable_sensor = hi3660_thermal_enable_sensor; + data->disable_sensor = hi3660_thermal_disable_sensor; + data->irq_handler = hi3660_thermal_irq_handler; + + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + data->regs = devm_ioremap_resource(dev, res); + if (IS_ERR(data->regs)) { + dev_err(dev, "failed to get io address\n"); + return PTR_ERR(data->regs); + } + + data->irq = platform_get_irq(pdev, 0); + if (data->irq < 0) + return data->irq; + + data->sensor.id = HI3660_DEFAULT_SENSOR; + + return 0; +} + static int hisi_thermal_get_temp(void *__data, int *temp) { @@ -371,7 +508,14 @@ static int hisi_thermal_register_sensor(struct platform_device *pdev, } static const struct of_device_id of_hisi_thermal_match[] = { - { .compatible = "hisilicon,tsensor", .data = hi6220_thermal_probe }, + { + .compatible = "hisilicon,tsensor", + .data = hi6220_thermal_probe + }, + { + .compatible = "hisilicon,hi3660-tsensor", + .data = hi3660_thermal_probe + }, { /* end */ } }; MODULE_DEVICE_TABLE(of, of_hisi_thermal_match); From patchwork Fri Sep 22 09:42:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wangtao \(Kevin, Kirin\)" X-Patchwork-Id: 114002 Delivered-To: patch@linaro.org Received: by 10.140.106.117 with SMTP id d108csp3082328qgf; Fri, 22 Sep 2017 02:49:47 -0700 (PDT) X-Google-Smtp-Source: AOwi7QA1GGxeuk3+CkjJaSE/fMOXROaHJrPHQW7b8g7S2un458OoCAqaRVSrXzhQkIkhaSxYIy5s X-Received: by 10.98.101.4 with SMTP id z4mr8678193pfb.6.1506073787321; Fri, 22 Sep 2017 02:49:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506073787; cv=none; d=google.com; s=arc-20160816; b=qo6EbzovJ7Uf1LwbkTzw7QG/+4At8I+4xVptj46l6puIs7xM3g71m7Y9eWcf/o/v8i hPJLDo06s44vebHhBSw81ji0pZhEiAXHKSD9sF1H9XrNSJoDHV6DF1QzIopsJIyYtGe7 uNK+A1xiobEY5rFnbUXAY9V1OuS6IE6H3znizK8LjbbIOlFTtZTrZjQ6fPqcyTl1Cbho wEUKBb1YwQuG7Qd5u4XVfTkoyvcQKffzpp4PkE/bo1NN8YkV/ltIBjXrlO9UzbCDZx51 /W0wdTJk0TyLdnt1Dkv0TTFf5mJAfSzTFXQ4jkftl/KT5w7BCCWntRfaQPYs7OhUxJZi iiVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:arc-authentication-results; bh=phrD05wtI88DqityTdiSXpO8Oc2IbRxBPvvnpz0vXw4=; b=sWdItM/aUCpewBCLjSkS4eeO+sEE/jTstrCSPUQ0ofNeEvYpM3K/l+L6J93qozK3mn 85Ej0Edo2yJzHkRszGIz5x5zInIcjp87yaDYfU79eTOGunXZtqtoGpe29nN8XGEy2NWJ TYfKBbWUe4mURbMFDn3kgS2DRRCyRao/qjk3pZHISsvZn+kAGM9gidswQ46FH3Fn4GfO gHaKu96SwsbQvnke+BpdFOnsC8HQrV2g/Rp3yW+5NVEGcIZ34/KaYpxUs9rzV+j/5gIe A7T6R+iQD5JCRdcSW1I5faL34OuD/890bvGeVQMhdShs01lCy36B5bxTBxRyhHNs2a3w VdFg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h5si2644343plk.379.2017.09.22.02.49.47; Fri, 22 Sep 2017 02:49:47 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752169AbdIVJtp (ORCPT + 26 others); Fri, 22 Sep 2017 05:49:45 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:6549 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751878AbdIVJtm (ORCPT ); Fri, 22 Sep 2017 05:49:42 -0400 Received: from 172.30.72.58 (EHLO DGGEMS403-HUB.china.huawei.com) ([172.30.72.58]) by dggrg05-dlp.huawei.com (MOS 4.4.6-GA FastPath queued) with ESMTP id DHV05261; Fri, 22 Sep 2017 17:49:30 +0800 (CST) Received: from HSH1000038028.huawei.com (10.177.161.152) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.301.0; Fri, 22 Sep 2017 17:49:21 +0800 From: Tao Wang To: , , , , , , CC: , , , , , , , , , , , Kevin Wangtao Subject: [PATCH 9/9] arm64: dts: register Hi3660's thermal sensor Date: Fri, 22 Sep 2017 17:42:12 +0800 Message-ID: <1506073332-92438-10-git-send-email-kevin.wangtao@hisilicon.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> References: <1506073332-92438-1-git-send-email-kevin.wangtao@hisilicon.com> MIME-Version: 1.0 X-Originating-IP: [10.177.161.152] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020201.59C4DCAB.0010, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 530aa0e6c9277b5f24131f8b0b52bfb8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kevin Wangtao add binding for tsensor on H3660, this tsensor is used for SoC thermal control, it supports alarm interrupt. Signed-off-by: Kevin Wangtao --- arch/arm64/boot/dts/hisilicon/hi3660.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) -- 2.8.1 diff --git a/arch/arm64/boot/dts/hisilicon/hi3660.dtsi b/arch/arm64/boot/dts/hisilicon/hi3660.dtsi index b7a90d6..ae90991 100644 --- a/arch/arm64/boot/dts/hisilicon/hi3660.dtsi +++ b/arch/arm64/boot/dts/hisilicon/hi3660.dtsi @@ -978,5 +978,13 @@ clocks = <&crg_ctrl HI3660_OSC32K>; clock-names = "apb_pclk"; }; + + tsensor: tsensor@fff30000 { + compatible = "hisilicon,hi3660-tsensor"; + reg = <0x0 0xfff30000 0x0 0x1000>; + interrupts = ; + #thermal-sensor-cells = <1>; + }; + }; };