Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp825729imm; Wed, 17 Oct 2018 08:54:04 -0700 (PDT) X-Google-Smtp-Source: ACcGV61J8rQVK+7JbVnfADKmq5lshBgLJXgVL+WCf1hdt9LMT9B3TS3u6LuESbUMybenEqpY+AvF X-Received: by 2002:a63:7e1c:: with SMTP id z28-v6mr25203756pgc.190.1539791644590; Wed, 17 Oct 2018 08:54:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1539791644; cv=none; d=google.com; s=arc-20160816; b=mCPq4rjbwhOLg6APyxjqrqmzcC36skGzMirsxRB+LXeatgnQxXRgUCLoEJbWQFcydA QTsx6Ww6cM1KO3+YQbqi12PJf7yyRCiF3+3XV38w8UbdS5QwLqDZfjCh6NzofPSbupY/ 3s0h52FShKU9P5FBSIToJhTB0dH4OITptN+ikfvwh36tQNyVdTIk90eDC/reO5Cf7QOt CcVLV0o5L5gc19Xvw00ZOdeNflENeMkjQ7jtKVH+bk+RaWYYRoiulDr78+ox4Z3Zmx1v yzNtOm7sKYuOxn6+hp09D+KB4cy8cpD0jBU7Mq/nzpXwZzvy2oYqpRUIN6U3J5b4kF3i 2Zlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:cms-type:message-id:date :subject:cc:to:from:dkim-signature:dkim-filter; bh=1oWBRBtDvyVpe9jhkhwu+IptWKCNLtmNwUKxkG3IkfQ=; b=cLnDWdE0gsvoTDmHLpd/jZtgvq47P9i3bfmV56sY54bJ4P6Y7LwvkjYXJvTgpa7pA4 IPtZOeET6UkdYszAxLkWdUdPsKiDJhVTEzorz1fOWVM7xQvYCU00Y2kUi01kskpYqqcb ZeqXh15WouixAiGlUSKoB47youXQlPwDFOg5jhrohb0jSb4l/3foCbJ+rjETfWSBQQ3y aGV+v/0jQC9rU/1Rtk66P7yNpraOOoiQw1nfITyzz0mzpbKXsZQxrmo4D/YfKiZuLKBb S8Ak0LCsn+oQTNmsJ7400kjqAqw8HO9PeE3Fx2kjEISZEnJj3vBkIAz7HEayjz6+BgOy zH2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=FGJzp7Wi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=samsung.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e3-v6si18151426pga.369.2018.10.17.08.53.48; Wed, 17 Oct 2018 08:54:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@samsung.com header.s=mail20170921 header.b=FGJzp7Wi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=samsung.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727521AbeJQXtj (ORCPT + 99 others); Wed, 17 Oct 2018 19:49:39 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:12657 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727082AbeJQXti (ORCPT ); Wed, 17 Oct 2018 19:49:38 -0400 Received: from epcas2p3.samsung.com (unknown [182.195.41.55]) by mailout4.samsung.com (KnoxPortal) with ESMTP id 20181017155316epoutp04693ad395b8bebbd83875c5104f6a21ad~ecExz-ou81081110811epoutp04J; Wed, 17 Oct 2018 15:53:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout4.samsung.com 20181017155316epoutp04693ad395b8bebbd83875c5104f6a21ad~ecExz-ou81081110811epoutp04J DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1539791596; bh=1oWBRBtDvyVpe9jhkhwu+IptWKCNLtmNwUKxkG3IkfQ=; h=From:To:Cc:Subject:Date:References:From; b=FGJzp7Wig2VITlV1mNtKAr8IfNLnfWb8HFR7WyiykDOjaEvi+RKkRB+9JbygfizRu VhZ4FRabg0mPQ/iRSdfOuLSDuZFminn4YHdf/dQeR6fHg0nO2J7RGX+2ySGbFV4V+A gGy4PtfyPzZ1o2v3nan767qlUZ+NLdGREVoDAXKA= Received: from epsmges2p3.samsung.com (unknown [182.195.42.71]) by epcas2p2.samsung.com (KnoxPortal) with ESMTP id 20181017155315epcas2p20b1d92095021e9b9febd722567c2f91a~ecExC4hUj2467024670epcas2p2P; Wed, 17 Oct 2018 15:53:15 +0000 (GMT) Received: from epcas2p2.samsung.com ( [182.195.41.54]) by epsmges2p3.samsung.com (Symantec Messaging Gateway) with SMTP id 00.51.04072.BEA57CB5; Thu, 18 Oct 2018 00:53:15 +0900 (KST) Received: from epsmgms2p2new.samsung.com (unknown [182.195.42.143]) by epcas2p4.samsung.com (KnoxPortal) with ESMTP id 20181017155314epcas2p4a5aa24978b36354a2ccb2f9b0fb6f0f6~ecEv04ibc0750407504epcas2p4v; Wed, 17 Oct 2018 15:53:14 +0000 (GMT) X-AuditID: b6c32a47-5b7ff70000000fe8-fa-5bc75aeb44b1 Received: from epmmp2 ( [203.254.227.17]) by epsmgms2p2new.samsung.com (Symantec Messaging Gateway) with SMTP id AE.34.03633.9EA57CB5; Thu, 18 Oct 2018 00:53:14 +0900 (KST) Received: from AMDC3058.DIGITAL.local ([106.120.53.102]) by mmp2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0PGR00KZM2SD3M00@mmp2.samsung.com>; Thu, 18 Oct 2018 00:53:13 +0900 (KST) From: Bartlomiej Zolnierkiewicz To: Zhang Rui , Eduardo Valentin Cc: Amit kucheria , Eric Anholt , Stefan Wahren , Markus Mayer , bcm-kernel-feedback-list@broadcom.com, Heiko Stuebner , Thierry Reding , Jonathan Hunter , Keerthy , Masahiro Yamada , Jun Nie , Baoyou Xie , Shawn Guo , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, b.zolnierkie@samsung.com Subject: [PATCH v2 00/17] thermal: enable+check sensor after its setup is finished Date: Wed, 17 Oct 2018 17:52:26 +0200 Message-id: <1539791563-5959-1-git-send-email-b.zolnierkie@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAAzWSbUhTYRTHe7a7u6t08zJFH11YDgyUfLd8yBSlwAtJlPahnJIjL2rNKZuK sxJTS7MUS2niO86wpqGO6Uw0YuaWYZZpyzQtX9MUlUZIQljbtW+//zk/zjkPPARXsI25Eamy TEYuk0hFuD3WM+h13GctziT2H15yQoX5ag7qqu7goWWLCaBnZUMYapww89DLW+MA7c6v8dAb fQEHFdU0Y6hlcY6PxvvqcGQpewVQ3cY0Hy3OleNoReeCtE8mcfS7rwFDA7MWECGgCzaNOF3z 9S1OP6+Z4dPdU8dodf8qh9Zq7uL0F3M/TpcVbuB0uU4DaL25gUu/Vm1jtGlSz6EtWvdzZJz9 ySRGmprNyP3CE+1T6jVV3IztwJzSiQpePpjzLAUEAalguHDPoRTYEwKqF8DPTdU8NmwDONu2 9C/Y2aSV4T6cbXQCuPRRxWHDDoCtTy02C6dOwAfFGmAd60Sdgbp2wlrmUkMYXLB4WdmRugA/ vdPbdIzyhN9Wl/lWJqkouPWiDbDL3OGwsXJv8S4ON+q5LJ+GowO1e+wIf5h0fJaFcFnTBaz3 QEoF4PrOY4wNHQC2jxg5rBUKB01jPPaiA7Bk8A+ffT8JS+4IWIWGRZW3bbqASoDFzT/xCgCb wD4NcGYyFGnJjCIwI8hXIUlTZMmSfa+kp2mB7Tt4R/WCntFoA6AIINpP9jobxQKeJFuhTDMA SHBFTmSuh0ksIJMkylxGnn5ZniVlFAYgJDCRCzknrBcLqGRJJnONYTIY+f8uh7Bzywd+/kHn S5SqTiKxEfve9/BwdHTe0fkP6nh1QohyTBp2NvRSiOuRIo+qQaa4XLrerbpobgkRhpcqm09F xt/0uX9Ihod1uRz8lcnHdbV5foWukRZdhPvWtDwmxbyZY6B0U+pY4/Wri/qAisSEGAcO+b51 JngtdqQcH1Df8I4lH4kwRYokwJsrV0j+AjBVqdQKAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrILMWRmVeSWpSXmKPExsVy+t9jQd1XUcejDc5MZ7JobljMZLFxxnpW i2efjzNarO09ymIx/8o1VosDjZcZLf4/es1qcWp7E5NFy6xFLBZLnjxkt7i8aw6bxefeI4wW c97dZrd48rCPzeLFFnGLTStusFn83DWPxWLvvc+MDkIeTe+PsXnMun+WzWPnrLvsHltvmXos 3vOSyWPTqk42jzvX9rB59Da/Y/Po27KK0WP7tXnMHiemf2fxOH5jO5PH501yAbxRXDYpqTmZ ZalF+nYJXBlzV01hLvhuVNF1ZQJrA+ND1S5GTg4JAROJFyd3sXUxcnEICaxjlPj5aRsLhPOL UWLr+02sIFVsAlYSE9tXMXYxcnCICHhLbFnDAVLDLHCURWLtjG9sIDXCAiES189vB6tnEVCV ePDyGTuIzSvgLvFh32pGiG1yEiePTWadwMi1gJFhFaNkakFxbnpusVGBUV5quV5xYm5xaV66 XnJ+7iZGYEBvO6zVv4Px8ZL4Q4wCHIxKPLw7xI5FC7EmlhVX5h5ilOBgVhLhrVI8Hi3Em5JY WZValB9fVJqTWnyIUZqDRUmclz//WKSQQHpiSWp2ampBahFMlomDU6qBcdWspwskzlieNuZ9 px63nukxs82GxU0eFrtU/WPrN+41n/Rye8n+5f/ZDulVbm09aHKia+5xAS6LiFX5XFEKX8Mk 1qa8eHq40crU6fy9fOOE56yF26ZG9CxY0qN09LX98j/TiuYdrN63/GEMb9gV98vNAbv0lLY6 m3Hc02w8+f7afdsnZf0M5UosxRmJhlrMRcWJAN74qI1kAgAA X-CMS-MailID: 20181017155314epcas2p4a5aa24978b36354a2ccb2f9b0fb6f0f6 X-Msg-Generator: CA CMS-TYPE: 102P X-CMS-RootMailID: 20181017155314epcas2p4a5aa24978b36354a2ccb2f9b0fb6f0f6 References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, [devm]_thermal_zone_of_sensor_register() is used to register thermal sensor by thermal drivers using DeviceTree. Besides registering sensor this function also immediately: - enables it: tzd->ops->set_mode(tzd, THERMAL_DEVICE_ENABLED) (->set_mode is set to of_thermal_set_mode() in of-thermal.c) - checks it (indirectly by using of_thermal_set_mode()): thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED); (which in turn ends up using ->get_temp method). For many DT thermal drivers this causes a problem because: - [devm]_thermal_zone_of_sensor_register() need to be called in order to obtain data about thermal trips which are then used to finish hardware sensor setup (only after which ->get_temp can be used) There is also related issue for DT thermal drivers that support IRQ (i.e. exynos and rockchip ones): - sensor hardware should be enabled only after IRQ handler is requested (because otherwise we might get IRQs that we can't handle) - IRQ handler needs tzd structure which is obtained from [devm_]thermal_zone_of_sensor_register() - after [devm_]thermal_zone_of_sensor_register() call core thermal code assumes that sensor is enabled and ready to use (i.e. that IRQ handler has been requested and sensor hardware has been enabled) In order to fix all abovementioned issues sensor registration, enable and check operations are separated in the core DT thermal code and corresponding DT thermal drivers are modified to do sensor setup correctly. Changes since v1: - rebased on the current -next kernel (next-20181015) - enhanced patch descriptions and cover letter - renamed thermal_zone_device_toggler() to thermal_zone_set_mode() - converted thermal_zone_set_mode() to use enum thermal_device_mode - added CONFIG_THERMAL=n stubs for thermal_zone_set_mode() and thermal_zone_device_check() - fixed uses of [devm]_thermal_zone_of_sensor_register() outside of drivers/thermal/ - changed ordering between patch #2 and #3 in order to add all needed core helpers first before fixing sensor setup code - changed ordering between patch #3 and #4 in order to simplify them - renamed patch #3 to "thermal: separate sensor enable and check operations" - renamed patch #4 to "thermal: separate sensor registration and enable+check operations" Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics Bartlomiej Zolnierkiewicz (17): thermal: add thermal_zone_set_mode() helper thermal: add thermal_zone_device_check() helper thermal: separate sensor enable and check operations thermal: separate sensor registration and enable+check operations thermal: bcm2835: enable+check sensor after its setup is finished thermal: brcmstb: enable+check sensor after its setup is finished thermal: hisi_thermal: enable+check sensor after its setup is finished thermal: qcom: tsens: enable+check sensor after its setup is finished thermal: qoriq: enable+check sensor after its setup is finished thermal: rcar_gen3_thermal: enable+check sensor after its setup is finished thermal: rockchip_thermal: enable+check sensor after its setup is finished thermal: exynos: enable+check sensor after its setup is finished thermal: tegra: enable+check sensor after its setup is finished thermal: ti-soc-thermal: enable+check sensor after its setup is finished thermal: uniphier: enable+check sensor after its setup is finished thermal: zx2967: enable+check sensor after its setup is finished thermal: warn on attempts to read temperature on disabled sensors drivers/acpi/thermal.c | 5 +-- drivers/ata/ahci_imx.c | 10 ++++-- drivers/hwmon/hwmon.c | 5 +++ drivers/hwmon/ntc_thermistor.c | 4 +++ drivers/hwmon/scpi-hwmon.c | 4 +++ drivers/iio/adc/sun4i-gpadc-iio.c | 5 +++ drivers/input/touchscreen/sun4i-ts.c | 8 ++++- drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 1 - drivers/platform/x86/acerhdf.c | 6 +++- drivers/regulator/max8973-regulator.c | 6 ++-- drivers/thermal/armada_thermal.c | 3 ++ drivers/thermal/broadcom/bcm2835_thermal.c | 3 ++ drivers/thermal/broadcom/brcmstb_thermal.c | 3 ++ drivers/thermal/broadcom/ns-thermal.c | 3 ++ drivers/thermal/da9062-thermal.c | 7 ++-- drivers/thermal/db8500_thermal.c | 5 ++- drivers/thermal/hisi_thermal.c | 22 ++++--------- drivers/thermal/imx_thermal.c | 3 +- drivers/thermal/int340x_thermal/int3400_thermal.c | 1 + drivers/thermal/intel_bxt_pmic_thermal.c | 3 +- drivers/thermal/intel_soc_dts_iosf.c | 3 +- drivers/thermal/max77620_thermal.c | 6 ++-- drivers/thermal/mtk_thermal.c | 3 ++ drivers/thermal/of-thermal.c | 6 ++-- drivers/thermal/qcom-spmi-temp-alarm.c | 5 ++- drivers/thermal/qcom/tsens.c | 6 ++++ drivers/thermal/qoriq_thermal.c | 3 ++ drivers/thermal/rcar_gen3_thermal.c | 7 ++-- drivers/thermal/rcar_thermal.c | 7 ++-- drivers/thermal/rockchip_thermal.c | 38 +++++++++++----------- drivers/thermal/samsung/exynos_tmu.c | 7 +++- drivers/thermal/st/st_thermal_memmap.c | 3 +- drivers/thermal/tango_thermal.c | 5 +++ drivers/thermal/tegra/soctherm.c | 3 ++ drivers/thermal/tegra/tegra-bpmp-thermal.c | 3 ++ drivers/thermal/thermal-generic-adc.c | 3 ++ drivers/thermal/thermal_core.c | 14 ++++---- drivers/thermal/thermal_helpers.c | 32 ++++++++++++++++++ drivers/thermal/thermal_sysfs.c | 17 ++++++---- drivers/thermal/ti-soc-thermal/ti-thermal-common.c | 7 +++- drivers/thermal/uniphier_thermal.c | 6 +++- drivers/thermal/x86_pkg_temp_thermal.c | 2 +- drivers/thermal/zx2967_thermal.c | 3 ++ include/linux/thermal.h | 11 +++++++ 44 files changed, 220 insertions(+), 87 deletions(-) -- 1.9.1