* [PATCH v3 0/6] thermal: tsens: Refactoring for TSENSv2 IP
@ 2018-06-14 10:43 Amit Kucheria
2018-06-14 10:43 ` [PATCH v3 1/6] thermal: tsens: Get rid of unused fields in structure Amit Kucheria
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Amit Kucheria @ 2018-06-14 10:43 UTC (permalink / raw)
To: linux-kernel
Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad,
vivek.gautam, andy.gross, Kees Cook, Rob Herring,
open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
moderated list:ARM64 PORT AARCH64 ARCHITECTURE, open list:THERMAL,
open list:ARM/QUALCOMM SUPPORT
This series is a mixed bag: Some code moves to deal with v2 of the
TSENS IP into common functions, a new qcom,tsens-v2 DT property to cover
all v2 platforms, new platform support (sdm845), a cleanup
patch and a DT change to have a common way to deal with the SROT and TM
registers despite slightly different features across the IP family and
different register offsets.
Rob, I haven't added your Ack to patch 4 because it changed a bit.
Regards,
Amit
Changes since v2:
- Based on review, moved tsens-8996.c to tsens-v2.c and changed
corresponding function names, struct names to allow for generic tsensv2
platforms
- All v2 platforms will now only need to use the qcom,tsen-v2 property
- Added a DT patch to initialize tsens driver on sdm845, now that 4.18-rc1
will contain an sdm845.dtsi
Changes since v1:
- Move get_temp() from tsens-8996 to tsens-common and rename
- Change 8996 DT entry to allow init_common() to work across sdm845 and
8996 due to different offsets
Amit Kucheria (6):
thermal: tsens: Get rid of unused fields in structure
dt: qcom: 8996: thermal: Move to DT initialisation
thermal: tsens: Rename tsens-8996 to tsens-v2 for reuse
thermal: tsens: Add support for SDM845
thermal: tsens: Check if we have valid data before reading
arm64: dts: sdm845: Add tsens nodes
.../devicetree/bindings/thermal/qcom-tsens.txt | 1 +
arch/arm64/boot/dts/qcom/msm8996.dtsi | 12 ++++++-
arch/arm64/boot/dts/qcom/sdm845.dtsi | 16 +++++++++
drivers/thermal/qcom/Makefile | 2 +-
drivers/thermal/qcom/{tsens-8996.c => tsens-v2.c} | 42 +++++++++++++---------
drivers/thermal/qcom/tsens.c | 3 ++
drivers/thermal/qcom/tsens.h | 7 ++--
7 files changed, 61 insertions(+), 22 deletions(-)
rename drivers/thermal/qcom/{tsens-8996.c => tsens-v2.c} (65%)
--
2.7.4
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v3 1/6] thermal: tsens: Get rid of unused fields in structure 2018-06-14 10:43 [PATCH v3 0/6] thermal: tsens: Refactoring for TSENSv2 IP Amit Kucheria @ 2018-06-14 10:43 ` Amit Kucheria 2018-06-14 10:43 ` [PATCH v3 3/6] thermal: tsens: Rename tsens-8996 to tsens-v2 for reuse Amit Kucheria ` (2 subsequent siblings) 3 siblings, 0 replies; 7+ messages in thread From: Amit Kucheria @ 2018-06-14 10:43 UTC (permalink / raw) To: linux-kernel Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad, vivek.gautam, andy.gross, Zhang Rui, open list:THERMAL status_field and trdy are unused in any of the tsens drivers. Remove them. Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Acked-by: Rajendra Nayak <rnayak@codeaurora.org> --- drivers/thermal/qcom/tsens.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h index 911c197..dc56e1e 100644 --- a/drivers/thermal/qcom/tsens.h +++ b/drivers/thermal/qcom/tsens.h @@ -77,9 +77,7 @@ struct tsens_device { struct device *dev; u32 num_sensors; struct regmap *map; - struct regmap_field *status_field; struct tsens_context ctx; - bool trdy; const struct tsens_ops *ops; struct tsens_sensor sensor[0]; }; -- 2.7.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 3/6] thermal: tsens: Rename tsens-8996 to tsens-v2 for reuse 2018-06-14 10:43 [PATCH v3 0/6] thermal: tsens: Refactoring for TSENSv2 IP Amit Kucheria 2018-06-14 10:43 ` [PATCH v3 1/6] thermal: tsens: Get rid of unused fields in structure Amit Kucheria @ 2018-06-14 10:43 ` Amit Kucheria 2018-06-14 10:43 ` [PATCH v3 4/6] thermal: tsens: Add support for SDM845 Amit Kucheria 2018-06-14 10:43 ` [PATCH v3 5/6] thermal: tsens: Check if we have valid data before reading Amit Kucheria 3 siblings, 0 replies; 7+ messages in thread From: Amit Kucheria @ 2018-06-14 10:43 UTC (permalink / raw) To: linux-kernel Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad, vivek.gautam, andy.gross, Zhang Rui, open list:THERMAL The TSENS block inside the 8996 is internally classified as version 2 of the IP. Several other SoC families use this block and can share this code. Also, rename get_temp() to reflect that it can be used across the v2 family. Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org> --- drivers/thermal/qcom/Makefile | 2 +- drivers/thermal/qcom/{tsens-8996.c => tsens-v2.c} | 26 ++++++++--------------- 2 files changed, 10 insertions(+), 18 deletions(-) rename drivers/thermal/qcom/{tsens-8996.c => tsens-v2.c} (66%) diff --git a/drivers/thermal/qcom/Makefile b/drivers/thermal/qcom/Makefile index 2cc2193..a821929 100644 --- a/drivers/thermal/qcom/Makefile +++ b/drivers/thermal/qcom/Makefile @@ -1,2 +1,2 @@ obj-$(CONFIG_QCOM_TSENS) += qcom_tsens.o -qcom_tsens-y += tsens.o tsens-common.o tsens-8916.o tsens-8974.o tsens-8960.o tsens-8996.o +qcom_tsens-y += tsens.o tsens-common.o tsens-8916.o tsens-8974.o tsens-8960.o tsens-v2.o diff --git a/drivers/thermal/qcom/tsens-8996.c b/drivers/thermal/qcom/tsens-v2.c similarity index 66% rename from drivers/thermal/qcom/tsens-8996.c rename to drivers/thermal/qcom/tsens-v2.c index e1f7781..c981a40 100644 --- a/drivers/thermal/qcom/tsens-8996.c +++ b/drivers/thermal/qcom/tsens-v2.c @@ -1,27 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) 2015, The Linux Foundation. All rights reserved. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 and - * only version 2 as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * + * Copyright (c) 2018, Linaro Limited */ -#include <linux/platform_device.h> #include <linux/regmap.h> #include "tsens.h" -#define STATUS_OFFSET 0x10a0 -#define LAST_TEMP_MASK 0xfff +#define STATUS_OFFSET 0xa0 +#define LAST_TEMP_MASK 0xfff #define STATUS_VALID_BIT BIT(21) #define CODE_SIGN_BIT BIT(11) -static int get_temp_8996(struct tsens_device *tmdev, int id, int *temp) +static int get_temp_tsens_v2(struct tsens_device *tmdev, int id, int *temp) { struct tsens_sensor *s = &tmdev->sensor[id]; u32 code; @@ -73,12 +64,13 @@ static int get_temp_8996(struct tsens_device *tmdev, int id, int *temp) return 0; } -static const struct tsens_ops ops_8996 = { +static const struct tsens_ops ops_v2 = { .init = init_common, - .get_temp = get_temp_8996, + .get_temp = get_temp_tsens_v2, }; const struct tsens_data data_8996 = { .num_sensors = 13, - .ops = &ops_8996, + .ops = &ops_v2, }; + -- 2.7.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 4/6] thermal: tsens: Add support for SDM845 2018-06-14 10:43 [PATCH v3 0/6] thermal: tsens: Refactoring for TSENSv2 IP Amit Kucheria 2018-06-14 10:43 ` [PATCH v3 1/6] thermal: tsens: Get rid of unused fields in structure Amit Kucheria 2018-06-14 10:43 ` [PATCH v3 3/6] thermal: tsens: Rename tsens-8996 to tsens-v2 for reuse Amit Kucheria @ 2018-06-14 10:43 ` Amit Kucheria 2018-06-14 14:21 ` Rob Herring 2018-06-14 10:43 ` [PATCH v3 5/6] thermal: tsens: Check if we have valid data before reading Amit Kucheria 3 siblings, 1 reply; 7+ messages in thread From: Amit Kucheria @ 2018-06-14 10:43 UTC (permalink / raw) To: linux-kernel Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad, vivek.gautam, andy.gross, Zhang Rui, Rob Herring, Mark Rutland, David Brown, Catalin Marinas, Will Deacon, Kees Cook, open list:THERMAL, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, open list:ARM/QUALCOMM SUPPORT, moderated list:ARM64 PORT AARCH64 ARCHITECTURE SDM845 uses the TSENS v2 IP block Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org> --- Documentation/devicetree/bindings/thermal/qcom-tsens.txt | 1 + arch/arm64/boot/dts/qcom/msm8996.dtsi | 2 +- drivers/thermal/qcom/tsens-v2.c | 9 ++++++++- drivers/thermal/qcom/tsens.c | 3 +++ drivers/thermal/qcom/tsens.h | 5 ++++- 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt index 06195e8..84da3db 100644 --- a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt @@ -5,6 +5,7 @@ Required properties: - "qcom,msm8916-tsens" : For 8916 Family of SoCs - "qcom,msm8974-tsens" : For 8974 Family of SoCs - "qcom,msm8996-tsens" : For 8996 Family of SoCs + - "qcom,tsens-v2" : For any SoC with v2 version of the tsens IP - reg: Address range of the thermal registers - #thermal-sensor-cells : Should be 1. See ./thermal.txt for a description. diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi index 6c8a857..28d4c08 100644 --- a/arch/arm64/boot/dts/qcom/msm8996.dtsi +++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi @@ -460,7 +460,7 @@ }; tsens0: thermal-sensor@4a8000 { - compatible = "qcom,msm8996-tsens"; + compatible = "qcom,msm8996-tsens", "qcom,tsens-v2"; reg = <0x4a9000 0x1000>, /* TM */ <0x4a8000 0x1000>; /* SROT */ #qcom,sensors = <13>; diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c index c981a40..abc8f13 100644 --- a/drivers/thermal/qcom/tsens-v2.c +++ b/drivers/thermal/qcom/tsens-v2.c @@ -69,8 +69,15 @@ static const struct tsens_ops ops_v2 = { .get_temp = get_temp_tsens_v2, }; +const struct tsens_data data_tsens_v2 = { + .ops = &ops_v2, +}; + +/* Kept around for backward compatibility with old msm8996.dtsi. + * New platforms should use data_tsens_v2 if possible and define + * the #qcom,sensors property in DT. + */ const struct tsens_data data_8996 = { .num_sensors = 13, .ops = &ops_v2, }; - diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c index 3440166c..a2c9bfa 100644 --- a/drivers/thermal/qcom/tsens.c +++ b/drivers/thermal/qcom/tsens.c @@ -72,6 +72,9 @@ static const struct of_device_id tsens_table[] = { }, { .compatible = "qcom,msm8996-tsens", .data = &data_8996, + }, { + .compatible = "qcom,tsens-v2", + .data = &data_tsens_v2, }, {} }; diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h index dc56e1e..69212cb 100644 --- a/drivers/thermal/qcom/tsens.h +++ b/drivers/thermal/qcom/tsens.h @@ -87,6 +87,9 @@ void compute_intercept_slope(struct tsens_device *, u32 *, u32 *, u32); int init_common(struct tsens_device *); int get_temp_common(struct tsens_device *, int, int *); -extern const struct tsens_data data_8916, data_8974, data_8960, data_8996; +/* TSENS v1 targets */ +extern const struct tsens_data data_8916, data_8974, data_8960; +/* TSENS v2 targets */ +extern const struct tsens_data data_8996, data_tsens_v2; #endif /* __QCOM_TSENS_H__ */ -- 2.7.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 4/6] thermal: tsens: Add support for SDM845 2018-06-14 10:43 ` [PATCH v3 4/6] thermal: tsens: Add support for SDM845 Amit Kucheria @ 2018-06-14 14:21 ` Rob Herring 2018-06-14 14:55 ` Amit Kucheria 0 siblings, 1 reply; 7+ messages in thread From: Rob Herring @ 2018-06-14 14:21 UTC (permalink / raw) To: Amit Kucheria Cc: linux-kernel@vger.kernel.org, Rajendra Nayak, linux-arm-msm, Bjorn Andersson, Eduardo Valentin, Siddartha Mohanadoss, Vivek Gautam, Andy Gross, Zhang Rui, Mark Rutland, David Brown, Catalin Marinas, Will Deacon, Kees Cook, open list:THERMAL, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS On Thu, Jun 14, 2018 at 4:43 AM, Amit Kucheria <amit.kucheria@linaro.org> wrote: > SDM845 uses the TSENS v2 IP block > > Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org> > --- > Documentation/devicetree/bindings/thermal/qcom-tsens.txt | 1 + > arch/arm64/boot/dts/qcom/msm8996.dtsi | 2 +- > drivers/thermal/qcom/tsens-v2.c | 9 ++++++++- > drivers/thermal/qcom/tsens.c | 3 +++ > drivers/thermal/qcom/tsens.h | 5 ++++- > 5 files changed, 17 insertions(+), 3 deletions(-) > > diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt > index 06195e8..84da3db 100644 > --- a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt > +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt > @@ -5,6 +5,7 @@ Required properties: > - "qcom,msm8916-tsens" : For 8916 Family of SoCs > - "qcom,msm8974-tsens" : For 8974 Family of SoCs > - "qcom,msm8996-tsens" : For 8996 Family of SoCs > + - "qcom,tsens-v2" : For any SoC with v2 version of the tsens IP Stick with "qcom,sdm845-tsens". Though perhaps it should be '"qcom,sdm845-tsens", "qcom,msm8996-tsens"' if there is compatibility. > > - reg: Address range of the thermal registers > - #thermal-sensor-cells : Should be 1. See ./thermal.txt for a description. > diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi > index 6c8a857..28d4c08 100644 > --- a/arch/arm64/boot/dts/qcom/msm8996.dtsi > +++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi > @@ -460,7 +460,7 @@ > }; > > tsens0: thermal-sensor@4a8000 { > - compatible = "qcom,msm8996-tsens"; > + compatible = "qcom,msm8996-tsens", "qcom,tsens-v2"; There's no point to adding this now because you already have to support "qcom,msm8996-tsens". > reg = <0x4a9000 0x1000>, /* TM */ > <0x4a8000 0x1000>; /* SROT */ > #qcom,sensors = <13>; > diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c > index c981a40..abc8f13 100644 > --- a/drivers/thermal/qcom/tsens-v2.c > +++ b/drivers/thermal/qcom/tsens-v2.c > @@ -69,8 +69,15 @@ static const struct tsens_ops ops_v2 = { > .get_temp = get_temp_tsens_v2, > }; > > +const struct tsens_data data_tsens_v2 = { > + .ops = &ops_v2, > +}; > + > +/* Kept around for backward compatibility with old msm8996.dtsi. > + * New platforms should use data_tsens_v2 if possible and define > + * the #qcom,sensors property in DT. Hum, I think this should just be implied by the compatible as it was. If this was the *only* difference, then a property would be okay, but as soon as you find some other difference you need yet another property and have to do a DT update on all platforms. > + */ > const struct tsens_data data_8996 = { > .num_sensors = 13, > .ops = &ops_v2, > }; > - > diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c > index 3440166c..a2c9bfa 100644 > --- a/drivers/thermal/qcom/tsens.c > +++ b/drivers/thermal/qcom/tsens.c > @@ -72,6 +72,9 @@ static const struct of_device_id tsens_table[] = { > }, { > .compatible = "qcom,msm8996-tsens", > .data = &data_8996, > + }, { > + .compatible = "qcom,tsens-v2", > + .data = &data_tsens_v2, Why different data if 8996 is compatible with v2? > }, > {} > }; > diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h > index dc56e1e..69212cb 100644 > --- a/drivers/thermal/qcom/tsens.h > +++ b/drivers/thermal/qcom/tsens.h > @@ -87,6 +87,9 @@ void compute_intercept_slope(struct tsens_device *, u32 *, u32 *, u32); > int init_common(struct tsens_device *); > int get_temp_common(struct tsens_device *, int, int *); > > -extern const struct tsens_data data_8916, data_8974, data_8960, data_8996; > +/* TSENS v1 targets */ > +extern const struct tsens_data data_8916, data_8974, data_8960; > +/* TSENS v2 targets */ > +extern const struct tsens_data data_8996, data_tsens_v2; > > #endif /* __QCOM_TSENS_H__ */ > -- > 2.7.4 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v3 4/6] thermal: tsens: Add support for SDM845 2018-06-14 14:21 ` Rob Herring @ 2018-06-14 14:55 ` Amit Kucheria 0 siblings, 0 replies; 7+ messages in thread From: Amit Kucheria @ 2018-06-14 14:55 UTC (permalink / raw) To: Rob Herring Cc: Linux Kernel Mailing List, Rajendra Nayak, linux-arm-msm, Bjorn Andersson, Eduardo Valentin, smohanad, Vivek Gautam, Andy Gross, Zhang Rui, Mark Rutland, David Brown, Catalin Marinas, Will Deacon, Kees Cook, Linux PM list, DTML, open list:ARM/QUALCOMM SUPPORT, Lists LAKML Hi Rob, Thanks for the review. On Thu, Jun 14, 2018 at 5:21 PM Rob Herring <robh+dt@kernel.org> wrote: > > On Thu, Jun 14, 2018 at 4:43 AM, Amit Kucheria <amit.kucheria@linaro.org> wrote: > > SDM845 uses the TSENS v2 IP block > > > > Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org> > > --- > > Documentation/devicetree/bindings/thermal/qcom-tsens.txt | 1 + > > arch/arm64/boot/dts/qcom/msm8996.dtsi | 2 +- > > drivers/thermal/qcom/tsens-v2.c | 9 ++++++++- > > drivers/thermal/qcom/tsens.c | 3 +++ > > drivers/thermal/qcom/tsens.h | 5 ++++- > > 5 files changed, 17 insertions(+), 3 deletions(-) > > > > diff --git a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt > > index 06195e8..84da3db 100644 > > --- a/Documentation/devicetree/bindings/thermal/qcom-tsens.txt > > +++ b/Documentation/devicetree/bindings/thermal/qcom-tsens.txt > > @@ -5,6 +5,7 @@ Required properties: > > - "qcom,msm8916-tsens" : For 8916 Family of SoCs > > - "qcom,msm8974-tsens" : For 8974 Family of SoCs > > - "qcom,msm8996-tsens" : For 8996 Family of SoCs > > + - "qcom,tsens-v2" : For any SoC with v2 version of the tsens IP > > Stick with "qcom,sdm845-tsens". Though perhaps it should be > '"qcom,sdm845-tsens", "qcom,msm8996-tsens"' if there is compatibility. There are lots of (30+) SoC families that use v2 of the tsens IP. So we're talking about potentially 100s of platforms using the IP. This could become very unwieldy to deal with very quickly. The core functionality in tsens v2 remains the same (e.g. reading the temperature) and any differences could potentially be addressed with more specific DTs or preferably dynamically detected by probing the minor version of the HW version register. > > - reg: Address range of the thermal registers > > - #thermal-sensor-cells : Should be 1. See ./thermal.txt for a description. > > diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi > > index 6c8a857..28d4c08 100644 > > --- a/arch/arm64/boot/dts/qcom/msm8996.dtsi > > +++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi > > @@ -460,7 +460,7 @@ > > }; > > > > tsens0: thermal-sensor@4a8000 { > > - compatible = "qcom,msm8996-tsens"; > > + compatible = "qcom,msm8996-tsens", "qcom,tsens-v2"; > > There's no point to adding this now because you already have to > support "qcom,msm8996-tsens". Of course. > > > reg = <0x4a9000 0x1000>, /* TM */ > > <0x4a8000 0x1000>; /* SROT */ > > #qcom,sensors = <13>; > > diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c > > index c981a40..abc8f13 100644 > > --- a/drivers/thermal/qcom/tsens-v2.c > > +++ b/drivers/thermal/qcom/tsens-v2.c > > @@ -69,8 +69,15 @@ static const struct tsens_ops ops_v2 = { > > .get_temp = get_temp_tsens_v2, > > }; > > > > +const struct tsens_data data_tsens_v2 = { > > + .ops = &ops_v2, > > +}; > > + > > +/* Kept around for backward compatibility with old msm8996.dtsi. > > + * New platforms should use data_tsens_v2 if possible and define > > + * the #qcom,sensors property in DT. > > Hum, I think this should just be implied by the compatible as it was. > If this was the *only* difference, then a property would be okay, but > as soon as you find some other difference you need yet another > property and have to do a DT update on all platforms. Perhaps I was needless wordy, but the only reason to keep data_8996 around is the num_sensors bit below. Now that Bjorn's patch 6d7c70d1cd65 ("thermal: qcom: tsens: Allow number of sensors to come from DT") has landed, that should be the default way to specify the number of sensors connected to each IP block. We want future DTs to simply use the qcom,tsens-v2 property instead of saying that they're all compatible with 8996. That will more truly reflect the HW (tsens v2) and the qcom,msm8996-tsens binding probably shouldn't have been added in the first place. > > + */ > > const struct tsens_data data_8996 = { > > .num_sensors = 13, > > .ops = &ops_v2, > > }; > > - > > diff --git a/drivers/thermal/qcom/tsens.c b/drivers/thermal/qcom/tsens.c > > index 3440166c..a2c9bfa 100644 > > --- a/drivers/thermal/qcom/tsens.c > > +++ b/drivers/thermal/qcom/tsens.c > > @@ -72,6 +72,9 @@ static const struct of_device_id tsens_table[] = { > > }, { > > .compatible = "qcom,msm8996-tsens", > > .data = &data_8996, > > + }, { > > + .compatible = "qcom,tsens-v2", > > + .data = &data_tsens_v2, > > Why different data if 8996 is compatible with v2? See above. > > }, > > {} > > }; > > diff --git a/drivers/thermal/qcom/tsens.h b/drivers/thermal/qcom/tsens.h > > index dc56e1e..69212cb 100644 > > --- a/drivers/thermal/qcom/tsens.h > > +++ b/drivers/thermal/qcom/tsens.h > > @@ -87,6 +87,9 @@ void compute_intercept_slope(struct tsens_device *, u32 *, u32 *, u32); > > int init_common(struct tsens_device *); > > int get_temp_common(struct tsens_device *, int, int *); > > > > -extern const struct tsens_data data_8916, data_8974, data_8960, data_8996; > > +/* TSENS v1 targets */ > > +extern const struct tsens_data data_8916, data_8974, data_8960; > > +/* TSENS v2 targets */ > > +extern const struct tsens_data data_8996, data_tsens_v2; > > > > #endif /* __QCOM_TSENS_H__ */ > > -- > > 2.7.4 > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 5/6] thermal: tsens: Check if we have valid data before reading 2018-06-14 10:43 [PATCH v3 0/6] thermal: tsens: Refactoring for TSENSv2 IP Amit Kucheria ` (2 preceding siblings ...) 2018-06-14 10:43 ` [PATCH v3 4/6] thermal: tsens: Add support for SDM845 Amit Kucheria @ 2018-06-14 10:43 ` Amit Kucheria 3 siblings, 0 replies; 7+ messages in thread From: Amit Kucheria @ 2018-06-14 10:43 UTC (permalink / raw) To: linux-kernel Cc: rnayak, linux-arm-msm, bjorn.andersson, edubezval, smohanad, vivek.gautam, andy.gross, Zhang Rui, open list:THERMAL Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> --- drivers/thermal/qcom/tsens-v2.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/thermal/qcom/tsens-v2.c b/drivers/thermal/qcom/tsens-v2.c index abc8f13..76fb668 100644 --- a/drivers/thermal/qcom/tsens-v2.c +++ b/drivers/thermal/qcom/tsens-v2.c @@ -7,6 +7,9 @@ #include <linux/regmap.h> #include "tsens.h" +#define TRDY_OFFSET 0xe4 +#define TRDY_READY_BIT BIT(0) + #define STATUS_OFFSET 0xa0 #define LAST_TEMP_MASK 0xfff #define STATUS_VALID_BIT BIT(21) @@ -19,6 +22,12 @@ static int get_temp_tsens_v2(struct tsens_device *tmdev, int id, int *temp) unsigned int sensor_addr; int last_temp = 0, last_temp2 = 0, last_temp3 = 0, ret; + ret = regmap_read(tmdev->map, TRDY_OFFSET, &code); + if (ret) + return ret; + if (code & TRDY_READY_BIT) + return -ENODATA; + sensor_addr = STATUS_OFFSET + s->hw_id * 4; ret = regmap_read(tmdev->map, sensor_addr, &code); if (ret) -- 2.7.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2018-06-14 14:55 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-06-14 10:43 [PATCH v3 0/6] thermal: tsens: Refactoring for TSENSv2 IP Amit Kucheria 2018-06-14 10:43 ` [PATCH v3 1/6] thermal: tsens: Get rid of unused fields in structure Amit Kucheria 2018-06-14 10:43 ` [PATCH v3 3/6] thermal: tsens: Rename tsens-8996 to tsens-v2 for reuse Amit Kucheria 2018-06-14 10:43 ` [PATCH v3 4/6] thermal: tsens: Add support for SDM845 Amit Kucheria 2018-06-14 14:21 ` Rob Herring 2018-06-14 14:55 ` Amit Kucheria 2018-06-14 10:43 ` [PATCH v3 5/6] thermal: tsens: Check if we have valid data before reading Amit Kucheria
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox