lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 005/453] pinctrl: baytrail: Avoid clearing debounce value when turning it off
    Date
    From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

    [ Upstream commit 0b74e40a4e41f3cbad76dff4c50850d47b525b26 ]

    Baytrail pin control has a common register to set up debounce timeout.
    When a pin configuration requested debounce to be disabled, the rest
    of the pins may still want to have debounce enabled and thus rely on
    the common timeout value. Avoid clearing debounce value when turning
    it off for one pin while others may still use it.

    Fixes: 658b476c742f ("pinctrl: baytrail: Add debounce configuration")
    Depends-on: 04ff5a095d66 ("pinctrl: baytrail: Rectify debounce support")
    Depends-on: 827e1579e1d5 ("pinctrl: baytrail: Rectify debounce support (part 2)")
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/pinctrl/intel/pinctrl-baytrail.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c
    index 5a1174a8e2bac..d05f20ca90d7e 100644
    --- a/drivers/pinctrl/intel/pinctrl-baytrail.c
    +++ b/drivers/pinctrl/intel/pinctrl-baytrail.c
    @@ -1060,7 +1060,6 @@ static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,
    break;
    case PIN_CONFIG_INPUT_DEBOUNCE:
    debounce = readl(db_reg);
    - debounce &= ~BYT_DEBOUNCE_PULSE_MASK;

    if (arg)
    conf |= BYT_DEBOUNCE_EN;
    @@ -1069,24 +1068,31 @@ static int byt_pin_config_set(struct pinctrl_dev *pctl_dev,

    switch (arg) {
    case 375:
    + debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
    debounce |= BYT_DEBOUNCE_PULSE_375US;
    break;
    case 750:
    + debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
    debounce |= BYT_DEBOUNCE_PULSE_750US;
    break;
    case 1500:
    + debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
    debounce |= BYT_DEBOUNCE_PULSE_1500US;
    break;
    case 3000:
    + debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
    debounce |= BYT_DEBOUNCE_PULSE_3MS;
    break;
    case 6000:
    + debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
    debounce |= BYT_DEBOUNCE_PULSE_6MS;
    break;
    case 12000:
    + debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
    debounce |= BYT_DEBOUNCE_PULSE_12MS;
    break;
    case 24000:
    + debounce &= ~BYT_DEBOUNCE_PULSE_MASK;
    debounce |= BYT_DEBOUNCE_PULSE_24MS;
    break;
    default:
    --
    2.27.0


    \
     
     \ /
      Last update: 2020-12-28 16:53    [W:5.058 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site