From patchwork Wed Nov 25 05:42:27 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 7695311 X-Patchwork-Delegate: geert@linux-m68k.org Return-Path: X-Original-To: patchwork-linux-sh@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 1B17E9F1BE for ; Wed, 25 Nov 2015 05:42:52 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 3515A208BA for ; Wed, 25 Nov 2015 05:42:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 38F272085B for ; Wed, 25 Nov 2015 05:42:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754711AbbKYFmg (ORCPT ); Wed, 25 Nov 2015 00:42:36 -0500 Received: from relmlor2.renesas.com ([210.160.252.172]:13197 "EHLO relmlie1.idc.renesas.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752082AbbKYFme (ORCPT ); Wed, 25 Nov 2015 00:42:34 -0500 Received: from unknown (HELO relmlir2.idc.renesas.com) ([10.200.68.152]) by relmlie1.idc.renesas.com with ESMTP; 25 Nov 2015 14:42:32 +0900 Received: from relmlac4.idc.renesas.com (relmlac4.idc.renesas.com [10.200.69.24]) by relmlir2.idc.renesas.com (Postfix) with ESMTP id CB82D4600A; Wed, 25 Nov 2015 14:42:32 +0900 (JST) Received: by relmlac4.idc.renesas.com (Postfix, from userid 0) id B578F480A3; Wed, 25 Nov 2015 14:42:32 +0900 (JST) Received: from relmlac4.idc.renesas.com (localhost [127.0.0.1]) by relmlac4.idc.renesas.com (Postfix) with ESMTP id AD33D48014; Wed, 25 Nov 2015 14:42:32 +0900 (JST) Received: from relmlii1.idc.renesas.com [10.200.68.65] by relmlac4.idc.renesas.com with ESMTP id QAC15227; Wed, 25 Nov 2015 14:42:32 +0900 X-IronPort-AV: E=Sophos;i="5.20,341,1444662000"; d="scan'";a="199260496" Received: from mail-pu1apc01lp0018.outbound.protection.outlook.com (HELO APC01-PU1-obe.outbound.protection.outlook.com) ([65.55.88.18]) by relmlii1.idc.renesas.com with ESMTP/TLS/AES256-SHA; 25 Nov 2015 14:42:30 +0900 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=kuninori.morimoto.gx@renesas.com; Received: from morimoto-PC.renesas.com (211.11.155.144) by SIXPR06MB1021.apcprd06.prod.outlook.com (10.160.238.156) with Microsoft SMTP Server (TLS) id 15.1.331.20; Wed, 25 Nov 2015 05:42:27 +0000 Message-ID: <87a8q28wsv.wl%kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH] thermal: rcar: add .set_trip_temp support User-Agent: Wanderlust/2.15.9 Emacs/24.3 Mule/6.0 To: Zhang Rui , Eduardo Valentin , Rob Herring , Pawel Moll , "Mark Rutland" , Ian Campbell , Kumar Gala CC: , , , Ryusuke Sakato , , "osd2@lm.renesas.com" MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Date: Wed, 25 Nov 2015 05:42:27 +0000 X-Originating-IP: [211.11.155.144] X-ClientProxiedBy: TY1PR01CA0024.jpnprd01.prod.outlook.com (25.161.131.162) To SIXPR06MB1021.apcprd06.prod.outlook.com (25.160.238.156) X-Microsoft-Exchange-Diagnostics: 1; SIXPR06MB1021; 2:v0uhZvwHZaFiZOqi+YdY2gCIkjvNAR9OrqBU9w8XPpgKVPEnIgHX5IptKlrZlKZ5kJcHZoA1W/lPE5Afc8oyxRSskUhtHg9D/Z4C7ctc17A+s0nZqFwYdHVm5LvPyK3yDQwCSDzUtIUwSoVHUF2Qbw==; 3:TfKiTW4OW3PyVszXUGciLWcr34rO9bT5SSTxyDlnU/zcGBBTTkYrdd0mGib3ntuL97tZMhUE0Z6N8N6sOB2WWbD3dpZSfPx14NlauEYpkq2roqgSRs3HQl8GPotQpbH1; 25:ThI8CvStcmN8zBZOHpNckV7DQHy/TJc+aFUjspigYF4ZO6svvPG5/drqtVT/JjpbyZbKwJRzZrfq4/1ImpyqGPcBzwnsKFJwwRFLJDkD+PJkM2h7fi5ZKyhh4kmIWUK4Qri5nqc723Nh0zAVJ/0fpShA6iPrkxonaytQ7NMqCNCEAzjbAa4+mEEaXWriajb9yf/80Wgl4w/O2SyHFtME8+dTKtgDQtmfqNGWahreTIOeDgAMUgLBGehk/cCBktGGWEdA5OGON8OcCX0bsNF8fw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SIXPR06MB1021; X-Microsoft-Exchange-Diagnostics: 1; SIXPR06MB1021; 20:64+Tn7kkuyewFD7cRzufUqiIOXTlGTf7oExZPg+POZT4hc85DC+ax61ce/KhkT2/AzP9VXzE/7Ix/2aUbFm29v9kklTeISyPizDipLZAMj8DZwwYDQhhH6nPdanbA+iMLXISAAwlRw+HsLWcB7yCvh09aSgosYxrkAmaGEZ1tApgEDy3QgIrDBuFwjiwwLmz9R3HYsUZvPgX/9+1GGWZWyQAGfSVeCBMUjth4NA5Er5xa0u3oEMfF/hO91fCvhNW52YDmMt1CYJp7a2CKacd16TCUfSTPEdVa5/1inbQHzWzQOjqqNhLcNXXSYvSPnf6sdec6drkLXfMhzRhIpOVdlPs46VNwdj3x+dk2FdjK/B+AaxkU/j0rRujxqyNUnYqSwt6f+LNOC+WA9uHXYM9QcqtqO5tRLm9JlP/7v2Hf7XAlLSB8ZyqgNBZnYBxMR1GqqAWbVQ5QSXiZtpKfAAsQwBPKZQnnuk3TEYVhmF43vW3JVu2VRjvlv4PW0qrY6kV; 4:diw8DNVKyxslETudP2sMAsxveEQy/3Ck2T/3luz6Jp45jXwJmxlG/xxE8zzu9q7rbWBVteBNGxKg/sFVu6lRoNO7majBpWvKyHgbxPNmPzzBSuvmOtFiNWCgw1lrXp6qtPLLFvKvPScCngHK3Nbrz8n+Zx7Q1qB8GphczwPmszZjvf2vA37U4GNkHLFq+UHtk1MANTqxX2lA5WThOqddfYdFL7k5Pd41LyqwndET1mQK8t/XSTFKSo1FxAwnP/9P3YQQnUu/2hrJ3EvUICxS9/LKeGbaZJE18CirSPUJ7qLjQHM9BZqGOPnimCJqImSe0PzZd580iUOwu3hzAOnEzoOCr65dFV0d3AlIbHvwbW/rP4Uoenju9ZUVSl3cqXmj+esZgT1COzG6gqk/CgBS+nh90YS4LimK66S27G nBzP5Q99vQwfUNNUwZwyuw0bSy X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85106069007906); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(520078)(5005006)(3002001)(10201501046); SRVR:SIXPR06MB1021; BCL:0; PCL:0; RULEID:; SRVR:SIXPR06MB1021; X-Forefront-PRVS: 0771670921 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(199003)(189002)(5001960100002)(107886002)(42186005)(5007970100001)(189998001)(87976001)(54356999)(4001350100001)(83506001)(53416004)(229853001)(6116002)(586003)(5004730100002)(3846002)(69596002)(66066001)(19580395003)(19580405001)(36756003)(81156007)(97736004)(47776003)(77096005)(5001770100001)(50466002)(40100003)(46406003)(92566002)(86362001)(50986999)(4001430100002)(33646002)(5008740100001)(101416001)(106356001)(23726003)(105586002)(122386002)(142923001); DIR:OUT; SFP:1102; SCL:1; SRVR:SIXPR06MB1021; H:morimoto-PC.renesas.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SIXPR06MB1021; 23:aGtaG5KN1lZN3pD1vGd/mtb0wrNsYcgfDh3Gh50QP?= =?us-ascii?Q?dXBswvhTeWcykFutZU3CD4h/MZy+BnhBwnmJll6+ZGwIUPF0hTCRVSh34c56?= =?us-ascii?Q?yhWbsi56fYS5GLOS4V1l4fPusYKyRtK/sbeN0+oUmWMPiguGtI8k2CHlGz5z?= =?us-ascii?Q?L1zZXDsUbpbo/QtUQ/u1CfDDnr9r4PCaqzdYfVctV1BJO7tmOiC2wbgc2wOa?= =?us-ascii?Q?a0Agvzq2sRDWvEbL5drmWnXkJqO9QhPGAlc8HRPlHu3WuUOyPDDBAm14sA0B?= =?us-ascii?Q?18EP4f0PtrF/LUzOqvPUxndMp+BCTGQCtSEcztliyCZi5ndV3IBxLQgWHo6e?= =?us-ascii?Q?ZSYxynTtD+l2eFcF4EKAfsa5x0pzZQ8e2kzq60ubyyXdkXSY/i3yu3lDW8dO?= =?us-ascii?Q?HdEGyhJ/JzV4yzBlVhc/zy0d+dBDZ+SOViJxqfIFjVnk+pcGfatbG/3dwj92?= =?us-ascii?Q?3OA15TnFyZR8DXIJOMz48pCrP76Scgx3AQgIRhh2wrMztaNn/eUc4WSXPtaY?= =?us-ascii?Q?rdstF8Acp5PhsgioqtDObw6Gjo1eVVqPZFaiP2U2C8sJZsMZCbVa+lwvUGP0?= =?us-ascii?Q?Lt5hH9j0nDpHQ1Cgxe1dUlElMwP12UjdVImD+F3qdWFG0tH19KPVob08xw/r?= =?us-ascii?Q?j0nR6lsILXBizNSfbo9AkMD+j8vK/QOFzEsmWmfV2269XntDQAPz+drKFnVI?= =?us-ascii?Q?f74tnzgS9aRaZeMwLf5bTDiidxArpFoXFS+PlpeEvhMYrU3jYzKGJMFp/+X3?= =?us-ascii?Q?lRGllhquyBKFdAuLyB9ag4i+nXdfKqDlmHpL+bL8O0e4V7Lj/FSYN3nT++Hq?= =?us-ascii?Q?QtCL2qeU8I1Ps096pyoBAgV2OGteuxZddpk6tgkOHxGln1aGs2RxXmmF++PJ?= =?us-ascii?Q?fcHcxb1RfHnyP+1R312L9ccrWkido5AGNCRnSkUuKMOXjzCWCNflU8dmhwYa?= =?us-ascii?Q?7D/PDWyrmoH66jBrHbk977feEVPdtvfUGyheGoU0FInWKfF3HPBVriXCltsg?= =?us-ascii?Q?TVSoGODtfvu40oubgaBeHYBsWi5THAf8eSl9f6rB5gS3NB6W62skA4qBkApW?= =?us-ascii?Q?GIUeoL5F8oLvmupr3oaI1lDFJOZWNXetsVsIvJp++DO5uvK1yDc9l2Y2JxJe?= =?us-ascii?Q?sCwF3TMN6cyyJ8ZR8gOcyIC+zCyNGnUIawEt9XqTr34OG4GVzlKTA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; SIXPR06MB1021; 5:Qmbep9GEwnbn/aLSsOCycPYB5vHa/QsQvKE7syJ0XSUCMTg4p1NyyYiLM1fj1SpvfEimamGaEGYfiqQUFULgSQfJwrmTtB8TkUtnTzZH0GDieh7M+de1+xXpypF853imN39XyRR5KzRtV91+VaS2HA==; 24:YRwiq7oOoDR6U6bbu3bjGFJDR5cqiGL4MkM7MQ9aNJzcEDtC6k2vVUmFrWzOKogYKa9Xj7hd6TzWh+3oNIFHPLnI3YAOOXA87TqD+beFpgY=; 20:PCQ6mLPJgsJ9L+fON6LpQhl2xnXK7fZXGRZkSclB92SicB6xgKmZRLWtG5h1cbEEC+4mi09jCwISXmYATm68YHY3hR3IrI4OOdY4KFQnS6l/xy3wYYIhSUBsDPUTChS2+AkGS2X81h2qvmGWwkGzB9hHi3ojezbpnMhZzMBcz/0= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2015 05:42:27.5813 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SIXPR06MB1021 Sender: linux-sh-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-sh@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Kuninori Morimoto You can set trip temp if your kernel has CONFIG_THERMAL_WRITABLE_TRIPS echo $temp > /sys/class/thermal/thermal_zone0/trip_point_0_temp -45000 < $temp < 125000 is supported Default is 90000 Signed-off-by: Kuninori Morimoto --- This patch is v2 of "[PATCH] thermal: rcar: enable to set tripN-temp via DT" I think it will be full-DT feature if it uses of-thermal, but this driver is used from non-DT SoC too. We would like to keep non-DT support. And we would like to do is only exchange trip temp. .set_trip_temp is very enouth for it at this point. But, it can use of-thermal feature in the future. drivers/thermal/rcar_thermal.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c index 5d4ae7d..1eaa1be 100644 --- a/drivers/thermal/rcar_thermal.c +++ b/drivers/thermal/rcar_thermal.c @@ -63,6 +63,7 @@ struct rcar_thermal_priv { struct mutex lock; struct list_head list; int id; + int trip_temp; u32 ctemp; }; @@ -222,7 +223,7 @@ static int rcar_thermal_get_trip_type(struct thermal_zone_device *zone, /* see rcar_thermal_get_temp() */ switch (trip) { - case 0: /* +90 <= temp */ + case 0: *type = THERMAL_TRIP_CRITICAL; break; default: @@ -241,8 +242,8 @@ static int rcar_thermal_get_trip_temp(struct thermal_zone_device *zone, /* see rcar_thermal_get_temp() */ switch (trip) { - case 0: /* +90 <= temp */ - *temp = MCELSIUS(90); + case 0: + *temp = priv->trip_temp; break; default: dev_err(dev, "rcar driver trip error\n"); @@ -270,10 +271,27 @@ static int rcar_thermal_notify(struct thermal_zone_device *zone, return 0; } +static int rcar_thermal_set_trip_temp(struct thermal_zone_device *zone, + int trip, int temp) +{ + struct rcar_thermal_priv *priv = rcar_zone_to_priv(zone); + + if (trip != 0) + return -EINVAL; + + if (temp < -45000 || temp > 125000) + return -EINVAL; + + priv->trip_temp = temp; + + return 0; +} + static struct thermal_zone_device_ops rcar_thermal_zone_ops = { .get_temp = rcar_thermal_get_temp, .get_trip_type = rcar_thermal_get_trip_type, .get_trip_temp = rcar_thermal_get_trip_temp, + .set_trip_temp = rcar_thermal_set_trip_temp, .notify = rcar_thermal_notify, }; @@ -418,13 +436,14 @@ static int rcar_thermal_probe(struct platform_device *pdev) priv->common = common; priv->id = i; + priv->trip_temp = MCELSIUS(90); /* default*/ mutex_init(&priv->lock); INIT_LIST_HEAD(&priv->list); INIT_DELAYED_WORK(&priv->work, rcar_thermal_work); rcar_thermal_update_temp(priv); priv->zone = thermal_zone_device_register("rcar_thermal", - 1, 0, priv, + 1, 1, priv, &rcar_thermal_zone_ops, NULL, 0, idle); if (IS_ERR(priv->zone)) {