lkml.org 
[lkml]   [2021]   [Dec]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 09/71] iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda
    Date
    From: Fabrice Gasnier <fabrice.gasnier@foss.st.com>

    commit f711f28e71e965c0d1141c830fa7131b41abbe75 upstream.

    Some I/Os are connected to ADC input channels, when the corresponding bit
    in PCSEL register are set on STM32H7 and STM32MP15. This is done in the
    prepare routine of stm32-adc driver.
    There are constraints here, as PCSEL shouldn't be set when VDDA supply
    is disabled. Enabling/disabling of VDDA supply in done via stm32-adc-core
    runtime PM routines (before/after ADC is enabled/disabled).

    Currently, PCSEL remains set when disabling ADC. Later on, PM runtime
    can disable the VDDA supply. This creates some conditions on I/Os that
    can start to leak current.
    So PCSEL needs to be cleared when disabling the ADC.

    Fixes: 95e339b6e85d ("iio: adc: stm32: add support for STM32H7")
    Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
    Reviewed-by: Olivier Moysan <olivier.moysan@foss.st.com>
    Link: https://lore.kernel.org/r/1634905169-23762-1-git-send-email-fabrice.gasnier@foss.st.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/iio/adc/stm32-adc.c | 1 +
    1 file changed, 1 insertion(+)

    --- a/drivers/iio/adc/stm32-adc.c
    +++ b/drivers/iio/adc/stm32-adc.c
    @@ -933,6 +933,7 @@ pwr_dwn:

    static void stm32h7_adc_unprepare(struct stm32_adc *adc)
    {
    + stm32_adc_writel(adc, STM32H7_ADC_PCSEL, 0);
    stm32h7_adc_disable(adc);
    stm32h7_adc_enter_pwr_down(adc);
    }

    \
     
     \ /
      Last update: 2021-12-20 15:52    [W:2.697 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site