lkml.org 
[lkml]   [2018]   [Sep]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFT PATCH 1/2] pinctrl: ssbi-gpio: Fix pm8xxx_pin_config_get() to be compliant
    On Thu 30 Aug 08:23 PDT 2018, Douglas Anderson wrote:

    > If you look at "pinconf-groups" in debugfs for ssbi-gpio you'll notice
    > it looks like nonsense.
    >
    > The problem is fairly well described in commit 1cf86bc21257 ("pinctrl:
    > qcom: spmi-gpio: Fix pmic_gpio_config_get() to be compliant") and
    > commit 05e0c828955c ("pinctrl: msm: Fix msm_config_group_get() to be
    > compliant"), but it was pointed out that ssbi-gpio has the same
    > problem. Let's fix it there too.
    >
    > Fixes: b4c45fe974bc ("pinctrl: qcom: ssbi: Family A gpio & mpp drivers")
    > Signed-off-by: Douglas Anderson <dianders@chromium.org>

    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>

    Regards,
    Bjorn

    > ---
    >
    > drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c | 28 ++++++++++++++++++------
    > 1 file changed, 21 insertions(+), 7 deletions(-)
    >
    > diff --git a/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c b/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c
    > index f53e32a9d8fc..0e153bae322e 100644
    > --- a/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c
    > +++ b/drivers/pinctrl/qcom/pinctrl-ssbi-gpio.c
    > @@ -260,22 +260,32 @@ static int pm8xxx_pin_config_get(struct pinctrl_dev *pctldev,
    >
    > switch (param) {
    > case PIN_CONFIG_BIAS_DISABLE:
    > - arg = pin->bias == PM8XXX_GPIO_BIAS_NP;
    > + if (pin->bias != PM8XXX_GPIO_BIAS_NP)
    > + return -EINVAL;
    > + arg = 1;
    > break;
    > case PIN_CONFIG_BIAS_PULL_DOWN:
    > - arg = pin->bias == PM8XXX_GPIO_BIAS_PD;
    > + if (pin->bias != PM8XXX_GPIO_BIAS_PD)
    > + return -EINVAL;
    > + arg = 1;
    > break;
    > case PIN_CONFIG_BIAS_PULL_UP:
    > - arg = pin->bias <= PM8XXX_GPIO_BIAS_PU_1P5_30;
    > + if (pin->bias > PM8XXX_GPIO_BIAS_PU_1P5_30)
    > + return -EINVAL;
    > + arg = 1;
    > break;
    > case PM8XXX_QCOM_PULL_UP_STRENGTH:
    > arg = pin->pull_up_strength;
    > break;
    > case PIN_CONFIG_BIAS_HIGH_IMPEDANCE:
    > - arg = pin->disable;
    > + if (!pin->disable)
    > + return -EINVAL;
    > + arg = 1;
    > break;
    > case PIN_CONFIG_INPUT_ENABLE:
    > - arg = pin->mode == PM8XXX_GPIO_MODE_INPUT;
    > + if (pin->mode != PM8XXX_GPIO_MODE_INPUT)
    > + return -EINVAL;
    > + arg = 1;
    > break;
    > case PIN_CONFIG_OUTPUT:
    > if (pin->mode & PM8XXX_GPIO_MODE_OUTPUT)
    > @@ -290,10 +300,14 @@ static int pm8xxx_pin_config_get(struct pinctrl_dev *pctldev,
    > arg = pin->output_strength;
    > break;
    > case PIN_CONFIG_DRIVE_PUSH_PULL:
    > - arg = !pin->open_drain;
    > + if (pin->open_drain)
    > + return -EINVAL;
    > + arg = 1;
    > break;
    > case PIN_CONFIG_DRIVE_OPEN_DRAIN:
    > - arg = pin->open_drain;
    > + if (!pin->open_drain)
    > + return -EINVAL;
    > + arg = 1;
    > break;
    > default:
    > return -EINVAL;
    > --
    > 2.19.0.rc0.228.g281dcd1b4d0-goog
    >

    \
     
     \ /
      Last update: 2018-09-03 22:59    [W:2.628 / U:0.272 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site