Aw: regression with 33140e668b10 thermal/drivers/mediatek: Control buffer enablement tweaks

Frank Wunderlich posted 1 patch 1 year ago
Aw: regression with 33140e668b10 thermal/drivers/mediatek: Control buffer enablement tweaks
Posted by Frank Wunderlich 1 year ago
Hi,

looked a bit deeper into it and it looks like i only need to add the fields in the mtk_thermal_data struct

--- a/drivers/thermal/mediatek/auxadc_thermal.c
+++ b/drivers/thermal/mediatek/auxadc_thermal.c
@@ -690,6 +690,9 @@ static const struct mtk_thermal_data mt7986_thermal_data = {
        .adcpnp = mt7986_adcpnp,
        .sensor_mux_values = mt7986_mux_values,
        .version = MTK_THERMAL_V3,
+       .apmixed_buffer_ctl_reg = APMIXED_SYS_TS_CON1,
+       .apmixed_buffer_ctl_mask = GENMASK(31, 6) | BIT(3),
+       .apmixed_buffer_ctl_set = BIT(0),
 };

in my quick test the temprature can be read again and i'm near room temperature...i though it was a bit higher before, but as far as i understand the code, the values were fixed before and only made it configurable.

if someone can confirm that i'm right, i can send official patch.

regards Frank


> Gesendet: Donnerstag, 31. August 2023 um 11:25 Uhr
> Von: "Frank Wunderlich" <frank-w@public-files.de>
> Hi,
>
> The commit 33140e668b10 "thermal/drivers/mediatek: Control buffer enablement tweaks" is merged between 6.3 and 6.4 and causes a regression where temperature cannot be read correctly at least for mt7986/Bpi-R3.
>
> bpi-r3 ~ # cat /sys/class/thermal/thermal_zone0/temp
> -274000
>
> after reverting the commit and fixing some build-errors in 6.5-rc7 because new members used in mt8365_thermal_data too, we can read temperature on mt7986 again.
>
> i guess reverting the commit is not the right way, so i ask here for a better solution
>
> regards Frank
Re: Aw: regression with 33140e668b10 thermal/drivers/mediatek: Control buffer enablement tweaks
Posted by Daniel Lezcano 1 year ago
Hi Frank,

thanks for reporting and investigating the issue.


On 31/08/2023 15:34, Frank Wunderlich wrote:
> Hi,
> 
> looked a bit deeper into it and it looks like i only need to add the fields in the mtk_thermal_data struct
> 
> --- a/drivers/thermal/mediatek/auxadc_thermal.c
> +++ b/drivers/thermal/mediatek/auxadc_thermal.c
> @@ -690,6 +690,9 @@ static const struct mtk_thermal_data mt7986_thermal_data = {
>          .adcpnp = mt7986_adcpnp,
>          .sensor_mux_values = mt7986_mux_values,
>          .version = MTK_THERMAL_V3,
> +       .apmixed_buffer_ctl_reg = APMIXED_SYS_TS_CON1,
> +       .apmixed_buffer_ctl_mask = GENMASK(31, 6) | BIT(3),
> +       .apmixed_buffer_ctl_set = BIT(0),
>   };
> 
> in my quick test the temprature can be read again and i'm near room temperature...i though it was a bit higher before, but as far as i understand the code, the values were fixed before and only made it configurable.
> 
> if someone can confirm that i'm right, i can send official patch.

At the first glance, it seems the proposed change is correct and could 
be proposed as a hot fix.

However, the conditions with the version and the apmixed_buffer_ctl_reg 
looks a bit fuzzy.

Markus, can you revisit this part of code and consolidate the 
configurable approach ?

-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

Re: regression with 33140e668b10 thermal/drivers/mediatek: Control buffer enablement tweaks
Posted by Markus Schneider-Pargmann 1 year ago
Hi Frank and Daniel,

On Tue, Sep 12, 2023 at 02:57:45PM +0200, Daniel Lezcano wrote:
> 
> Hi Frank,
> 
> thanks for reporting and investigating the issue.
> 
> 
> On 31/08/2023 15:34, Frank Wunderlich wrote:
> > Hi,
> > 
> > looked a bit deeper into it and it looks like i only need to add the fields in the mtk_thermal_data struct
> > 
> > --- a/drivers/thermal/mediatek/auxadc_thermal.c
> > +++ b/drivers/thermal/mediatek/auxadc_thermal.c
> > @@ -690,6 +690,9 @@ static const struct mtk_thermal_data mt7986_thermal_data = {
> >          .adcpnp = mt7986_adcpnp,
> >          .sensor_mux_values = mt7986_mux_values,
> >          .version = MTK_THERMAL_V3,
> > +       .apmixed_buffer_ctl_reg = APMIXED_SYS_TS_CON1,
> > +       .apmixed_buffer_ctl_mask = GENMASK(31, 6) | BIT(3),
> > +       .apmixed_buffer_ctl_set = BIT(0),
> >   };
> > 
> > in my quick test the temprature can be read again and i'm near room temperature...i though it was a bit higher before, but as far as i understand the code, the values were fixed before and only made it configurable.
> > 
> > if someone can confirm that i'm right, i can send official patch.

Sorry for the delay, this was in my inbox but somehow not on my todo
list.

The patch looks correct. I think I simply missed adding the fields for
MTK_THERMAL_V3 chips. Sorry!

> 
> At the first glance, it seems the proposed change is correct and could be
> proposed as a hot fix.
> 
> However, the conditions with the version and the apmixed_buffer_ctl_reg
> looks a bit fuzzy.
> 
> Markus, can you revisit this part of code and consolidate the configurable
> approach ?

Yes, it indeed looks like I broke another condition there. I will give
it another close look and send a fix.

Best,
Markus
Re: regression with 33140e668b10 thermal/drivers/mediatek: Control buffer enablement tweaks
Posted by Frank Wunderlich 1 year ago
Am 12. September 2023 15:46:17 MESZ schrieb Markus Schneider-Pargmann <msp@baylibre.com>:
>Hi Frank and Daniel,
>
>On Tue, Sep 12, 2023 at 02:57:45PM +0200, Daniel Lezcano wrote:
>> 
>> Hi Frank,
>> 
>> thanks for reporting and investigating the issue.
>> 
>> 
>> On 31/08/2023 15:34, Frank Wunderlich wrote:
>> > Hi,
>> > 
>> > looked a bit deeper into it and it looks like i only need to add the fields in the mtk_thermal_data struct
>> > 
>> > --- a/drivers/thermal/mediatek/auxadc_thermal.c
>> > +++ b/drivers/thermal/mediatek/auxadc_thermal.c
>> > @@ -690,6 +690,9 @@ static const struct mtk_thermal_data mt7986_thermal_data = {
>> >          .adcpnp = mt7986_adcpnp,
>> >          .sensor_mux_values = mt7986_mux_values,
>> >          .version = MTK_THERMAL_V3,
>> > +       .apmixed_buffer_ctl_reg = APMIXED_SYS_TS_CON1,
>> > +       .apmixed_buffer_ctl_mask = GENMASK(31, 6) | BIT(3),
>> > +       .apmixed_buffer_ctl_set = BIT(0),
>> >   };
>> > 
>> > in my quick test the temprature can be read again and i'm near room temperature...i though it was a bit higher before, but as far as i understand the code, the values were fixed before and only made it configurable.
>> > 
>> > if someone can confirm that i'm right, i can send official patch.
>
>Sorry for the delay, this was in my inbox but somehow not on my todo
>list.
>
>The patch looks correct. I think I simply missed adding the fields for
>MTK_THERMAL_V3 chips. Sorry!
>
>> 
>> At the first glance, it seems the proposed change is correct and could be
>> proposed as a hot fix.
>> 
>> However, the conditions with the version and the apmixed_buffer_ctl_reg
>> looks a bit fuzzy.
>> 
>> Markus, can you revisit this part of code and consolidate the configurable
>> approach ?
>
>Yes, it indeed looks like I broke another condition there. I will give
>it another close look and send a fix.
>
>Best,
>Markus

Hi

I already sent the Patch below

https://patchwork.kernel.org/project/linux-mediatek/patch/20230907112018.52811-1-linux@fw-web.de/

If it is correct (handled the same way as mt7622 before) you have not to send a patch.

But you should maybe check condition !=V2 is correct when loocking on v3.

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/thermal/mediatek/auxadc_thermal.c?id=33140e668b10200b775779f302b143b32e6ae7ca

Regards Frank