linux/drivers/pinctrl
Douglas Anderson 86312d58a9 pinctrl: qcom: spmi-gpio: Fix pmic_gpio_config_get() to be compliant
[ Upstream commit 1cf86bc212 ]

If you do this on an sdm845 board:
  grep "" /sys/kernel/debug/pinctrl/*spmi:pmic*/pinconf-groups

...it looks like nonsense.  For every pin you see listed:
  input bias disabled, input bias high impedance, input bias pull down, input bias pull up, ...

That's because pmic_gpio_config_get() isn't complying with the rules
that pinconf_generic_dump_one() expects.  Specifically for boolean
parameters (anything with a "struct pin_config_item" where has_arg is
false) the function expects that the function should return its value
not through the "config" parameter but should return "0" if the value
is set and "-EINVAL" if the value isn't set.

Let's fix this.

>From a quick sample of other pinctrl drivers, it appears to be
tradition to also return 1 through the config parameter for these
boolean parameters when they exist.  I'm not one to knock tradition,
so I'll follow tradition and return 1 in these cases.  While I'm at
it, I'll also continue searching for four leaf clovers, kocking on
wood three times, and trying not to break mirrors.

NOTE: This also fixes an apparent typo for reading
PIN_CONFIG_BIAS_DISABLE where the old driver was accidentally
using "=" instead of "==" and thus was setting some internal
state when you tried to query PIN_CONFIG_BIAS_DISABLE.  Oops.

Fixes: eadff30244 ("pinctrl: Qualcomm SPMI PMIC GPIO pin controller driver")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-09-26 08:35:10 +02:00
..
bcm pinctrl-bcm2835: Fix cut-and-paste error in "pull" parsing 2016-04-12 09:08:37 -07:00
berlin pinctrl: berlin-bg4ct: fix the value for "sd1a" of pin SCRD0_CRD_PRES 2017-06-17 06:39:37 +02:00
freescale pinctrl: freescale: off by one in imx1_pinconf_group_dbg_show() 2018-09-05 09:18:39 +02:00
intel pinctrl: cherryview: Do not mask all interrupts in probe 2017-03-26 12:13:17 +02:00
mediatek pinctrl: mediatek: fix dual-edge code defect 2016-06-24 10:18:20 -07:00
meson pinctrl: meson: meson8b: fix the NAND DQS pins 2017-07-15 11:57:46 +02:00
mvebu Here is the bulk of pin control changes for the v4.2 series: 2015-06-24 19:21:02 -07:00
nomadik pinctrl: nomadik: fix pull debug print inversion 2016-04-20 15:42:08 +09:00
qcom pinctrl: qcom: spmi-gpio: Fix pmic_gpio_config_get() to be compliant 2018-09-26 08:35:10 +02:00
samsung pinctrl: samsung: Remove bogus irq_[un]mask from resource management 2017-08-16 13:40:30 -07:00
sh-pfc pinctrl: sh-pfc: Update info pointer after SoC-specific init 2017-07-15 11:57:46 +02:00
sirf pinctrl: atlas7: support atlas7 step B changes 2015-10-16 21:56:07 +02:00
spear genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
sunxi pinctrl: sunxi: Fix A80 interrupt pin bank 2018-02-25 11:03:39 +01:00
uniphier pinctrl: uniphier: fix .pin_dbg_show() callback 2016-10-07 15:23:41 +02:00
vt8500 pinctrl: replace trivial implementations of gpio_chip request/free 2015-10-16 22:20:21 +02:00
core.c pinctrl: Really force states during suspend/resume 2018-03-24 10:58:48 +01:00
core.h pinctrl: Don't just pretend to protect pinctrl_maps, do it for real 2015-05-06 16:24:28 +02:00
devicetree.c pinctrl: simplify of_pinctrl_get() 2015-07-16 09:39:03 +02:00
devicetree.h
Kconfig pinctrl: adi2: Fix Kconfig build problem 2017-12-20 10:05:00 +01:00
Makefile pinctrl: uniphier: guard uniphier directory with CONFIG_PINCTRL_UNIPHIER 2015-10-31 22:13:07 +01:00
pinconf-generic.c pinctrl: pinconf-generic: add "input-schmitt" DT property 2015-10-02 15:09:11 -07:00
pinconf.c pinctrl: pinconf: remove needless loop 2015-10-31 22:13:07 +01:00
pinconf.h
pinctrl-adi2-bf54x.c
pinctrl-adi2-bf60x.c added tabs instead of spaces 2015-07-16 09:39:01 +02:00
pinctrl-adi2.c pinctrl: replace trivial implementations of gpio_chip request/free 2015-10-16 22:20:21 +02:00
pinctrl-adi2.h
pinctrl-amd.c pinctrl/amd: Remove the default de-bounce time 2016-09-07 08:32:41 +02:00
pinctrl-amd.h Fix inconsistent spinlock of AMD GPIO driver which can be 2015-04-07 11:36:49 +02:00
pinctrl-as3722.c pinctrl: replace trivial implementations of gpio_chip request/free 2015-10-16 22:20:21 +02:00
pinctrl-at91-pio4.c pinctrl: at91-pio4: add missing of_node_put 2018-08-06 16:24:34 +02:00
pinctrl-at91.c This is the bulk of GPIO changes for v4.4: 2015-11-02 12:59:12 -08:00
pinctrl-at91.h
pinctrl-coh901.c pinctrl: replace trivial implementations of gpio_chip request/free 2015-10-16 22:20:21 +02:00
pinctrl-coh901.h
pinctrl-digicolor.c pinctrl: replace trivial implementations of gpio_chip request/free 2015-10-16 22:20:21 +02:00
pinctrl-falcon.c
pinctrl-lantiq.c pinctrl: make pinctrl_register() return proper error code 2015-06-10 14:49:52 +02:00
pinctrl-lantiq.h
pinctrl-lpc18xx.c This is the bulk of pin control changes for the v4.3 development 2015-09-04 10:22:09 -07:00
pinctrl-palmas.c pinctrl: make pinctrl_register() return proper error code 2015-06-10 14:49:52 +02:00
pinctrl-pistachio.c pinctrl: pistachio: fix mfio pll_lock pinmux 2016-09-24 10:07:41 +02:00
pinctrl-rockchip.c This is the bulk of GPIO changes for v4.4: 2015-11-02 12:59:12 -08:00
pinctrl-single.c pinctrl: single: Fix missing flush of posted write for a wakeirq 2016-08-10 11:49:27 +02:00
pinctrl-st.c pinctrl: st: add irq_request/release_resources callbacks 2017-12-25 14:22:11 +01:00
pinctrl-tb10x.c pinctrl: make pinctrl_register() return proper error code 2015-06-10 14:49:52 +02:00
pinctrl-tegra-xusb.c pinctrl: tegra-xusb: Correct lane mux options 2015-10-27 17:06:23 +01:00
pinctrl-tegra.c pinctrl: tegra: Only set the gpio range if needed 2015-08-13 16:24:33 +02:00
pinctrl-tegra.h pinctrl: tegra: use signed bitfields for optional fields 2015-03-19 09:20:17 +01:00
pinctrl-tegra20.c pinctrl: tegra: some bits move between registers 2015-03-09 18:10:58 +01:00
pinctrl-tegra30.c pinctrl: tegra: some bits move between registers 2015-03-09 18:10:58 +01:00
pinctrl-tegra114.c pinctrl: tegra: some bits move between registers 2015-03-09 18:10:58 +01:00
pinctrl-tegra124.c pinctrl: tegra: some bits move between registers 2015-03-09 18:10:58 +01:00
pinctrl-tegra210.c pinctrl: tegra: add a driver for Tegra210 2015-03-09 18:10:59 +01:00
pinctrl-tz1090-pdc.c pinctrl: tz1090-pdc: Remove unneded semicolons 2015-10-02 04:06:46 -07:00
pinctrl-tz1090.c pinctrl: tz1090: Remove unneded semicolons 2015-10-02 04:06:46 -07:00
pinctrl-u300.c pinctrl: make pinctrl_register() return proper error code 2015-06-10 14:49:52 +02:00
pinctrl-utils.c
pinctrl-utils.h
pinctrl-xway.c pinctrl: replace trivial implementations of gpio_chip request/free 2015-10-16 22:20:21 +02:00
pinctrl-zynq.c pinctrl: zynq: fix UTF-8 errors 2015-10-31 22:12:59 +01:00
pinmux.c pinctrl: join lines that can be a single line within 80 columns 2015-09-14 09:13:43 +02:00
pinmux.h