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 4.19 056/346] 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 1b00a3f3b419c..b3d478edbbb1c 100644
    --- a/drivers/pinctrl/intel/pinctrl-baytrail.c
    +++ b/drivers/pinctrl/intel/pinctrl-baytrail.c
    @@ -1258,7 +1258,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;
    @@ -1267,24 +1266,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 14:25    [W:4.132 / U:0.912 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site