[v10,00/15] qcom: pm8150: add support for thermal monitoring

Message ID 20201204025509.1075506-1-dmitry.baryshkov@linaro.org
Headers show
Series
  • qcom: pm8150: add support for thermal monitoring
Related show

Message

Dmitry Baryshkov Dec. 4, 2020, 2:54 a.m.
This patch serie adds support for thermal monitoring block on Qualcomm's
PMIC5 chips. PM8150{,b,l} and sm8250-mtp board device trees are extended
to support thermal zones provided by this thermal monitoring block.
Unlike the rest of PMIC thermal senses, these thermal zones describe
particular thermistors, which differ between from board to board.

Changes since v9:
 - In patch 12 add comments to the code as requested by Daniel Lezcano.
 - Change copyright comment in qcom-spmi-adc-tm5.c to clearly note
   driver history.

Changes since v8:
 - Simplified qcom_vadc_map_voltage_temp() code by removing ascending
   tables support
 - Simplified qcom-vadc-common volt/temp mapping code
 - Implement suggestions by Matthias Kaehlcke: message formatting,
   rewrite comments, remove unused variable initialization.

Changes since v7:
 - Move qcom-vadc-common.h header to include/linux/iio/adc/ dir.
 - Use explicit sizeof(var) instead of hand-coding 1 when accessing
   adc-tm registers.
 - Remove buffer read from adc_tm5_init().
 - Remove extra on-stack var from adc_tm5_get_temp().
 - Minor formatting changes as suggested Daniel.

Changes since v6:
 - Added include <linux/bitfield.h> as noted by Jishnu Prakash.

Changes since v5:
 - Reworked DT bindings:
   * Removed qcom,adc-channel, instead it is parsed from io-channels
   * Renamed qcom,hw-settle-time to include -us suffix
 - Re-added monitor enabling which got lost during refactored. Noted by
   Jishnu Prakash.
 - Use threaded IRQ handler as susggested by Jishnu.

Changes since v4:
 - Added kernel-doc comments to ADC-TM structures
 - Used several sizeof(buf) instead of hand-conding register size

Changes since v3:
 - Fix DT description to spell "thermal monitoring" instead of just TM
 - Fix warnings in DT example
 - Add EXPORT_SYMBOL_GPL(of_iio_channel_get_by_name)
 - Fixed whitespace chanes in qcom-vadc-common.c
 - Removed error message if IIO chanel get returns -EPROBE_DEFER

Changes since v2:
 - IIO: export of_iio_channel_get_by_name() function
 - dt-bindings: move individual io-channels to each thermal monitoring
   channel rather than listing them all in device node
 - added fallback defaults to of_device_get_match_data calls in
   qcom-spmi-adc5 and qcom-spmi-adc-tm5 drivers
 - minor typo fixes

Changes since v1:
 - Introduce fixp_linear_interpolate() by Craig Tatlor
 - Lots of syntax/whitespace changes
 - Cleaned up register definitions per Jonathan's suggestion
 - Implemented most of the suggestions from Bjorn's and Jonathan's
   review

Comments

Jonathan Cameron Dec. 5, 2020, 5:08 p.m. | #1
On Fri,  4 Dec 2020 05:54:54 +0300
Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote:

> This patch serie adds support for thermal monitoring block on Qualcomm's

> PMIC5 chips. PM8150{,b,l} and sm8250-mtp board device trees are extended

> to support thermal zones provided by this thermal monitoring block.

> Unlike the rest of PMIC thermal senses, these thermal zones describe

> particular thermistors, which differ between from board to board.


I've just taken another look through the various IIO parts in here and 
I think they are fine.

My assumption is that given the timing this isn't going to make the merge
window now.  Hence I'll be looking to do an immutable branch based on rc1
once it's available (assuming everyone else is fine with this version).

Thanks,

Jonathan

> 

> Changes since v9:

>  - In patch 12 add comments to the code as requested by Daniel Lezcano.

>  - Change copyright comment in qcom-spmi-adc-tm5.c to clearly note

>    driver history.

> 

> Changes since v8:

>  - Simplified qcom_vadc_map_voltage_temp() code by removing ascending

>    tables support

>  - Simplified qcom-vadc-common volt/temp mapping code

>  - Implement suggestions by Matthias Kaehlcke: message formatting,

>    rewrite comments, remove unused variable initialization.

> 

> Changes since v7:

>  - Move qcom-vadc-common.h header to include/linux/iio/adc/ dir.

>  - Use explicit sizeof(var) instead of hand-coding 1 when accessing

>    adc-tm registers.

>  - Remove buffer read from adc_tm5_init().

>  - Remove extra on-stack var from adc_tm5_get_temp().

>  - Minor formatting changes as suggested Daniel.

> 

> Changes since v6:

>  - Added include <linux/bitfield.h> as noted by Jishnu Prakash.

> 

> Changes since v5:

>  - Reworked DT bindings:

>    * Removed qcom,adc-channel, instead it is parsed from io-channels

>    * Renamed qcom,hw-settle-time to include -us suffix

>  - Re-added monitor enabling which got lost during refactored. Noted by

>    Jishnu Prakash.

>  - Use threaded IRQ handler as susggested by Jishnu.

> 

> Changes since v4:

>  - Added kernel-doc comments to ADC-TM structures

>  - Used several sizeof(buf) instead of hand-conding register size

> 

> Changes since v3:

>  - Fix DT description to spell "thermal monitoring" instead of just TM

>  - Fix warnings in DT example

>  - Add EXPORT_SYMBOL_GPL(of_iio_channel_get_by_name)

>  - Fixed whitespace chanes in qcom-vadc-common.c

>  - Removed error message if IIO chanel get returns -EPROBE_DEFER

> 

> Changes since v2:

>  - IIO: export of_iio_channel_get_by_name() function

>  - dt-bindings: move individual io-channels to each thermal monitoring

>    channel rather than listing them all in device node

>  - added fallback defaults to of_device_get_match_data calls in

>    qcom-spmi-adc5 and qcom-spmi-adc-tm5 drivers

>  - minor typo fixes

> 

> Changes since v1:

>  - Introduce fixp_linear_interpolate() by Craig Tatlor

>  - Lots of syntax/whitespace changes

>  - Cleaned up register definitions per Jonathan's suggestion

>  - Implemented most of the suggestions from Bjorn's and Jonathan's

>    review

> 

>
Jonathan Cameron Dec. 8, 2020, 10:39 a.m. | #2
On Sun, 6 Dec 2020 00:05:29 +0300
Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote:

> On 05/12/2020 20:08, Jonathan Cameron wrote:
> > On Fri,  4 Dec 2020 05:54:54 +0300
> > Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote:
> >   
> >> This patch serie adds support for thermal monitoring block on Qualcomm's
> >> PMIC5 chips. PM8150{,b,l} and sm8250-mtp board device trees are extended
> >> to support thermal zones provided by this thermal monitoring block.
> >> Unlike the rest of PMIC thermal senses, these thermal zones describe
> >> particular thermistors, which differ between from board to board.  
> > 
> > I've just taken another look through the various IIO parts in here and
> > I think they are fine.
> > 
> > My assumption is that given the timing this isn't going to make the merge
> > window now.  Hence I'll be looking to do an immutable branch based on rc1
> > once it's available (assuming everyone else is fine with this version).  
> 
> Thank you! Another option might be to merge all iio changes this cycle 
> (if it's fine with you) and have all the rest go via respective trees in 
> the next merge window. I'm fine with either of the options.

Too late unfortunately. IIO routes through staging for historical reasons
(plus we still have about 15 drivers to move out of there - it's only been
about 10 years :)  Staging closes a week before merge window so IIO closes a few
days before staging.

So lets stick to the immutable branch method.  Tends to make more sense in
the git history anyway as brings relevant code together (even if it travels
via multiple routes :)

Jonathan

> 
> > 
> > Thanks,
> > 
> > Jonathan
> >   
> >>
> >> Changes since v9:
> >>   - In patch 12 add comments to the code as requested by Daniel Lezcano.
> >>   - Change copyright comment in qcom-spmi-adc-tm5.c to clearly note
> >>     driver history.
> >>
> >> Changes since v8:
> >>   - Simplified qcom_vadc_map_voltage_temp() code by removing ascending
> >>     tables support
> >>   - Simplified qcom-vadc-common volt/temp mapping code
> >>   - Implement suggestions by Matthias Kaehlcke: message formatting,
> >>     rewrite comments, remove unused variable initialization.
> >>
> >> Changes since v7:
> >>   - Move qcom-vadc-common.h header to include/linux/iio/adc/ dir.
> >>   - Use explicit sizeof(var) instead of hand-coding 1 when accessing
> >>     adc-tm registers.
> >>   - Remove buffer read from adc_tm5_init().
> >>   - Remove extra on-stack var from adc_tm5_get_temp().
> >>   - Minor formatting changes as suggested Daniel.
> >>
> >> Changes since v6:
> >>   - Added include <linux/bitfield.h> as noted by Jishnu Prakash.
> >>
> >> Changes since v5:
> >>   - Reworked DT bindings:
> >>     * Removed qcom,adc-channel, instead it is parsed from io-channels
> >>     * Renamed qcom,hw-settle-time to include -us suffix
> >>   - Re-added monitor enabling which got lost during refactored. Noted by
> >>     Jishnu Prakash.
> >>   - Use threaded IRQ handler as susggested by Jishnu.
> >>
> >> Changes since v4:
> >>   - Added kernel-doc comments to ADC-TM structures
> >>   - Used several sizeof(buf) instead of hand-conding register size
> >>
> >> Changes since v3:
> >>   - Fix DT description to spell "thermal monitoring" instead of just TM
> >>   - Fix warnings in DT example
> >>   - Add EXPORT_SYMBOL_GPL(of_iio_channel_get_by_name)
> >>   - Fixed whitespace chanes in qcom-vadc-common.c
> >>   - Removed error message if IIO chanel get returns -EPROBE_DEFER
> >>
> >> Changes since v2:
> >>   - IIO: export of_iio_channel_get_by_name() function
> >>   - dt-bindings: move individual io-channels to each thermal monitoring
> >>     channel rather than listing them all in device node
> >>   - added fallback defaults to of_device_get_match_data calls in
> >>     qcom-spmi-adc5 and qcom-spmi-adc-tm5 drivers
> >>   - minor typo fixes
> >>
> >> Changes since v1:
> >>   - Introduce fixp_linear_interpolate() by Craig Tatlor
> >>   - Lots of syntax/whitespace changes
> >>   - Cleaned up register definitions per Jonathan's suggestion
> >>   - Implemented most of the suggestions from Bjorn's and Jonathan's
> >>     review
> >>
> >>  
> >   
> 
>
Dmitry Baryshkov Dec. 8, 2020, 5:14 p.m. | #3
On Tue, 8 Dec 2020 at 13:40, Jonathan Cameron
<Jonathan.Cameron@huawei.com> wrote:
>
> On Sun, 6 Dec 2020 00:05:29 +0300
> Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote:
>
> > On 05/12/2020 20:08, Jonathan Cameron wrote:
> > > On Fri,  4 Dec 2020 05:54:54 +0300
> > > Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote:
> > >
> > >> This patch serie adds support for thermal monitoring block on Qualcomm's
> > >> PMIC5 chips. PM8150{,b,l} and sm8250-mtp board device trees are extended
> > >> to support thermal zones provided by this thermal monitoring block.
> > >> Unlike the rest of PMIC thermal senses, these thermal zones describe
> > >> particular thermistors, which differ between from board to board.
> > >
> > > I've just taken another look through the various IIO parts in here and
> > > I think they are fine.
> > >
> > > My assumption is that given the timing this isn't going to make the merge
> > > window now.  Hence I'll be looking to do an immutable branch based on rc1
> > > once it's available (assuming everyone else is fine with this version).
> >
> > Thank you! Another option might be to merge all iio changes this cycle
> > (if it's fine with you) and have all the rest go via respective trees in
> > the next merge window. I'm fine with either of the options.
>
> Too late unfortunately. IIO routes through staging for historical reasons
> (plus we still have about 15 drivers to move out of there - it's only been
> about 10 years :)  Staging closes a week before merge window so IIO closes a few
> days before staging.
>
> So lets stick to the immutable branch method.  Tends to make more sense in
> the git history anyway as brings relevant code together (even if it travels
> via multiple routes :)

Thank you for the explanation, the immutable branch approach works for me.
Dmitry Baryshkov Jan. 5, 2021, 2:03 a.m. | #4
Colleagues,


On Fri, 4 Dec 2020 at 05:55, Dmitry Baryshkov
<dmitry.baryshkov@linaro.org> wrote:
>
> This patch serie adds support for thermal monitoring block on Qualcomm's
> PMIC5 chips. PM8150{,b,l} and sm8250-mtp board device trees are extended
> to support thermal zones provided by this thermal monitoring block.
> Unlike the rest of PMIC thermal senses, these thermal zones describe
> particular thermistors, which differ between from board to board.
>
> Changes since v9:
>  - In patch 12 add comments to the code as requested by Daniel Lezcano.
>  - Change copyright comment in qcom-spmi-adc-tm5.c to clearly note
>    driver history.

Gracious ping for this patch series. Daniel, do you have any comments?

>
> Changes since v8:
>  - Simplified qcom_vadc_map_voltage_temp() code by removing ascending
>    tables support
>  - Simplified qcom-vadc-common volt/temp mapping code
>  - Implement suggestions by Matthias Kaehlcke: message formatting,
>    rewrite comments, remove unused variable initialization.
>
> Changes since v7:
>  - Move qcom-vadc-common.h header to include/linux/iio/adc/ dir.
>  - Use explicit sizeof(var) instead of hand-coding 1 when accessing
>    adc-tm registers.
>  - Remove buffer read from adc_tm5_init().
>  - Remove extra on-stack var from adc_tm5_get_temp().
>  - Minor formatting changes as suggested Daniel.
>
> Changes since v6:
>  - Added include <linux/bitfield.h> as noted by Jishnu Prakash.
>
> Changes since v5:
>  - Reworked DT bindings:
>    * Removed qcom,adc-channel, instead it is parsed from io-channels
>    * Renamed qcom,hw-settle-time to include -us suffix
>  - Re-added monitor enabling which got lost during refactored. Noted by
>    Jishnu Prakash.
>  - Use threaded IRQ handler as susggested by Jishnu.
>
> Changes since v4:
>  - Added kernel-doc comments to ADC-TM structures
>  - Used several sizeof(buf) instead of hand-conding register size
>
> Changes since v3:
>  - Fix DT description to spell "thermal monitoring" instead of just TM
>  - Fix warnings in DT example
>  - Add EXPORT_SYMBOL_GPL(of_iio_channel_get_by_name)
>  - Fixed whitespace chanes in qcom-vadc-common.c
>  - Removed error message if IIO chanel get returns -EPROBE_DEFER
>
> Changes since v2:
>  - IIO: export of_iio_channel_get_by_name() function
>  - dt-bindings: move individual io-channels to each thermal monitoring
>    channel rather than listing them all in device node
>  - added fallback defaults to of_device_get_match_data calls in
>    qcom-spmi-adc5 and qcom-spmi-adc-tm5 drivers
>  - minor typo fixes
>
> Changes since v1:
>  - Introduce fixp_linear_interpolate() by Craig Tatlor
>  - Lots of syntax/whitespace changes
>  - Cleaned up register definitions per Jonathan's suggestion
>  - Implemented most of the suggestions from Bjorn's and Jonathan's
>    review
>
>


--
With best wishes
Dmitry