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 004/453] pinctrl: merrifield: Set default bias in case no particular value given
    Date
    From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

    [ Upstream commit 0fa86fc2e28227f1e64f13867e73cf864c6d25ad ]

    When GPIO library asks pin control to set the bias, it doesn't pass
    any value of it and argument is considered boolean (and this is true
    for ACPI GpioIo() / GpioInt() resources, by the way). Thus, individual
    drivers must behave well, when they got the resistance value of 1 Ohm,
    i.e. transforming it to sane default.

    In case of Intel Merrifield pin control hardware the 20 kOhm sounds plausible
    because it gives a good trade off between weakness and minimization of leakage
    current (will be only 50 uA with the above choice).

    Fixes: 4e80c8f50574 ("pinctrl: intel: Add Intel Merrifield pin controller support")
    Depends-on: 2956b5d94a76 ("pinctrl / gpio: Introduce .set_config() callback for GPIO chips")
    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-merrifield.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    diff --git a/drivers/pinctrl/intel/pinctrl-merrifield.c b/drivers/pinctrl/intel/pinctrl-merrifield.c
    index 04ca8ae95df83..9e91d83b01388 100644
    --- a/drivers/pinctrl/intel/pinctrl-merrifield.c
    +++ b/drivers/pinctrl/intel/pinctrl-merrifield.c
    @@ -741,6 +741,10 @@ static int mrfld_config_set_pin(struct mrfld_pinctrl *mp, unsigned int pin,
    mask |= BUFCFG_Px_EN_MASK | BUFCFG_PUPD_VAL_MASK;
    bits |= BUFCFG_PU_EN;

    + /* Set default strength value in case none is given */
    + if (arg == 1)
    + arg = 20000;
    +
    switch (arg) {
    case 50000:
    bits |= BUFCFG_PUPD_VAL_50K << BUFCFG_PUPD_VAL_SHIFT;
    @@ -761,6 +765,10 @@ static int mrfld_config_set_pin(struct mrfld_pinctrl *mp, unsigned int pin,
    mask |= BUFCFG_Px_EN_MASK | BUFCFG_PUPD_VAL_MASK;
    bits |= BUFCFG_PD_EN;

    + /* Set default strength value in case none is given */
    + if (arg == 1)
    + arg = 20000;
    +
    switch (arg) {
    case 50000:
    bits |= BUFCFG_PUPD_VAL_50K << BUFCFG_PUPD_VAL_SHIFT;
    --
    2.27.0


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