From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934554AbcCJAQr (ORCPT ); Wed, 9 Mar 2016 19:16:47 -0500 Received: from mailout3.w1.samsung.com ([210.118.77.13]:9163 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754237AbcCJAQp (ORCPT ); Wed, 9 Mar 2016 19:16:45 -0500 X-AuditID: cbfec7f5-f79b16d000005389-31-56e0bce9c175 Subject: Re: [PATCH 11/13] thermal: convert exynos to use devm_thermal_zone_of_sensor_register To: Eduardo Valentin , Rui Zhang References: <1457559336-17652-1-git-send-email-edubezval@gmail.com> <1457559336-17652-12-git-send-email-edubezval@gmail.com> Cc: Linux PM , LKML , lm-sensors@lm-sensors.org, Lukasz Majewski , Kukjin Kim , linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org From: Krzysztof Kozlowski Message-id: <56E0BCE4.6020309@samsung.com> Date: Thu, 10 Mar 2016 09:16:36 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-version: 1.0 In-reply-to: <1457559336-17652-12-git-send-email-edubezval@gmail.com> Content-type: text/plain; charset=windows-1252 Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrELMWRmVeSWpSXmKPExsVy+t/xK7ov9zwIM9hxQsli/pVrrBavXxha 9D9+zWzx5uFmRotNj4FCl3fNYbP43HuE0WLG+X1MFnem7WWzePKwj82By2PnrLvsHov3vGTy 2LSqk81j85J6jwcTd7N59G1ZxejxeZNcAHsUl01Kak5mWWqRvl0CV8as8y3sBSfEK7a/WMDY wLhNuIuRk0NCwETiXO8SVghbTOLCvfVsXYxcHEICSxklDrxZwAThPGWU+LBjBTNIlbBAgkTP wt1MILaIgLfE7GuPWEBsIYE6iaOnLrCDNDAL/GeU2PpyBjtIgk3AWGLz8iVsIDavgJbExd5V YINYBFQlzrV8AFstKhAhcbizix2iRlDix+R7YEM5BVwl2n/eB+rlABqqJ3H/ohZImFlAXmLz mrfMExgFZiHpmIVQNQtJ1QJG5lWMoqmlyQXFSem5RnrFibnFpXnpesn5uZsYITHxdQfj0mNW hxgFOBiVeHgz6h6ECbEmlhVX5h5ilOBgVhLhrdkFFOJNSaysSi3Kjy8qzUktPsQozcGiJM47 c9f7ECGB9MSS1OzU1ILUIpgsEwenVAPj2mCJ0D03H5s67BWJ9iruWLDtcXv08rvcHV+2HC59 5Ne27UTKv0dlp5mOafesraxcfPbVVgkWHf7URjbLzoJrq132MtksiOW5895mCf+F78qLO40D MzpuKxnkrr2awXBr8+zZUdMrDOJnFu+SvTh5z9W12/+KykRZT1T8/yalqPbCgklb0k+0KrEU ZyQaajEXFScCAEmNFCqFAgAA Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10.03.2016 06:35, Eduardo Valentin wrote: > This changes the driver to use the devm_ version > of thermal_zone_of_sensor_register and cleans > up the local points and unregister calls. > > Cc: Lukasz Majewski > Cc: Zhang Rui > Cc: Kukjin Kim > Cc: Krzysztof Kozlowski > Cc: linux-pm@vger.kernel.org > Cc: linux-samsung-soc@vger.kernel.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Eduardo Valentin > --- > drivers/thermal/samsung/exynos_tmu.c | 12 ++++-------- > 1 file changed, 4 insertions(+), 8 deletions(-) > > diff --git a/drivers/thermal/samsung/exynos_tmu.c b/drivers/thermal/samsung/exynos_tmu.c > index fa61eff..256039e 100644 > --- a/drivers/thermal/samsung/exynos_tmu.c > +++ b/drivers/thermal/samsung/exynos_tmu.c > @@ -1363,8 +1363,8 @@ static int exynos_tmu_probe(struct platform_device *pdev) > * data->tzd must be registered before calling exynos_tmu_initialize(), > * requesting irq and calling exynos_tmu_control(). > */ > - data->tzd = thermal_zone_of_sensor_register(&pdev->dev, 0, data, > - &exynos_sensor_ops); > + data->tzd = devm_thermal_zone_of_sensor_register(&pdev->dev, 0, data, > + &exynos_sensor_ops); > if (IS_ERR(data->tzd)) { > ret = PTR_ERR(data->tzd); > dev_err(&pdev->dev, "Failed to register sensor: %d\n", ret); > @@ -1374,21 +1374,19 @@ static int exynos_tmu_probe(struct platform_device *pdev) > ret = exynos_tmu_initialize(pdev); > if (ret) { > dev_err(&pdev->dev, "Failed to initialize TMU\n"); > - goto err_thermal; > + goto err_sclk; > } > > ret = devm_request_irq(&pdev->dev, data->irq, exynos_tmu_irq, > IRQF_TRIGGER_RISING | IRQF_SHARED, dev_name(&pdev->dev), data); > if (ret) { > dev_err(&pdev->dev, "Failed to request irq: %d\n", data->irq); > - goto err_thermal; > + goto err_sclk; > } > > exynos_tmu_control(pdev, true); > return 0; > > -err_thermal: > - thermal_zone_of_sensor_unregister(&pdev->dev, data->tzd); > err_sclk: > clk_disable_unprepare(data->sclk); > err_clk: > @@ -1406,9 +1404,7 @@ err_sensor: > static int exynos_tmu_remove(struct platform_device *pdev) > { > struct exynos_tmu_data *data = platform_get_drvdata(pdev); > - struct thermal_zone_device *tzd = data->tzd; > > - thermal_zone_of_sensor_unregister(&pdev->dev, tzd); Before, the sensor was removed from zone (ops like get_temp NULL-ified etc), then we stopped TMU, disabled clocks, disabled regulator and finally freed IRQ (through devm-like interface). Now this will be different - first stop of TMU, disable clocks, disable, regulator, remove sensor from zone (through devm) and finally free IRQ. Are you sure that changing order is okay? Best regards, Krzysztof > exynos_tmu_control(pdev, false); > > clk_disable_unprepare(data->sclk); >