WSL2-Linux-Kernel/drivers/pinctrl
Keerthy 56b367c0cd pinctrl: single: Fix pcs_parse_bits_in_pinctrl_entry to use __ffs than ffs
pcs_parse_bits_in_pinctrl_entry uses ffs which gives bit indices
ranging from 1 to MAX. This leads to a corner case where we try to request
the pin number = MAX and fails.

bit_pos value is being calculted using ffs. pin_num_from_lsb uses
bit_pos value. pins array is populated with:

pin + pin_num_from_lsb.

The above is 1 more than usual bit indices as bit_pos uses ffs to compute
first set bit. Hence the last of the pins array is populated with the MAX
value and not MAX - 1 which causes error when we call pin_request.

mask_pos is rightly calculated as ((pcs->fmask) << (bit_pos - 1))
Consequently val_pos and submask are correct.

Hence use __ffs which gives (ffs(x) - 1) as the first bit set.

fixes: 4e7e8017a8 ("pinctrl: pinctrl-single: enhance to configure multiple pins of different modules")
Signed-off-by: Keerthy <j-keerthy@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2016-04-15 11:26:55 +02:00
..
bcm This is the bulk of GPIO changes for kernel v4.6: 2016-03-17 21:05:32 -07:00
berlin pinctrl: berlin: guard sub-directory with CONFIG_PINCTRL_BERLIN 2015-12-01 10:39:26 +01:00
freescale pinctrl: imx: Kconfig: PINCTRL_IMX select REGMAP 2016-04-14 14:19:00 +02:00
intel pinctrl: intel: implement gpio_irq_enable 2016-03-30 10:57:52 +02:00
mediatek pinctrl: mediatek: correct debounce time unit in mtk_gpio_set_debounce 2016-04-15 10:28:04 +02:00
meson pinctrl: amlogic: Make driver independent from two-domain configuration 2016-03-09 13:00:28 +07:00
mvebu pinctrl: mvebu: fix num_settings in mpp group assignment 2016-02-13 23:51:45 +01:00
nomadik pinctrl: nomadik: fix pull debug print inversion 2016-03-31 10:45:26 +02:00
pxa pinctrl: pxa2xx: export symbols 2016-03-09 09:10:02 +07:00
qcom pinctrl: qcom: ipq4019: fix register offsets 2016-03-31 11:56:13 +02:00
samsung pinctrl: samsung: fix SMP race condition 2016-02-15 20:45:50 +01:00
sh-pfc pinctrl: sh-pfc: only use dummy states for non-DT platforms 2016-03-30 10:57:51 +02:00
sirf pinctrl: sirf/atlas7: stop poking around in GPIO internals 2016-02-16 00:19:54 +01:00
spear GPIO bulk updates for the v4.5 kernel cycle: 2016-01-17 12:32:01 -08:00
stm32 pinctrl: stm32: make explicitly non-modular 2016-03-09 10:24:54 +07:00
sunxi pinctrl: sunxi: Fix A33 external interrupts not working 2016-03-30 10:57:52 +02:00
tegra pinctrl: tegra: move Tegra pinctrl drivers to sub-directory 2016-02-05 15:16:43 +01:00
uniphier pinctrl: uniphier: rename CONFIG options and file names 2016-03-09 10:39:30 +07:00
vt8500 pinctrl: vt8500-wmt: use gpiochip data pointer 2016-01-05 14:15:08 +01:00
Kconfig pinctrl: Turn AMD support to tristate 2016-02-16 00:11:49 +01:00
Makefile pinctrl: mediatek: guard sub-directory with CONFIG_PINCTRL_MTK 2016-02-13 23:34:19 +01:00
core.c pinctrl: core: create nolock version of pinctrl_find_gpio_range_from_pin 2016-03-07 10:41:20 +07:00
core.h pinctrl: core: create nolock version of pinctrl_find_gpio_range_from_pin 2016-03-07 10:41:20 +07:00
devicetree.c
devicetree.h
pinconf-generic.c pinctrl: update document for pinconf_generic_parse_dt_config 2015-12-01 11:11:05 +01: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
pinctrl-adi2.c GPIO bulk updates for the v4.5 kernel cycle: 2016-01-17 12:32:01 -08:00
pinctrl-adi2.h
pinctrl-amd.c pinctrl: Fix return value check in amd_gpio_probe() 2016-02-15 19:42:41 +01:00
pinctrl-amd.h
pinctrl-as3722.c pinctrl: as3722: use gpiochip data pointer 2016-01-05 14:14:53 +01:00
pinctrl-at91-pio4.c pinctrl: at91: use __maybe_unused to hide pm functions 2016-03-09 11:08:32 +07:00
pinctrl-at91.c GPIO bulk updates for the v4.5 kernel cycle: 2016-01-17 12:32:01 -08:00
pinctrl-at91.h
pinctrl-coh901.c pinctrl: coh901: fix initconst annotation 2016-02-15 20:40:52 +01:00
pinctrl-coh901.h
pinctrl-digicolor.c pinctrl: digicolor: use gpiochip data pointer 2016-01-05 14:14:55 +01:00
pinctrl-falcon.c
pinctrl-lantiq.c
pinctrl-lantiq.h pinctrl/lantiq: introduce new dedicated devicetree bindings 2015-11-30 13:12:07 +01:00
pinctrl-lpc18xx.c pinctrl: lpc18xx: add nxp,gpio-pin-interrupt property 2016-03-07 10:44:30 +07:00
pinctrl-palmas.c
pinctrl-pic32.c pinctrl: pinctrl-pic32: Add PIC32 pin control driver 2016-02-05 23:54:47 +01:00
pinctrl-pic32.h pinctrl: pinctrl-pic32: Add PIC32 pin control driver 2016-02-05 23:54:47 +01:00
pinctrl-pistachio.c pinctrl: pistachio: fix mfio84-89 function description and pinmux. 2016-03-30 10:57:51 +02:00
pinctrl-rockchip.c pinctrl: rockchip: add support for the rk3399 2016-02-10 16:41:03 +01:00
pinctrl-single.c pinctrl: single: Fix pcs_parse_bits_in_pinctrl_entry to use __ffs than ffs 2016-04-15 11:26:55 +02:00
pinctrl-st.c pinctrl: st: activate strict mux mode 2016-01-27 11:02:53 +01:00
pinctrl-tb10x.c
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-utils.c
pinctrl-utils.h
pinctrl-xway.c Revert "Revert "pinctrl: lantiq: Implement gpio_chip.to_irq"" 2016-04-01 15:21:27 +02:00
pinctrl-zynq.c pinctrl: zynq: fix typo in group name for qspi1 2016-02-15 19:18:59 +01:00
pinmux.c pinctrl: convert to use match_string() helper 2016-03-17 15:09:34 -07:00
pinmux.h