From patchwork Mon Feb 18 19:11:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818647 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BFAD26C2 for ; Mon, 18 Feb 2019 19:13:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AE9092BC70 for ; Mon, 18 Feb 2019 19:13:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A25672BC84; Mon, 18 Feb 2019 19:13:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 424122BC70 for ; Mon, 18 Feb 2019 19:13:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728469AbfBRTME (ORCPT ); Mon, 18 Feb 2019 14:12:04 -0500 Received: from mail-pl1-f193.google.com ([209.85.214.193]:35068 "EHLO mail-pl1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728262AbfBRTMC (ORCPT ); Mon, 18 Feb 2019 14:12:02 -0500 Received: by mail-pl1-f193.google.com with SMTP id p8so9189356plo.2; Mon, 18 Feb 2019 11:12:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+jZh7Eh81/e07UmRKgT1xJc4FS8H4ImGRVqTmq6uKzk=; b=JQ3JLKKqWyr8hXhCeUGkvjACL3IQdMR7VkHHF/5F4yX15Cx0urt+VwyGTfN1vqFFF0 QLUtm0ggtWFRS1n5mxI+mJXvJouGBl2OlHDTg87ChKmN6ZQzTAv7XjU98DQnj6unKGLN KrC3Ga2vCeLiiSON08Q6wmSBRN0aN5eJBhrjl8LRMJrDS5K+OExog9SdGcbFvdLrpFvk UoWm1Xo6NdrKXmNOKPEhnoJvb6Il8RCMX8vFWSmQKNzHXYyoMxzWMnGP3Wr9EBE7262m EBkderS7PPszXf5sGVcYHTi/nhNTT4YQ3ANcZTNUhjX/WfvSlQzCv5d1jbCy0tyjfbwv j+Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+jZh7Eh81/e07UmRKgT1xJc4FS8H4ImGRVqTmq6uKzk=; b=PZLlQm3/nDBFdHXMx+YqRxap6YK12cY3HSEEkTS1/3fQnet+XGm7gyif3ZIKfQ6lZ0 n7HztqH5ZJuvPc6Nvn2KScOaZtJx7/OPe88jgzl8P0HIH1frw8WBtpjYXgFfy/MvfPpH kLjWj0b/0HYmQjcT+D0fL4lk6p0UHrMmVH0YH9P/BpAGLUpdKN4ggg/W5xWD+SxkG80Q lVDx/KJRh9zj9gV2+/RCR4aC9BxROtMiHADDIeDiC/lAzkBefuBKYHIcCyUpwSqb2dq0 aBy4ZDMCIMHeQosLaD+9Ud1w9X+zp50uTls3rKoi9K4xJu8DCTVx8V9sqocxflpx7gAK +qTQ== X-Gm-Message-State: AHQUAuZhLADaFL6Qa1YXaifL8IJk3G6CTg7ESFGiahBZ7z+LDuQspgU+ pD2uartezac4+mhqw46aCKzL1wkl X-Google-Smtp-Source: AHgI3IZtdiHdx8Vk/h4zlKA/xK90Z4QCQJtP4a7NCt4ShbWi8AO802NzVFQ5meCHg23WJFRux0floA== X-Received: by 2002:a17:902:d83:: with SMTP id 3mr26312280plv.43.1550517121660; Mon, 18 Feb 2019 11:12:01 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.00 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:00 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 01/12] thermal_hwmon: Add devres wrapper for thermal_add_hwmon_sysfs() Date: Mon, 18 Feb 2019 11:11:30 -0800 Message-Id: <20190218191141.3729-2-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add devres wrapper for thermal_add_hwmon_sysfs() to simplify driver code. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/thermal_hwmon.c | 28 ++++++++++++++++++++++++++++ drivers/thermal/thermal_hwmon.h | 7 +++++++ 2 files changed, 35 insertions(+) diff --git a/drivers/thermal/thermal_hwmon.c b/drivers/thermal/thermal_hwmon.c index 40c69a533b24..4e79524182e1 100644 --- a/drivers/thermal/thermal_hwmon.c +++ b/drivers/thermal/thermal_hwmon.c @@ -244,3 +244,31 @@ void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz) kfree(hwmon); } EXPORT_SYMBOL_GPL(thermal_remove_hwmon_sysfs); + +static void devm_thermal_hwmon_release(struct device *dev, void *res) +{ + thermal_remove_hwmon_sysfs(*(struct thermal_zone_device **)res); +} + +int devm_thermal_add_hwmon_sysfs(struct thermal_zone_device *tz) +{ + struct thermal_zone_device **ptr; + int ret; + + ptr = devres_alloc(devm_thermal_hwmon_release, sizeof(*ptr), + GFP_KERNEL); + if (!ptr) + return -ENOMEM; + + ret = thermal_add_hwmon_sysfs(tz); + if (ret) { + devres_free(ptr); + return ret; + } + + *ptr = tz; + devres_add(&tz->device, ptr); + + return ret; +} +EXPORT_SYMBOL_GPL(devm_thermal_add_hwmon_sysfs); diff --git a/drivers/thermal/thermal_hwmon.h b/drivers/thermal/thermal_hwmon.h index a160b9d62dd0..1a9d65f6a6a8 100644 --- a/drivers/thermal/thermal_hwmon.h +++ b/drivers/thermal/thermal_hwmon.h @@ -17,6 +17,7 @@ #ifdef CONFIG_THERMAL_HWMON int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz); +int devm_thermal_add_hwmon_sysfs(struct thermal_zone_device *tz); void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz); #else static inline int @@ -25,6 +26,12 @@ thermal_add_hwmon_sysfs(struct thermal_zone_device *tz) return 0; } +static inline int +devm_thermal_add_hwmon_sysfs(struct thermal_zone_device *tz) +{ + return 0; +} + static inline void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz) { From patchwork Mon Feb 18 19:11:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818645 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 37AA31390 for ; Mon, 18 Feb 2019 19:13:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 261702BC70 for ; Mon, 18 Feb 2019 19:13:13 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 19FF82BC84; Mon, 18 Feb 2019 19:13:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E5DC32BC82 for ; Mon, 18 Feb 2019 19:13:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728499AbfBRTME (ORCPT ); Mon, 18 Feb 2019 14:12:04 -0500 Received: from mail-pf1-f196.google.com ([209.85.210.196]:39449 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728465AbfBRTME (ORCPT ); Mon, 18 Feb 2019 14:12:04 -0500 Received: by mail-pf1-f196.google.com with SMTP id f132so9036605pfa.6; Mon, 18 Feb 2019 11:12:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6n68aB9JlkxCY7Qx/DXKciFTQ8435UNi+H1H6r3cxfo=; b=eQZXCbF3GrZT2RRhflWWMW4fXJ2vwcxeIJy6EIkYlfjV6gUBjK4XHHHivUEaRfeX2e lNHolIExdctlpSG//zsTCK5Xp4vJWHTLmkKQRyIMHVlLnyRaFACr90b2QfqWtplj26IH xeFusoo24Q3S2b/nqXrmDhN1Aja2khmQKlEOi7qtPnDZXdon5XqgwnaN5ZN0s4UQUpnj 29qGIbSKH2765lGocOnFowK8pDZ91AuEMdPyZLIFQ4Evqn0KF4aG9cg7vB+IwALYalH+ N9ETcxRX5Rhx4BN7Vclj9kiQGz3zKTFOzBZbekJ8Ny7gonqfMZI83zdFEVSYGVx3I85m v7zQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6n68aB9JlkxCY7Qx/DXKciFTQ8435UNi+H1H6r3cxfo=; b=lS2hJidwxbSVctDF+yvIzwJjEcJcMCCGwxYgt0UR+MTSKvqTl3HBeQgsjdUI8gtetF 2XFKmymhZHCviSa5dgP+OLPEtByyFZ4/piQat5T0mFwUoaqPA4+Lpynz/EAe3DqrTT6l ISElwaMhYKHJEsV5ZBnjCkvEL3NjRJ1hwtWcZcWEXIC5PaA1TVjbhfhOoYaNg3wkVrPU 77E9DZo6H8LQqkqJ+H5xNjpKdvdeACGtRO7V5nv6HRoomb3Sjao32qaTfIe5VNnR1aZU dpqY9Wm/AZws7gDcp1TeofsUIQ/4TJsmT9lO2+NNcyQiTEcslanqeUKMh5wi56v6SEpX 6RRg== X-Gm-Message-State: AHQUAuYjLSaykJI7W3MkAWM+R86jt+fqTUeUw4tXxyWEihF6QZqejGG4 AFZMh5SfwJZ38inQe/Q6xc72u0mq X-Google-Smtp-Source: AHgI3IZNEinVHe/li4SGUcyIlXyDa4knPGhwGxH4DWsivXM7ZoT+U3L2X95AaABSX5tVpZNfHxrBTw== X-Received: by 2002:a63:df50:: with SMTP id h16mr20596955pgj.421.1550517122868; Mon, 18 Feb 2019 11:12:02 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.01 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:02 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 02/12] thermal: qoriq: Remove unnecessary DT node is NULL check Date: Mon, 18 Feb 2019 11:11:31 -0800 Message-Id: <20190218191141.3729-3-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This driver is meant to be used with Device Tree and there's no use-case where device's DT node is going to be NULL. Remove code protecting against that. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/qoriq_thermal.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index 18c711b19514..3e147f856bf5 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -189,11 +189,6 @@ static int qoriq_tmu_probe(struct platform_device *pdev) struct device_node *np = pdev->dev.of_node; u32 site; - if (!np) { - dev_err(&pdev->dev, "Device OF-Node is NULL"); - return -ENODEV; - } - data = devm_kzalloc(&pdev->dev, sizeof(struct qoriq_tmu_data), GFP_KERNEL); if (!data) From patchwork Mon Feb 18 19:11:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818643 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7EB666C2 for ; Mon, 18 Feb 2019 19:13:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6DA542BC70 for ; Mon, 18 Feb 2019 19:13:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5F4F52BC93; Mon, 18 Feb 2019 19:13:12 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3890B2BC70 for ; Mon, 18 Feb 2019 19:13:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729007AbfBRTNE (ORCPT ); Mon, 18 Feb 2019 14:13:04 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:37960 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728501AbfBRTMF (ORCPT ); Mon, 18 Feb 2019 14:12:05 -0500 Received: by mail-pg1-f196.google.com with SMTP id m2so6654263pgl.5; Mon, 18 Feb 2019 11:12:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Eb7kE3DHvy3VK3/mYaHKYpiE8Yr6d8ijyZ/9XxxBzBk=; b=T18h4qgXHAV7nzWw1T+X9pd9x15pu5Vu2tTkQvdImXQocuNo4fc6WU+dUIhJPj6ZHg 1nE4zcuW0Kl1LdKLDG9f+7vi+fzq616nL8INBtKwmRYg2lW2a1cCfT519ETQBQOYM1Pv X7wuesIKMm4fKl1e/Bo+2aY2YogA9DaooZFTPcxMbpoOFMrhYtoMAlkjqbRKlEgjgf9/ 2vZWU2ojn04um5J27kq1JSrFsmhvQhFPZ9FAHcbE560jxo/zC0kd+NKVulNWTr2bvahT /KrDvKA+L9pVkxnaSXfuFCeI37/1z+nOw51MxRVgNZPxCA+7saR2RV4lm66+1CnZfJ6f h3Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Eb7kE3DHvy3VK3/mYaHKYpiE8Yr6d8ijyZ/9XxxBzBk=; b=DPydy0gEEoLcmO8zKuLqfxKkh7ox1kXqmRCYeiMfF0sCs/K681n9l7z4a8ZIqLHpFh eLkMIEmmb8boornr966RvZWNs73NL2JxGJvrfOSKHDat5GpdaPLPchEUwXWdahDCFFnX PN/TcZwg5f2EdFRIE3/iSpNFH5clj9UDyKbWYHEYA2gHu3B1buGeLST+MT02eYT7UMxW nTdSYJkpSiuOBM8EhRr5HbvRElZplqkJvf7da++DNA+/pbHZKSDTt8OKMg7y+qbFsH+G YgUiUFAV5KkfocRZMXd0r2196ez/oncXaRhMCHNgZ1KAzITVGUny/KkIDtq3st1y6gZr ENrg== X-Gm-Message-State: AHQUAuaEKEDLRpjWzkMvFvo9FU3ZQXTIx1xJe9RZvKDhzPIk/8Po/yXt 41/nnYNtTLcu7rDJ4yZH3UQOwz+5 X-Google-Smtp-Source: AHgI3IZyNnuIwjLe2Y4pgNQvrTQrd2XO3sT8ILERWDh6EqGC+m+ETz1bLzkBivaz+cr16FeOJUnL4w== X-Received: by 2002:a65:608d:: with SMTP id t13mr20610143pgu.129.1550517124083; Mon, 18 Feb 2019 11:12:04 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.02 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:03 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 03/12] thermal: qoriq: Add local struct device pointer in qoriq_tmu_probe() Date: Mon, 18 Feb 2019 11:11:32 -0800 Message-Id: <20190218191141.3729-4-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Use a local "struct device *dev" for brevity. No functional change intended. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/qoriq_thermal.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index 3e147f856bf5..c24629b1b8c2 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -187,9 +187,10 @@ static int qoriq_tmu_probe(struct platform_device *pdev) int ret; struct qoriq_tmu_data *data; struct device_node *np = pdev->dev.of_node; + struct device *dev = &pdev->dev; u32 site; - data = devm_kzalloc(&pdev->dev, sizeof(struct qoriq_tmu_data), + data = devm_kzalloc(dev, sizeof(struct qoriq_tmu_data), GFP_KERNEL); if (!data) return -ENOMEM; @@ -200,14 +201,14 @@ static int qoriq_tmu_probe(struct platform_device *pdev) data->sensor_id = qoriq_tmu_get_sensor_id(); if (data->sensor_id < 0) { - dev_err(&pdev->dev, "Failed to get sensor id\n"); + dev_err(dev, "Failed to get sensor id\n"); ret = -ENODEV; goto err_iomap; } data->regs = of_iomap(np, 0); if (!data->regs) { - dev_err(&pdev->dev, "Failed to get memory region\n"); + dev_err(dev, "Failed to get memory region\n"); ret = -ENODEV; goto err_iomap; } @@ -218,13 +219,13 @@ static int qoriq_tmu_probe(struct platform_device *pdev) if (ret < 0) goto err_tmu; - data->tz = devm_thermal_zone_of_sensor_register(&pdev->dev, + data->tz = devm_thermal_zone_of_sensor_register(dev, data->sensor_id, data, &tmu_tz_ops); if (IS_ERR(data->tz)) { ret = PTR_ERR(data->tz); - dev_err(&pdev->dev, - "Failed to register thermal zone device %d\n", ret); + dev_err(dev, "Failed to register thermal zone device %d\n", + ret); goto err_tmu; } From patchwork Mon Feb 18 19:11:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818641 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2EA266C2 for ; Mon, 18 Feb 2019 19:13:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 193192BC70 for ; Mon, 18 Feb 2019 19:13:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 09CEC2BC84; Mon, 18 Feb 2019 19:13:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 73B682BC70 for ; Mon, 18 Feb 2019 19:13:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728939AbfBRTMw (ORCPT ); Mon, 18 Feb 2019 14:12:52 -0500 Received: from mail-pl1-f195.google.com ([209.85.214.195]:35844 "EHLO mail-pl1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728527AbfBRTMG (ORCPT ); Mon, 18 Feb 2019 14:12:06 -0500 Received: by mail-pl1-f195.google.com with SMTP id g9so9193714plo.3; Mon, 18 Feb 2019 11:12:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jc/u/VuNKfP8g2qvvHU2FxhsXY6Y2Hqv0zrQmbupw/s=; b=YHzWjj0wVwV11iaUNXTj+NPB2YpyyuXkUVX2Pvp4oy8Gk7ifkFKKRy+3RmgnbVlLOs NwX+tS4mWW4yIWPrGIiSIEH0JaNj51UJclX6SlVa+ineTYnRJHY6fNGXBK8qmc77lgwE wqxsgDypBba/ZF5uzgc4YMsmmU3t8+D1oq66bB9Wq5JqTcbAGHeJjhe0ZIB8gqD8f4xX xdcIST/kjt3drYfa7CTbyRuati15W+dU0b/JqeUhON2Y4cWcS+xwrBRZEEXOm2lq6Bw2 GjDmmjL07Z3O2iWqD0lO3cuSmGLbJiiKBAOylPZE5iF7DGp+PN77iNizmGgynlH+LNBB jHig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jc/u/VuNKfP8g2qvvHU2FxhsXY6Y2Hqv0zrQmbupw/s=; b=E0DWzWmDihRATupSwN/oKDIAyUo+JE/0mT9ecOCS+loXmDbHLFN1Bof7OOuTwANpDD J2lXy3MMzaICRB7PxbT1kMBKVoTG5+p+NtzSgQIxEIdQnIMNDsjbXl2V+8x093NDmbcI nZcUV2FXiRNlaeQIkKayvon5l/ycFQ0CSnAQRFeNEa5u3e4CorxVnkx14cijCuLQMXpz NVEXDR9a5xwYqFq1oc8CU6T6FQpuJ9CWBjpVlGCGocb1e/opdV+X5QUdFHQoXqiT7Ibp ZHGyEZtQbNICg0FIiv4qliDYLeVwskwhDjZKBRZdcFnEu4zUuRE5vPjEUAJY172NguQf //iA== X-Gm-Message-State: AHQUAuYzdbbLNZ3dV6XPD0lDCdDMidNtmUOnfGyldABtXkVq0aY9g7WJ 2saMWWzQfv0J4YJdeEIv/i3dfDfb X-Google-Smtp-Source: AHgI3IYslZ6vXzVJOws6v4XkMHK4nyyilwux8yHpbVBOV+JwD3hxaUDowdpLGOg7RRgMAFQSwtA1Nw== X-Received: by 2002:a17:902:298a:: with SMTP id h10mr26992694plb.312.1550517125360; Mon, 18 Feb 2019 11:12:05 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.04 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:04 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 04/12] thermal: qoriq: Don't pass platform_device to qoriq_tmu_calibration() Date: Mon, 18 Feb 2019 11:11:33 -0800 Message-Id: <20190218191141.3729-5-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP We can simplify error cleanup code if instead of passing a "struct platform_device *" to qoriq_tmu_calibration() and deriving a bunch of pointers from it, we pass those pointers directly. This way we won't be force to call platform_set_drvdata() as early in qoriq_tmu_probe() and consequently would be able to drop the "err_iomap" error path. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/qoriq_thermal.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index c24629b1b8c2..9bae001e8264 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -131,16 +131,16 @@ static int qoriq_tmu_get_sensor_id(void) return id; } -static int qoriq_tmu_calibration(struct platform_device *pdev) +static int qoriq_tmu_calibration(struct device *dev, + struct qoriq_tmu_data *data) { int i, val, len; u32 range[4]; const u32 *calibration; - struct device_node *np = pdev->dev.of_node; - struct qoriq_tmu_data *data = platform_get_drvdata(pdev); + struct device_node *np = dev->of_node; if (of_property_read_u32_array(np, "fsl,tmu-range", range, 4)) { - dev_err(&pdev->dev, "missing calibration range.\n"); + dev_err(dev, "missing calibration range.\n"); return -ENODEV; } @@ -152,7 +152,7 @@ static int qoriq_tmu_calibration(struct platform_device *pdev) calibration = of_get_property(np, "fsl,tmu-calibration", &len); if (calibration == NULL || len % 8) { - dev_err(&pdev->dev, "invalid calibration data.\n"); + dev_err(dev, "invalid calibration data.\n"); return -ENODEV; } @@ -195,27 +195,23 @@ static int qoriq_tmu_probe(struct platform_device *pdev) if (!data) return -ENOMEM; - platform_set_drvdata(pdev, data); - data->little_endian = of_property_read_bool(np, "little-endian"); data->sensor_id = qoriq_tmu_get_sensor_id(); if (data->sensor_id < 0) { dev_err(dev, "Failed to get sensor id\n"); - ret = -ENODEV; - goto err_iomap; + return -ENODEV; } data->regs = of_iomap(np, 0); if (!data->regs) { dev_err(dev, "Failed to get memory region\n"); - ret = -ENODEV; - goto err_iomap; + return -ENODEV; } qoriq_tmu_init_device(data); /* TMU initialization */ - ret = qoriq_tmu_calibration(pdev); /* TMU calibration */ + ret = qoriq_tmu_calibration(dev, data); /* TMU calibration */ if (ret < 0) goto err_tmu; @@ -229,6 +225,8 @@ static int qoriq_tmu_probe(struct platform_device *pdev) goto err_tmu; } + platform_set_drvdata(pdev, data); + /* Enable monitoring */ site = 0x1 << (15 - data->sensor_id); tmu_write(data, site | TMR_ME | TMR_ALPF, &data->regs->tmr); @@ -238,9 +236,6 @@ static int qoriq_tmu_probe(struct platform_device *pdev) err_tmu: iounmap(data->regs); -err_iomap: - platform_set_drvdata(pdev, NULL); - return ret; } From patchwork Mon Feb 18 19:11:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818637 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3B6296C2 for ; Mon, 18 Feb 2019 19:12:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 2A0482B92C for ; Mon, 18 Feb 2019 19:12:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1E52E2BC84; Mon, 18 Feb 2019 19:12:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AD81C2B92C for ; Mon, 18 Feb 2019 19:12:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728600AbfBRTMJ (ORCPT ); Mon, 18 Feb 2019 14:12:09 -0500 Received: from mail-pg1-f182.google.com ([209.85.215.182]:33508 "EHLO mail-pg1-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728465AbfBRTMI (ORCPT ); Mon, 18 Feb 2019 14:12:08 -0500 Received: by mail-pg1-f182.google.com with SMTP id h11so6560018pgl.0; Mon, 18 Feb 2019 11:12:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=DeiicEMgTNNDXmv9VFBWv0NLs52ELmzeLlmAN97MkhY=; b=fjNKfqqj/FzICc/YOAr9PB8rRoEk/c1KFLlRAYyd62uhV7u4JKnM6mBSDycEwGM87W UArXN2i5yxjtcVv5zC+oOWPlOLxg+jwWo1tVGfKwGu0SzN0aX9N2fGISr+Q8txd27F7G c/JRi/+UUf2q2pngdbZ7JHpmX4AiS2RzEVwnxyDmwxMwPxvKE3qdmbrfjVVSFFxfZpR+ HjAVwBJTMrycS05qvNvIlc2m4H7fvrQlo4hhjpLMsZjgXTRH1p7/lOrwCS6oTxSKZU2G Foon8YlAqo+VnET5x+0WMU8iETmv4cbqcGIXv1xPnIJpjiXpyg0DDZUIU0Jc/nqSu/qL AcEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DeiicEMgTNNDXmv9VFBWv0NLs52ELmzeLlmAN97MkhY=; b=kjlAD6m/sVNONl8FVWTjv5LaZjxpyG+DLK2NPJDh2l56ejmjr6rdj37KTNGurE3hzV dO+SHtIssno1fuAVscs8b7OtTdz3xSaSebQyCvgQB09t07ZectKcKPGxjK8CKidZyRpj mREmI7tu9ZMwzyYgZbU3A9a393XHz8TX8m/AJx+s3isu2myz0S9OySoi9R4t3vqxiNLi AAAgmCHZvwF2rTu9SaDUdBlvp6UbCqvDirJs73KiD0+V1Sr8xSrqvm3kJG3DewVypyx9 td154uyV4h3PnRUMJsUyVLwKafIDEvWyH5f+FjPA293Mk6ceYTygx1MFR5GQIPa94d1H ZT5w== X-Gm-Message-State: AHQUAuZxR1+G027/nlVAC9jK8H/3RKUkvFso2YG+Dy0XFLszq/FTZgyl TMmars6EAUAglmECQTbGrI4EQe7J X-Google-Smtp-Source: AHgI3IaQVpXnaz63akuwJm0/LH/evwSdpMtlHXcstLPBhcBLJjXdaWpAXVK6m562uZl7JNaO7z0B+g== X-Received: by 2002:a63:6ec2:: with SMTP id j185mr23988244pgc.341.1550517126518; Mon, 18 Feb 2019 11:12:06 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.05 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:05 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 05/12] thermal: qoriq: Convert driver to use devm_ioremap() Date: Mon, 18 Feb 2019 11:11:34 -0800 Message-Id: <20190218191141.3729-6-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Convert driver to use devm_ioremap() to simplify memory deallocation and error handling code. No functional change intended. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/qoriq_thermal.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index 9bae001e8264..472594fca03b 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -188,6 +188,7 @@ static int qoriq_tmu_probe(struct platform_device *pdev) struct qoriq_tmu_data *data; struct device_node *np = pdev->dev.of_node; struct device *dev = &pdev->dev; + struct resource *io; u32 site; data = devm_kzalloc(dev, sizeof(struct qoriq_tmu_data), @@ -203,7 +204,13 @@ static int qoriq_tmu_probe(struct platform_device *pdev) return -ENODEV; } - data->regs = of_iomap(np, 0); + io = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!io) { + dev_err(dev, "Failed to get memory region\n"); + return -ENODEV; + } + + data->regs = devm_ioremap(dev, io->start, resource_size(io)); if (!data->regs) { dev_err(dev, "Failed to get memory region\n"); return -ENODEV; @@ -213,7 +220,7 @@ static int qoriq_tmu_probe(struct platform_device *pdev) ret = qoriq_tmu_calibration(dev, data); /* TMU calibration */ if (ret < 0) - goto err_tmu; + return ret; data->tz = devm_thermal_zone_of_sensor_register(dev, data->sensor_id, @@ -222,7 +229,7 @@ static int qoriq_tmu_probe(struct platform_device *pdev) ret = PTR_ERR(data->tz); dev_err(dev, "Failed to register thermal zone device %d\n", ret); - goto err_tmu; + return ret; } platform_set_drvdata(pdev, data); @@ -232,11 +239,6 @@ static int qoriq_tmu_probe(struct platform_device *pdev) tmu_write(data, site | TMR_ME | TMR_ALPF, &data->regs->tmr); return 0; - -err_tmu: - iounmap(data->regs); - - return ret; } static int qoriq_tmu_remove(struct platform_device *pdev) @@ -246,7 +248,6 @@ static int qoriq_tmu_remove(struct platform_device *pdev) /* Disable monitoring */ tmu_write(data, TMR_DISABLE, &data->regs->tmr); - iounmap(data->regs); platform_set_drvdata(pdev, NULL); return 0; From patchwork Mon Feb 18 19:11:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818639 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C18FF17FB for ; Mon, 18 Feb 2019 19:12:45 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AFC972B92C for ; Mon, 18 Feb 2019 19:12:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A45792BC84; Mon, 18 Feb 2019 19:12:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 490272B92C for ; Mon, 18 Feb 2019 19:12:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728701AbfBRTMo (ORCPT ); Mon, 18 Feb 2019 14:12:44 -0500 Received: from mail-pl1-f194.google.com ([209.85.214.194]:39629 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728591AbfBRTMJ (ORCPT ); Mon, 18 Feb 2019 14:12:09 -0500 Received: by mail-pl1-f194.google.com with SMTP id 101so9180041pld.6; Mon, 18 Feb 2019 11:12:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7qkK84rhf9eI19WkazDOBz4QwYf9dy5ZGSMeUUd/NAc=; b=qqR1SyaoY/706E968CMaFBLiwWsKZDtSII1o/E3olng330+PU+3bMw0SGhQbrS8IfB YPWP6UdXAFokcATLbVnFqrqYbddAwv522Xp+58yO3nbcn5usyOrosvVylnWKcX0Dh3r4 i3EjD8tuYJ5xt5E8oBYpWbw09oGeQNTNr4KuYacfAyVJddJ/A9hHIbY/wAQkBgGQhihA EXSBR9Rx0zQs1tLMRuq2KElr1FDNXVoPNLg7v2PxeA4F2tMQu/Jjh/fiFoLdf0by5W9T li6clDlfH6kWfr5qJ60m4gq7vBZZMGrgI4lQTyIDPh802UntMBIw7XL//54qjj2TgrJF 3Y2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7qkK84rhf9eI19WkazDOBz4QwYf9dy5ZGSMeUUd/NAc=; b=YhK38/rUoNzesYRTmeMrHUfMmsDv/v9cEPYeVVBbuFn9p6wTt+KZgATPoRCOjc9DQN xwactQhkI1ssEiTKsT0rRB56DQ/RAWw2hkCa5lA+iB83nNtCQK1xcadGLJ8LzrAudtNl XHckFoV2dp9z5AgD5VhUS1yCk81DtdxijqHaaoy7kG5U5kraPC1rHKibGUbyV5nLQYfC eaGNZv10tsiCy9qzKKw+ICTx+oCHTMI6OgnNCvHN9hjAb8TghdK+7IRefnxTNSBeCsIn 6RGgYh3S3lv5Zu7GCq+GHbSQVBStWWGvnXxkYwAIHbnp+XHa828+6/b9ayVBASvhoaaN 8izA== X-Gm-Message-State: AHQUAuaVnrce5lWpYq/zG8xoDLgJ3/osug7g4+TyC/aCQjkDD/SZOu3D sKd3IFEL6Kve5nvVRxO72kprB0JO X-Google-Smtp-Source: AHgI3IbbcDs5WoQoS60beRy4gEXb/578MwZ4CWf+CM6YaYUUFuIKSYAy4/jGkpzvSViN50wq+v25DQ== X-Received: by 2002:a17:902:9a81:: with SMTP id w1mr26001683plp.19.1550517127711; Mon, 18 Feb 2019 11:12:07 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.06 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:07 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 06/12] thermal: qoriq: Add hwmon support Date: Mon, 18 Feb 2019 11:11:35 -0800 Message-Id: <20190218191141.3729-7-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Expose thermal readings as a HWMON device, so that it could be accessed using lm-sensors. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/qoriq_thermal.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index 472594fca03b..90af4c4caa52 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -11,6 +11,7 @@ #include #include "thermal_core.h" +#include "thermal_hwmon.h" #define SITES_MAX 16 @@ -232,6 +233,10 @@ static int qoriq_tmu_probe(struct platform_device *pdev) return ret; } + ret = devm_thermal_add_hwmon_sysfs(data->tz); + if (ret) + return ret; + platform_set_drvdata(pdev, data); /* Enable monitoring */ From patchwork Mon Feb 18 19:11:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818635 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D39206C2 for ; Mon, 18 Feb 2019 19:12:42 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C12862B92C for ; Mon, 18 Feb 2019 19:12:42 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B57F32BC84; Mon, 18 Feb 2019 19:12:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DE0862B92C for ; Mon, 18 Feb 2019 19:12:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728656AbfBRTMK (ORCPT ); Mon, 18 Feb 2019 14:12:10 -0500 Received: from mail-pf1-f195.google.com ([209.85.210.195]:36810 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728609AbfBRTMK (ORCPT ); Mon, 18 Feb 2019 14:12:10 -0500 Received: by mail-pf1-f195.google.com with SMTP id n22so9039536pfa.3; Mon, 18 Feb 2019 11:12:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=C4KXnKUbh4xVNl1Rhgd30L/K3+EBkbVzQxEQsOcy+8c=; b=dkbq+Lw2jeD6M0baOxWknoygE/6cUU4QJNOFZaAZ73kebR5gjOIaxCbb/L4fYZmIAv ltnZDZHvoPIJXDlvkJLx0iiiywj7M7ylasXcnSiiQBV4DA+nB2INkn2dCqfVOmjiBgtX QitR3MUDO+paamUtVxmafFJbCTKPCzQGDCqtWEe8DymZHBM1AxXdvVezwWQsO75GJNqe HXP6dBB0Ag4d92JbnUKE9YCflp67eAVilX9zxYfPKhNsux5dlyGy6ILvVLb8Ply1oZD1 E1JZmxTQssfUbB7qKisLrgEO0crEJaYxKCLR7oPmjZAQIGwHMiXIqLPWtaV3J6rioFUD 18BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=C4KXnKUbh4xVNl1Rhgd30L/K3+EBkbVzQxEQsOcy+8c=; b=mmRqkMgJijOKvr8xOvmG/XqSeuVX0Gxk+l/ZiOQ5UJk08yV4ZCndZ/47mrEw3wS8X+ xA5rIXAqFADE3TPaiEuyhwHr9KaaZ5XEaQL8jpZjUE5fkKSvCHIJkrETYZtE3oTXpuip rd3OmWEAmBnFzvIY+wAtXNFpu30R/fNgf9zxwIESfuhcRe5HzOxgqJsZd7T85wiwzYgD oPTY4VESiD6Zi8cUn/z5SJcYOx8HEI36ONC/zFmzyzB8dqyJ5d+uLddZ7H/i5GRIrKrR rSUJuwddJarYYN2sbqa6e9hVWF/r84iL66o5z8YV18/uNrmMcCt8pRVzHcRDJcmbSECN cvDg== X-Gm-Message-State: AHQUAubub09dyJqayl+MfBGiqiNCxg7WDtBqMWYNeuAqnA7ps0kn1FgI ursBEV9pEwSaOAA8IHHIZwjvCpKF X-Google-Smtp-Source: AHgI3IbMOnM0deE+nLQ8nKfZ9gLOp4pCesNbyR/E1eCn0ZixiYxnY6ZUae31MZjaCcDXalhR+zpYQg== X-Received: by 2002:a63:bf4c:: with SMTP id i12mr20338185pgo.382.1550517128974; Mon, 18 Feb 2019 11:12:08 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.07 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:08 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 07/12] thermal: qoriq: Convert driver to use regmap API Date: Mon, 18 Feb 2019 11:11:36 -0800 Message-Id: <20190218191141.3729-8-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Convert driver to use regmap API, drop custom LE/BE IO helpers and simplify bit manipulation using regmap_update_bits(). This also allows us to convert some register initialization to use loops and adds convenient debug access to TMU registers via debugfs. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/qoriq_thermal.c | 162 +++++++++++++++----------------- 1 file changed, 77 insertions(+), 85 deletions(-) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index 90af4c4caa52..97419ce70d83 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include "thermal_core.h" @@ -18,80 +19,42 @@ /* * QorIQ TMU Registers */ -struct qoriq_tmu_site_regs { - u32 tritsr; /* Immediate Temperature Site Register */ - u32 tratsr; /* Average Temperature Site Register */ - u8 res0[0x8]; -}; -struct qoriq_tmu_regs { - u32 tmr; /* Mode Register */ +#define REGS_TMR 0x000 /* Mode Register */ #define TMR_DISABLE 0x0 #define TMR_ME 0x80000000 #define TMR_ALPF 0x0c000000 - u32 tsr; /* Status Register */ - u32 tmtmir; /* Temperature measurement interval Register */ + +#define REGS_TMTMIR 0x008 /* Temperature measurement interval Register */ #define TMTMIR_DEFAULT 0x0000000f - u8 res0[0x14]; - u32 tier; /* Interrupt Enable Register */ + +#define REGS_TIER 0x020 /* Interrupt Enable Register */ #define TIER_DISABLE 0x0 - u32 tidr; /* Interrupt Detect Register */ - u32 tiscr; /* Interrupt Site Capture Register */ - u32 ticscr; /* Interrupt Critical Site Capture Register */ - u8 res1[0x10]; - u32 tmhtcrh; /* High Temperature Capture Register */ - u32 tmhtcrl; /* Low Temperature Capture Register */ - u8 res2[0x8]; - u32 tmhtitr; /* High Temperature Immediate Threshold */ - u32 tmhtatr; /* High Temperature Average Threshold */ - u32 tmhtactr; /* High Temperature Average Crit Threshold */ - u8 res3[0x24]; - u32 ttcfgr; /* Temperature Configuration Register */ - u32 tscfgr; /* Sensor Configuration Register */ - u8 res4[0x78]; - struct qoriq_tmu_site_regs site[SITES_MAX]; - u8 res5[0x9f8]; - u32 ipbrr0; /* IP Block Revision Register 0 */ - u32 ipbrr1; /* IP Block Revision Register 1 */ - u8 res6[0x310]; - u32 ttr0cr; /* Temperature Range 0 Control Register */ - u32 ttr1cr; /* Temperature Range 1 Control Register */ - u32 ttr2cr; /* Temperature Range 2 Control Register */ - u32 ttr3cr; /* Temperature Range 3 Control Register */ -}; +#define REGS_TTCFGR 0x080 /* Temperature Configuration Register */ +#define REGS_TSCFGR 0x084 /* Sensor Configuration Register */ + +#define REGS_TRITSR(n) (0x100 + 16 * (n)) /* Immediate Temperature + * Site Register + */ +#define REGS_TTRnCR(n) (0xf10 + 4 * (n)) /* Temperature Range n + * Control Register + */ /* * Thermal zone data */ struct qoriq_tmu_data { struct thermal_zone_device *tz; - struct qoriq_tmu_regs __iomem *regs; + struct regmap *regmap; int sensor_id; - bool little_endian; }; -static void tmu_write(struct qoriq_tmu_data *p, u32 val, void __iomem *addr) -{ - if (p->little_endian) - iowrite32(val, addr); - else - iowrite32be(val, addr); -} - -static u32 tmu_read(struct qoriq_tmu_data *p, void __iomem *addr) -{ - if (p->little_endian) - return ioread32(addr); - else - return ioread32be(addr); -} - static int tmu_get_temp(void *p, int *temp) { u32 val; struct qoriq_tmu_data *data = p; - val = tmu_read(data, &data->regs->site[data->sensor_id].tritsr); + regmap_read(data->regmap, REGS_TRITSR(data->sensor_id), &val); *temp = (val & 0xff) * 1000; return 0; @@ -146,10 +109,8 @@ static int qoriq_tmu_calibration(struct device *dev, } /* Init temperature range registers */ - tmu_write(data, range[0], &data->regs->ttr0cr); - tmu_write(data, range[1], &data->regs->ttr1cr); - tmu_write(data, range[2], &data->regs->ttr2cr); - tmu_write(data, range[3], &data->regs->ttr3cr); + for (i = 0; i < ARRAY_SIZE(range); i++) + regmap_write(data->regmap, REGS_TTRnCR(i), range[i]); calibration = of_get_property(np, "fsl,tmu-calibration", &len); if (calibration == NULL || len % 8) { @@ -159,9 +120,9 @@ static int qoriq_tmu_calibration(struct device *dev, for (i = 0; i < len; i += 8, calibration += 2) { val = of_read_number(calibration, 1); - tmu_write(data, val, &data->regs->ttcfgr); + regmap_write(data->regmap, REGS_TTCFGR, val); val = of_read_number(calibration + 1, 1); - tmu_write(data, val, &data->regs->tscfgr); + regmap_write(data->regmap, REGS_TSCFGR, val); } return 0; @@ -170,19 +131,40 @@ static int qoriq_tmu_calibration(struct device *dev, static void qoriq_tmu_init_device(struct qoriq_tmu_data *data) { /* Disable interrupt, using polling instead */ - tmu_write(data, TIER_DISABLE, &data->regs->tier); + regmap_write(data->regmap, REGS_TIER, TIER_DISABLE); /* Set update_interval */ - tmu_write(data, TMTMIR_DEFAULT, &data->regs->tmtmir); + regmap_write(data->regmap, REGS_TMTMIR, TMTMIR_DEFAULT); /* Disable monitoring */ - tmu_write(data, TMR_DISABLE, &data->regs->tmr); + regmap_write(data->regmap, REGS_TMR, TMR_DISABLE); } static const struct thermal_zone_of_device_ops tmu_tz_ops = { .get_temp = tmu_get_temp, }; +static const struct regmap_range qiriq_wr_yes_ranges[] = { + regmap_reg_range(REGS_TMR, REGS_TSCFGR), + regmap_reg_range(REGS_TTRnCR(0), REGS_TTRnCR(3)), +}; + +static const struct regmap_access_table qiriq_wr_table = { + .yes_ranges = qiriq_wr_yes_ranges, + .n_yes_ranges = ARRAY_SIZE(qiriq_wr_yes_ranges), +}; + +static const struct regmap_range qiriq_rd_yes_ranges[] = { + regmap_reg_range(REGS_TMR, REGS_TSCFGR), + regmap_reg_range(REGS_TTRnCR(0), REGS_TTRnCR(3)), + regmap_reg_range(REGS_TRITSR(0), REGS_TRITSR(15)), +}; + +static const struct regmap_access_table qiriq_rd_table = { + .yes_ranges = qiriq_rd_yes_ranges, + .n_yes_ranges = ARRAY_SIZE(qiriq_rd_yes_ranges), +}; + static int qoriq_tmu_probe(struct platform_device *pdev) { int ret; @@ -190,6 +172,19 @@ static int qoriq_tmu_probe(struct platform_device *pdev) struct device_node *np = pdev->dev.of_node; struct device *dev = &pdev->dev; struct resource *io; + const bool little_endian = of_property_read_bool(np, "little-endian"); + const enum regmap_endian format_endian = + little_endian ? REGMAP_ENDIAN_LITTLE : REGMAP_ENDIAN_BIG; + const struct regmap_config regmap_config = { + .reg_bits = 32, + .val_bits = 32, + .reg_stride = 4, + .rd_table = &qiriq_rd_table, + .wr_table = &qiriq_wr_table, + .val_format_endian = format_endian, + .max_register = SZ_4K, + }; + void __iomem *base; u32 site; data = devm_kzalloc(dev, sizeof(struct qoriq_tmu_data), @@ -197,8 +192,6 @@ static int qoriq_tmu_probe(struct platform_device *pdev) if (!data) return -ENOMEM; - data->little_endian = of_property_read_bool(np, "little-endian"); - data->sensor_id = qoriq_tmu_get_sensor_id(); if (data->sensor_id < 0) { dev_err(dev, "Failed to get sensor id\n"); @@ -211,12 +204,19 @@ static int qoriq_tmu_probe(struct platform_device *pdev) return -ENODEV; } - data->regs = devm_ioremap(dev, io->start, resource_size(io)); - if (!data->regs) { + base = devm_ioremap(dev, io->start, resource_size(io)); + if (!base) { dev_err(dev, "Failed to get memory region\n"); return -ENODEV; } + data->regmap = devm_regmap_init_mmio(dev, base, ®map_config); + if (IS_ERR(data->regmap)) { + ret = PTR_ERR(data->regmap); + dev_err(dev, "Failed to init regmap (%d)\n", ret); + return ret; + } + qoriq_tmu_init_device(data); /* TMU initialization */ ret = qoriq_tmu_calibration(dev, data); /* TMU calibration */ @@ -241,7 +241,7 @@ static int qoriq_tmu_probe(struct platform_device *pdev) /* Enable monitoring */ site = 0x1 << (15 - data->sensor_id); - tmu_write(data, site | TMR_ME | TMR_ALPF, &data->regs->tmr); + regmap_write(data->regmap, REGS_TMR, site | TMR_ME | TMR_ALPF); return 0; } @@ -251,7 +251,7 @@ static int qoriq_tmu_remove(struct platform_device *pdev) struct qoriq_tmu_data *data = platform_get_drvdata(pdev); /* Disable monitoring */ - tmu_write(data, TMR_DISABLE, &data->regs->tmr); + regmap_write(data->regmap, REGS_TMR, TMR_DISABLE); platform_set_drvdata(pdev, NULL); @@ -259,30 +259,22 @@ static int qoriq_tmu_remove(struct platform_device *pdev) } #ifdef CONFIG_PM_SLEEP -static int qoriq_tmu_suspend(struct device *dev) + +static int qoriq_tmu_suspend_resume(struct device *dev, unsigned int val) { - u32 tmr; struct qoriq_tmu_data *data = dev_get_drvdata(dev); - /* Disable monitoring */ - tmr = tmu_read(data, &data->regs->tmr); - tmr &= ~TMR_ME; - tmu_write(data, tmr, &data->regs->tmr); + return regmap_update_bits(data->regmap, REGS_TMR, TMR_ME, val); +} - return 0; +static int qoriq_tmu_suspend(struct device *dev) +{ + return qoriq_tmu_suspend_resume(dev, 0); } static int qoriq_tmu_resume(struct device *dev) { - u32 tmr; - struct qoriq_tmu_data *data = dev_get_drvdata(dev); - - /* Enable monitoring */ - tmr = tmu_read(data, &data->regs->tmr); - tmr |= TMR_ME; - tmu_write(data, tmr, &data->regs->tmr); - - return 0; + return qoriq_tmu_suspend_resume(dev, TMR_ME); } #endif From patchwork Mon Feb 18 19:11:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818633 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 56A451390 for ; Mon, 18 Feb 2019 19:12:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 45D792B92C for ; Mon, 18 Feb 2019 19:12:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 39FD42BC84; Mon, 18 Feb 2019 19:12:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DCDAA2B92C for ; Mon, 18 Feb 2019 19:12:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728700AbfBRTMM (ORCPT ); Mon, 18 Feb 2019 14:12:12 -0500 Received: from mail-pg1-f194.google.com ([209.85.215.194]:37966 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728647AbfBRTML (ORCPT ); Mon, 18 Feb 2019 14:12:11 -0500 Received: by mail-pg1-f194.google.com with SMTP id m2so6654363pgl.5 for ; Mon, 18 Feb 2019 11:12:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=O90S3LUmRKkEoos1aLb4IdRkhgmgFt028b5le8SkaPw=; b=a3PS8/m02GC3gw/Lt7kCOVFEw1YmbgXOQkXWNdpOYHIc6xpDUmdbTYeEfy91XjMUaT wx3adFJow9JgbRZ3lh31nE3zjo5qsu/yIEefdF93RCEnibokr0lbLHtp8g+OfiRhJG2F vGVx0C20ztQ719phg+aSkBLbvciy5NXXsU+jGY/jn1nsqUezSofRLhGX5DcYIz6E+jyW c0nXe2DPzl2/TJwlBFoaupGkOiVOtP9vsNtSyMvLJU+hdijeHuHNzw/rbzfHHJngkWy2 rVH7t1UCEfjLiLaGwdS5UG2jByjq5DxgznZdCYlfCqyjvCfcAv2kAGpH2ohVOrezpiZq dQfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=O90S3LUmRKkEoos1aLb4IdRkhgmgFt028b5le8SkaPw=; b=K73sQMc8mkuN6d/9r/weTuQjaW+mOgMmeIEyPou9p2nJZEPOuCVZR1X5JDG/wDjjTg I+gt2dtSU9SdAwdRogqNVztx8MjW3zQjP0iptjj0HxCQx7r/e4q8Ce4++o6gk+qV/Dfb M26PgE+IYSR0IBeQ7i1KPJ4Ym3B5uEtoczaOa8o8bpRaE7n1p8lhODUOG8lqv8c1pCue LLVuazl/4PDhrkQN1REJ5hvq7KwJWAeQqvKisA6Ev+1/CH6qAOOAFz6FAtkR8a1Yorpo /hDqsILycE4wxc/CcXIcRa8XKJzjoS1CdeKd1xyJAQZ7m6NHMLthng91oiisGWA5zmy7 1umA== X-Gm-Message-State: AHQUAubzUqZ557doh4C2sNUH3L0ke/dBGHgSm23A3XMOjXQ5dwEgjhP3 mJOqile3HhNmguur7sh0KswH6ndw X-Google-Smtp-Source: AHgI3IYdazr1yCdjKY3eFGTejInJS2gQXgtErPOUCsxtVbkea++JxHG0Ne18mvpoke8tcHQ25vuEFg== X-Received: by 2002:a65:534b:: with SMTP id w11mr20291625pgr.125.1550517129846; Mon, 18 Feb 2019 11:12:09 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.09 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:09 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov Subject: [PATCH 08/12] thermal: qoriq: Enable monitoring before querying temperature Date: Mon, 18 Feb 2019 11:11:37 -0800 Message-Id: <20190218191141.3729-9-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Devm_thermal_zone_of_sensor_register() will call tmu_get_temp() as a part of its execution, so we need to enable monitoring before that happens in order to avoid returning bogus values. Change the ordering in qoriq_tmu_probe() a bit to fix that. Signed-off-by: Andrey Smirnov --- drivers/thermal/qoriq_thermal.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index 97419ce70d83..6478d7a8168f 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -223,6 +223,10 @@ static int qoriq_tmu_probe(struct platform_device *pdev) if (ret < 0) return ret; + /* Enable monitoring */ + site = 0x1 << (15 - data->sensor_id); + regmap_write(data->regmap, REGS_TMR, site | TMR_ME | TMR_ALPF); + data->tz = devm_thermal_zone_of_sensor_register(dev, data->sensor_id, data, &tmu_tz_ops); @@ -230,20 +234,21 @@ static int qoriq_tmu_probe(struct platform_device *pdev) ret = PTR_ERR(data->tz); dev_err(dev, "Failed to register thermal zone device %d\n", ret); - return ret; + goto disable_monitoring; } ret = devm_thermal_add_hwmon_sysfs(data->tz); if (ret) - return ret; + goto disable_monitoring; platform_set_drvdata(pdev, data); - /* Enable monitoring */ - site = 0x1 << (15 - data->sensor_id); - regmap_write(data->regmap, REGS_TMR, site | TMR_ME | TMR_ALPF); - return 0; + +disable_monitoring: + /* Disable monitoring */ + regmap_write(data->regmap, REGS_TMR, TMR_DISABLE); + return ret; } static int qoriq_tmu_remove(struct platform_device *pdev) From patchwork Mon Feb 18 19:11:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818631 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 433B91390 for ; Mon, 18 Feb 2019 19:12:40 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3257E2B92C for ; Mon, 18 Feb 2019 19:12:40 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2645A2BC84; Mon, 18 Feb 2019 19:12:40 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C3D792B92C for ; Mon, 18 Feb 2019 19:12:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728720AbfBRTMN (ORCPT ); Mon, 18 Feb 2019 14:12:13 -0500 Received: from mail-pf1-f195.google.com ([209.85.210.195]:41750 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728698AbfBRTMM (ORCPT ); Mon, 18 Feb 2019 14:12:12 -0500 Received: by mail-pf1-f195.google.com with SMTP id d25so684403pfn.8; Mon, 18 Feb 2019 11:12:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=xcRi1m5iq1Fe3LlNmrWWvdAmf1L0ArE4URvvcffj3lU=; b=fdrSuPgKpcsZpBQ9e6La3PC5NFwACmfMOimuYzVHCLi1xbBQ8DvPiGK5Kbx3oVlia3 zP/NTLCbGVYxT2riS03497E0rp9BDBrz//YQk+6iQCQ8UQgNYPHi2/9mDxgvopyuvPPm PqCB+41HrFVMR84ydlqmQIZJznY3B+QGkCxnLKd5ZIjsHzCf4gdbn7p8Q3v8Rv/19g69 ix2TpYNKpJIZT8kU6+Qmf/MOqLMGOdA95sHUI0FGGwqb/YrTFLIwErwJU20xctMQlkvn jhL7c3YxrjjSg/BanmEWtJ+ULEe2F7JD0TqkVy8DfJbfYuAjOIFl8ppZw2G652gJfEif Hx9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=xcRi1m5iq1Fe3LlNmrWWvdAmf1L0ArE4URvvcffj3lU=; b=re5nI3XpvoeDXE4ouyGcFfIz1P65GWI2I/IqiNcvdQmfrShnTQ0FVH25hUM5xTgZKE 86MLTfTDbf9dE79np21FIGKjfWZNHqlDBqxn38gdGkUeO1hScy/yJzZ7F079+Qr+vspB /H5gOiA3V79yKZEBRW1Yr53c1edVZlgm1Yi6HFKhKG+FDqylz963fSUUz26gIA9/2N4c 9GG5Ye0sZE/Okra1OSqRBPXvxIWyAfcPDoVouudYDacL+knMrs5S8GmWPIh1v51eQYb9 o48drJYRwQbvwKnVqzaUurngxz53dHze66lC/UUPDcNPavIk6d5bktvdDQ7ILqXKgn8w hqwA== X-Gm-Message-State: AHQUAuazygn+de+LATNHhQjC+T6wcSxl7N0fQgAi06D8s9w9J1bJnayV AuSl93r2p7miSWpmVDqVfUYLli5V X-Google-Smtp-Source: AHgI3IbiNcqNk+PU15N/8pfIA4g8Y5ouQcSSowIkMJqKXV0uN1C4Hp/phmKNWhdzONx67k1nSuowSA== X-Received: by 2002:a63:ce18:: with SMTP id y24mr20375395pgf.321.1550517131090; Mon, 18 Feb 2019 11:12:11 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.09 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:10 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 09/12] thermal: qoriq: Do not report invalid temperature reading Date: Mon, 18 Feb 2019 11:11:38 -0800 Message-Id: <20190218191141.3729-10-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Before returning measured temperature data to upper layer we need to make sure that the reading was marked as "valid" to avoid reporting bogus data. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/qoriq_thermal.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index 6478d7a8168f..3d520d3b2da4 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -37,6 +37,7 @@ #define REGS_TRITSR(n) (0x100 + 16 * (n)) /* Immediate Temperature * Site Register */ +#define TRITSR_V BIT(31) #define REGS_TTRnCR(n) (0xf10 + 4 * (n)) /* Temperature Range n * Control Register */ @@ -55,8 +56,10 @@ static int tmu_get_temp(void *p, int *temp) struct qoriq_tmu_data *data = p; regmap_read(data->regmap, REGS_TRITSR(data->sensor_id), &val); - *temp = (val & 0xff) * 1000; + if (!(val & TRITSR_V)) + return -ENODATA; + *temp = (val & 0xff) * 1000; return 0; } From patchwork Mon Feb 18 19:11:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818629 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AA5626C2 for ; Mon, 18 Feb 2019 19:12:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9957B2B92C for ; Mon, 18 Feb 2019 19:12:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8B3B52BC84; Mon, 18 Feb 2019 19:12:38 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5A8E62B92C for ; Mon, 18 Feb 2019 19:12:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728698AbfBRTMb (ORCPT ); Mon, 18 Feb 2019 14:12:31 -0500 Received: from mail-pf1-f194.google.com ([209.85.210.194]:42245 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728721AbfBRTMO (ORCPT ); Mon, 18 Feb 2019 14:12:14 -0500 Received: by mail-pf1-f194.google.com with SMTP id n74so9028545pfi.9; Mon, 18 Feb 2019 11:12:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mFyxx3coigLXIUnYrMNDcJ8yS3ex13/5C2k6HQrWOzQ=; b=j/2zmTJId//3kAJHI4zqwJNlTgSIlBOaeR9MScVESdrnORq1CO8/zgxGVb3riMldIt bteltu/2LuE2xTWm36jS+AMfD1Ylf4YOoqStlcJmJQfwV6TRNAiKFziimhwnFjzRNo/k OjvLOFqBHp64Io8XqQVsW+2H2UdOQPupazwLhgAGqQm3cUW2qNgw9UA7M4z/DB2Qbut9 S5YA/89qAPoCFz62mbzrnRLqYSVGAKSHrwlFQ+Kv6QMixPl52x+xq5HopS0HNrBh0n4m KeJVEHELKyMf5LvNvgb4J3x12/Is19UTp7r/Nj5CCGLBOPUaquxdIyEmixKQJigB61zL uJpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=mFyxx3coigLXIUnYrMNDcJ8yS3ex13/5C2k6HQrWOzQ=; b=U+Whf7WaAb7xhlHtnEHBPjoVfMbXwdH+GzU7zP7Q2/0rQ6K014B8IUKa8Rr4od3eUL FfotE4DlmscrVqPxgAKowhNwRJeMA0/3FJc4xo++LKPWOjSUl7/SZhkzbRbX9nN7bdl5 zDaVV80PTNVDSosi119qPEGDIPmLsBcp6OPIaIe8oVHtI71N8GzFP3aG3XEQLCkUnuk7 9Jv2LHRSxJSMV7KXmqqzsT1b6bqR3PQl8EBTVQMknchRkVCPhGPCnfqBm6VJdYuc1uLH 5dpdjBDGFoARu5lHeLT9qeHsTZ9594Z7pUT9akX6OrNRNjPeclPkTVloGyryOMdOwDK8 K7Wg== X-Gm-Message-State: AHQUAuY8JX1XVfzA3jgkXZmkv+1zdFHsrTzHu98m5XEEW+YrxjVYrqqK i2xvX9fS0rOokCaBAzJFqbA3z2EF X-Google-Smtp-Source: AHgI3IbUj5laPIxoU+n3JTaSdLFz0kRUxtnOKSIwsiVL9d/Ppq6eO+4JPq+nTTfgNXJKO8rj7nf4nw== X-Received: by 2002:a63:ed0b:: with SMTP id d11mr6249465pgi.435.1550517132457; Mon, 18 Feb 2019 11:12:12 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.11 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:11 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 10/12] thermal: qoriq: Simplify error handling in qoriq_tmu_get_sensor_id() Date: Mon, 18 Feb 2019 11:11:39 -0800 Message-Id: <20190218191141.3729-11-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Use goto to avoid repeating resource deallocation code. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/qoriq_thermal.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index 3d520d3b2da4..d4f5e180e1ee 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -78,9 +78,8 @@ static int qoriq_tmu_get_sensor_id(void) "#thermal-sensor-cells", 0, &sensor_specs); if (ret) { - of_node_put(np); - of_node_put(sensor_np); - return ret; + id = ret; + goto out; } if (sensor_specs.args_count >= 1) { @@ -91,7 +90,7 @@ static int qoriq_tmu_get_sensor_id(void) } else { id = 0; } - +out: of_node_put(np); of_node_put(sensor_np); From patchwork Mon Feb 18 19:11:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818625 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id ADD481390 for ; Mon, 18 Feb 2019 19:12:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9B9C82B92C for ; Mon, 18 Feb 2019 19:12:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8F2B02BC84; Mon, 18 Feb 2019 19:12:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1D53D2B92C for ; Mon, 18 Feb 2019 19:12:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728783AbfBRTMQ (ORCPT ); Mon, 18 Feb 2019 14:12:16 -0500 Received: from mail-pg1-f194.google.com ([209.85.215.194]:37970 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728758AbfBRTMP (ORCPT ); Mon, 18 Feb 2019 14:12:15 -0500 Received: by mail-pg1-f194.google.com with SMTP id m2so6654430pgl.5; Mon, 18 Feb 2019 11:12:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=G1jRqsHlDGlfrRFhbWZQqLMZ680TUhIKscck8kcbiSU=; b=Q8eiJykZtSLT+d69UN4B790ZzCfZZovk3nGCaXT8HYH/htuoyAsOulgFAI3C/LXEGe pxUyOFxT3NVQe7KjFLVd8tkEVkdc335QacVr27/U2k+RChsqTH89rOWu1z/0obPpQc12 wQBvWRl/NythEt16frnFBtAbBJaVkXfS1IQnChjQGzXvy1dtO0x+MXePH93j+OnvVhhd zppRFrtR7CR18UQp1hblTECwjA+d7gA/MfyOaDkYEH5jR5qbKdrO61zjhlV5NTiDsO5i oGkushi9Do3NpVVcjDM3Z5fdOQiJk05eFZE/dUB5sHbUM0bIGVZcdYtwsfpN7qE9z1WT 8LyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=G1jRqsHlDGlfrRFhbWZQqLMZ680TUhIKscck8kcbiSU=; b=b+K2wNqJHYXlOLjY77VfkMwU2oWjVWY4wkhqPzg7kHiTuvQgpsDM7iODveHr/i60KG Fgnt3fKfEHF+cgP6CpRqy7y3Tf1HzXnDX0yVuy1HVLowvcwfYy/42b4HvYUfjRzJncZf 4Uoq0nEEU5qxbW/q0XUWUX4rZ4L3VhqU+YRsIc2aBd41NXCzG5JKYztk2uWsH+e+h/9T zHundTik7kTwVzUVl9JUXaLa6o6BqBfX1ERfM41oWHRWNvDFOD2bzlfm1ZWs/LYVFhFL Ehs01aWFKaz3EOiP7EMveXQRPetYdv/8Z8nMRs1RrjGwsxNYcSJe8TMzEUY04tCXngSI k2Qg== X-Gm-Message-State: AHQUAuajfrFWl0nT2KtNVd/KswMzrByczLtdRso3tFlg0p7IzxTbIjDT ggaYo1p7OXIAnPix32w87kXC+nVp X-Google-Smtp-Source: AHgI3IYTSGWmzAq8cAuWLHOpG/69lmfWDL3fyv5QcEOh0EgEYpILXIYTp+Ypddlq8nhrnk1Kl63VeA== X-Received: by 2002:a63:8948:: with SMTP id v69mr20527767pgd.140.1550517133699; Mon, 18 Feb 2019 11:12:13 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.12 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:12 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 11/12] thermal: qoriq: Be more strict when parsing "thermal-sensors" Date: Mon, 18 Feb 2019 11:11:40 -0800 Message-Id: <20190218191141.3729-12-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP As per Documentation/devicetree/bindings/thermal/qoriq-thermal.txt thermal-sensor-cells _must_ be 1, so there is no reason to be more lenient in the code and treat the absence of argument in thermal-sensors specifier as a valid DT code. Drop that special case to simplify sensor ID retreival code. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/qoriq_thermal.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index d4f5e180e1ee..f746c62789b0 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -82,14 +82,14 @@ static int qoriq_tmu_get_sensor_id(void) goto out; } - if (sensor_specs.args_count >= 1) { - id = sensor_specs.args[0]; - WARN(sensor_specs.args_count > 1, - "%pOFn: too many cells in sensor specifier %d\n", - sensor_specs.np, sensor_specs.args_count); - } else { - id = 0; + if (sensor_specs.args_count != 1) { + pr_err("%pOFn: Invalid number of cells in sensor specifier %d\n", + sensor_specs.np, sensor_specs.args_count); + id = -EINVAL; + goto out; } + + id = sensor_specs.args[0]; out: of_node_put(np); of_node_put(sensor_np); From patchwork Mon Feb 18 19:11:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Smirnov X-Patchwork-Id: 10818627 X-Patchwork-Delegate: eduardo.valentin@ti.com Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 26CD51390 for ; Mon, 18 Feb 2019 19:12:31 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 12DCE2B92C for ; Mon, 18 Feb 2019 19:12:31 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 051342BC84; Mon, 18 Feb 2019 19:12:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DA2D32B92C for ; Mon, 18 Feb 2019 19:12:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728825AbfBRTMW (ORCPT ); Mon, 18 Feb 2019 14:12:22 -0500 Received: from mail-pl1-f194.google.com ([209.85.214.194]:34373 "EHLO mail-pl1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728698AbfBRTMQ (ORCPT ); Mon, 18 Feb 2019 14:12:16 -0500 Received: by mail-pl1-f194.google.com with SMTP id d15so2036956plr.1; Mon, 18 Feb 2019 11:12:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=IdPVPuEItDnwPeK60nkAnUjf6UZpWVTdqGrlfCeQJY8=; b=ICrn/E3oIZYvK2gWlCUyH0f0zGyqiE+Yo1rohr7Gz+V5VM26o1HPye+N9AFCQ3d+KB sJnAuSQJClVTPOomI7AdmiBs1rk0NiUwmervsgh8PYq8CMFOhUlTMxuJdOEYJo55xypF KQFDsm0HwgvLCZhlDbzy+CjILmuNXvHXK+QHnx3qxN3RYZZoL5RG6PQWXj6UyJ5yZVS7 a7uYLgU2vTDdC9pemKgMZj/cXzUrP4XDBhKtVONEjslaAiPVLJHBGqQYTTnRATjBpAby yP+TqRHMxAnslIx98Ms4BYdMHnw0wRYXAVH5huh0+kRx8cKOTXr8/+IFHbAjaL8liktZ T3UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=IdPVPuEItDnwPeK60nkAnUjf6UZpWVTdqGrlfCeQJY8=; b=U0o4BR/s/ggD0ppxK/Bm3z25TVYkj+cMGYhQxt3Wr4y9KY9Cx57NNYSOKUyIdoVXGo FAxwwBpL9j0PQrrTS/5MaxkrPI9W8Bqd4iI5/PLOsIJep/rgAEWVLa6lSlsoDvGuMXg+ dPsklK+Fkinxn6y5G2vE+RXC5GvWmqTaNB98i16Jvsh8Phtlqq/gudYxnDqQpHzGY5d3 06ysjJFWtNTel1673b2hRfPCyfIKBZSx0k09fiM7liIIatrU4s6TPas1+rEJpE7gyVpn XQf1jii8yOK5zqjpZ6BnPejH2sWIKaQNOZd+r+CUBbHXNF08tlrOhch8wnLJyGoNWP4u JT7A== X-Gm-Message-State: AHQUAubd5kphqDFoNPCkIfRaka5qUF+QILJHsgHGLApXpg6yo95HPF5j Vt8NEg5anejkbCt/YZW9xDhABD+B X-Google-Smtp-Source: AHgI3IZceGKiYaxXuM2X5X63aSHyo5JEJ/G9kexZvF3IcZmOEiDrPUULcuFgj0WwJZ09bDx0169G0w== X-Received: by 2002:a17:902:5a42:: with SMTP id f2mr16767498plm.157.1550517135092; Mon, 18 Feb 2019 11:12:15 -0800 (PST) Received: from squirtle.lan (c-24-22-235-96.hsd1.wa.comcast.net. [24.22.235.96]) by smtp.gmail.com with ESMTPSA id t12sm33189727pgq.68.2019.02.18.11.12.13 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Feb 2019 11:12:14 -0800 (PST) From: Andrey Smirnov To: linux-pm@vger.kernel.org Cc: Andrey Smirnov , Chris Healy , Lucas Stach , Zhang Rui , Eduardo Valentin , Daniel Lezcano , linux-imx@nxp.com, linux-kernel@vger.kernel.org Subject: [PATCH 12/12] thermal: qoriq: Add support for multiple thremal sites Date: Mon, 18 Feb 2019 11:11:41 -0800 Message-Id: <20190218191141.3729-13-andrew.smirnov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218191141.3729-1-andrew.smirnov@gmail.com> References: <20190218191141.3729-1-andrew.smirnov@gmail.com> MIME-Version: 1.0 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP TMU IP block provides temerature measurement for up to 16 sites, current implementation of the driver however hardcodes a single site ID. Change the code so it would be possible to reference multiple sites as indivudial sensors and get their temperature readings. Signed-off-by: Andrey Smirnov Cc: Chris Healy Cc: Lucas Stach Cc: Zhang Rui Cc: Eduardo Valentin Cc: Daniel Lezcano Cc: linux-imx@nxp.com Cc: linux-pm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- drivers/thermal/qoriq_thermal.c | 132 ++++++++++++++++++++------------ 1 file changed, 84 insertions(+), 48 deletions(-) diff --git a/drivers/thermal/qoriq_thermal.c b/drivers/thermal/qoriq_thermal.c index f746c62789b0..6cc6e6b36fb0 100644 --- a/drivers/thermal/qoriq_thermal.c +++ b/drivers/thermal/qoriq_thermal.c @@ -24,6 +24,8 @@ #define TMR_DISABLE 0x0 #define TMR_ME 0x80000000 #define TMR_ALPF 0x0c000000 +#define TMR_ALPF_MASK GENMASK(27, 26) + #define REGS_TMTMIR 0x008 /* Temperature measurement interval Register */ #define TMTMIR_DEFAULT 0x0000000f @@ -41,21 +43,32 @@ #define REGS_TTRnCR(n) (0xf10 + 4 * (n)) /* Temperature Range n * Control Register */ +struct qoriq_tmu_sensor { + struct thermal_zone_device *tz; + int id; +}; + /* * Thermal zone data */ struct qoriq_tmu_data { struct thermal_zone_device *tz; struct regmap *regmap; - int sensor_id; + struct qoriq_tmu_sensor sensors[SITES_MAX]; }; +static struct qoriq_tmu_data *qoriq_sensor_to_data(struct qoriq_tmu_sensor *s) +{ + return container_of(s, struct qoriq_tmu_data, sensors[s->id]); +} + static int tmu_get_temp(void *p, int *temp) { u32 val; - struct qoriq_tmu_data *data = p; + struct qoriq_tmu_sensor *s = p; + struct qoriq_tmu_data *data = qoriq_sensor_to_data(s); - regmap_read(data->regmap, REGS_TRITSR(data->sensor_id), &val); + regmap_read(data->regmap, REGS_TRITSR(s->id), &val); if (!(val & TRITSR_V)) return -ENODATA; @@ -63,38 +76,86 @@ static int tmu_get_temp(void *p, int *temp) return 0; } -static int qoriq_tmu_get_sensor_id(void) +static const struct thermal_zone_of_device_ops tmu_tz_ops = { + .get_temp = tmu_get_temp, +}; + +static int qoriq_tmu_populate_sensors(struct device *dev, + struct qoriq_tmu_data *data) { - int ret, id; + int ret, id, i, count = 0; struct of_phandle_args sensor_specs; struct device_node *np, *sensor_np; + struct qoriq_tmu_sensor *s; np = of_find_node_by_name(NULL, "thermal-zones"); if (!np) return -ENODEV; - sensor_np = of_get_next_child(np, NULL); - ret = of_parse_phandle_with_args(sensor_np, "thermal-sensors", - "#thermal-sensor-cells", - 0, &sensor_specs); - if (ret) { - id = ret; - goto out; + for_each_child_of_node(np, sensor_np) { + u16 msite; + + ret = of_parse_phandle_with_args(sensor_np, "thermal-sensors", + "#thermal-sensor-cells", + 0, &sensor_specs); + if (ret) + break; + + if (sensor_specs.args_count != 1) { + pr_err("%pOFn: Invalid number of cells in sensor specifier %d\n", + sensor_specs.np, sensor_specs.args_count); + ret = -EINVAL; + break; + } + + id = sensor_specs.args[0]; + if (id >= SITES_MAX) { + ret = -EINVAL; + dev_err(dev, "Sensor id %d is out of range\n", id); + break; + } + + msite = BIT(15 - id); + /* Enable monitoring of that particular sensor*/ + regmap_update_bits(data->regmap, REGS_TMR, msite, msite); + + s = &data->sensors[id]; + s->id = id; + count++; } - if (sensor_specs.args_count != 1) { - pr_err("%pOFn: Invalid number of cells in sensor specifier %d\n", - sensor_specs.np, sensor_specs.args_count); - id = -EINVAL; - goto out; + of_node_put(np); + if (ret) { + /* We only need to "put" sensor_np if we exited the + * loop early with "break" + */ + of_node_put(sensor_np); + return ret; } - id = sensor_specs.args[0]; -out: - of_node_put(np); - of_node_put(sensor_np); + /* Enable monitoring */ + regmap_update_bits(data->regmap, REGS_TMR, TMR_ME | TMR_ALPF_MASK, + TMR_ME | TMR_ALPF); + + for (i = 0; i < count; i++) { + s = &data->sensors[i]; + s->tz = devm_thermal_zone_of_sensor_register(dev, s->id, s, + &tmu_tz_ops); + if (IS_ERR(s->tz)) { + ret = PTR_ERR(s->tz); + dev_err(dev, + "Failed to register thermal zone device %d\n", + ret); + break; + } + + ret = devm_thermal_add_hwmon_sysfs(s->tz); + if (ret) + break; + + } - return id; + return ret; } static int qoriq_tmu_calibration(struct device *dev, @@ -142,10 +203,6 @@ static void qoriq_tmu_init_device(struct qoriq_tmu_data *data) regmap_write(data->regmap, REGS_TMR, TMR_DISABLE); } -static const struct thermal_zone_of_device_ops tmu_tz_ops = { - .get_temp = tmu_get_temp, -}; - static const struct regmap_range qiriq_wr_yes_ranges[] = { regmap_reg_range(REGS_TMR, REGS_TSCFGR), regmap_reg_range(REGS_TTRnCR(0), REGS_TTRnCR(3)), @@ -187,19 +244,12 @@ static int qoriq_tmu_probe(struct platform_device *pdev) .max_register = SZ_4K, }; void __iomem *base; - u32 site; data = devm_kzalloc(dev, sizeof(struct qoriq_tmu_data), GFP_KERNEL); if (!data) return -ENOMEM; - data->sensor_id = qoriq_tmu_get_sensor_id(); - if (data->sensor_id < 0) { - dev_err(dev, "Failed to get sensor id\n"); - return -ENODEV; - } - io = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!io) { dev_err(dev, "Failed to get memory region\n"); @@ -225,21 +275,7 @@ static int qoriq_tmu_probe(struct platform_device *pdev) if (ret < 0) return ret; - /* Enable monitoring */ - site = 0x1 << (15 - data->sensor_id); - regmap_write(data->regmap, REGS_TMR, site | TMR_ME | TMR_ALPF); - - data->tz = devm_thermal_zone_of_sensor_register(dev, - data->sensor_id, - data, &tmu_tz_ops); - if (IS_ERR(data->tz)) { - ret = PTR_ERR(data->tz); - dev_err(dev, "Failed to register thermal zone device %d\n", - ret); - goto disable_monitoring; - } - - ret = devm_thermal_add_hwmon_sysfs(data->tz); + ret = qoriq_tmu_populate_sensors(dev, data); if (ret) goto disable_monitoring;