Uwe Kleine-König
da6c2addf6
pinctrl: mxs: atomically switch mux and drive strength config
...
To set the mux mode of a pin two bits must be set. Up to now this is
implemented using the following idiom:
writel(mask, reg + CLR);
writel(value, reg + SET);
. This however results in the mux mode being 0 between the two writes.
On my machine there is an IC's reset pin connected to LCD_D20. The
bootloader configures this pin as GPIO output-high (i.e. not holding the
IC in reset). When Linux reconfigures the pin to GPIO the short time
LCD_D20 is muxed as LCD_D20 instead of GPIO_1_20 is enough to confuse
the connected IC.
The same problem is present for the pin's drive strength setting which is
reset to low drive strength before using the right value.
So instead of relying on the hardware to modify the register setting
using two writes implement the bit toggling using read-modify-write.
Fixes: 17723111e6 ("pinctrl: add pinctrl-mxs support")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2017-05-23 11:27:53 +02:00
..
aspeed
pinctrl: aspeed: g5: Add pinconf support
2017-04-24 14:55:50 +02:00
bcm
pinctrl: bcm: make use of raw_spinlock variants
2017-03-16 16:39:14 +01:00
berlin
Pin control bulk changes for the v4.11 kernel cycle:
2017-02-21 16:34:22 -08:00
freescale
pinctrl: mxs: atomically switch mux and drive strength config
2017-05-23 11:27:53 +02:00
intel
pinctrl: cherryview: Extend the Chromebook DMI quirk to Intel_Strago systems
2017-05-23 10:08:40 +02:00
mediatek
pinctrl: mediatek: Use real dependencies
2017-01-26 16:26:50 +01:00
meson
This is the bulk of pin control changes for the v4.12 cycle:
2017-05-02 17:59:33 -07:00
mvebu
pinctrl: armada-37xx: Add gpio support
2017-04-24 13:47:29 +02:00
nomadik
pinctrl: nomadik: split up and comments MC0 pins
2016-11-18 09:54:32 +01:00
pxa
qcom
This is the bulk of pin control changes for the v4.12 cycle:
2017-05-02 17:59:33 -07:00
samsung
This is the bulk of pin control changes for the v4.12 cycle:
2017-05-02 17:59:33 -07:00
sh-pfc
This is the bulk of pin control changes for the v4.12 cycle:
2017-05-02 17:59:33 -07:00
sirf
pinctrl: sirf: atlas7: make use of raw_spinlock variants
2017-03-16 16:39:15 +01:00
spear
pinctrl: spear: make bool drivers explicitly non-modular
2017-02-13 14:25:55 +01:00
stm32
pinctrl: stm32: Add STM32F469 MCU support
2017-04-24 14:26:14 +02:00
sunxi
pinctrl: sunxi: make use of raw_spinlock variants
2017-03-16 16:39:16 +01:00
tegra
pinctrl: tegra: xusb: Silence sparse warnings
2017-04-24 18:35:54 +02:00
ti
pinctrl: core: Fix pinctrl_register_and_init() with pinctrl_enable()
2017-04-07 01:08:08 +02:00
uniphier
This is the bulk of pin control changes for the v4.12 cycle:
2017-05-02 17:59:33 -07:00
vt8500
pinctrl: Widen the generic pinconf argument from 16 to 24 bits
2017-01-26 15:22:32 +01:00
core.c
pinctrl: core: Fix warning by removing bogus code
2017-05-22 17:36:13 +02:00
core.h
pinctrl: core: Fix regression caused by delayed work for hogs
2017-01-13 16:25:17 +01:00
devicetree.c
pinctrl: core: Make dt_free_map optional
2017-01-09 19:41:07 +01:00
devicetree.h
pinctrl: core: Use delayed work for hogs
2017-01-03 09:26:16 +01:00
Kconfig
pinctrl: Add pincontrol driver for ARTPEC-6 SoC
2017-04-07 11:48:33 +02:00
Makefile
pinctrl: armada-37xx: Add pin controller support for Armada 37xx
2017-04-24 11:31:36 +02:00
pinconf-generic.c
Revert "pinctrl: generic: Add bi-directional and output-enable"
2017-05-22 10:39:10 +02:00
pinconf.c
pinctrl: Fix spelling typos
2017-03-14 14:42:22 +01:00
pinconf.h
pinctrl: Allow configuration of pins from gpiolib based drivers
2017-01-26 15:23:01 +01:00
pinctrl-adi2-bf54x.c
pinctrl-adi2-bf60x.c
pinctrl-adi2.c
pinctrl-adi2.h
pinctrl-amd.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2017-05-02 19:09:35 -07:00
pinctrl-amd.h
pinctrl: amd: make use of raw_spinlock variants
2017-03-16 16:39:15 +01:00
pinctrl-artpec6.c
pinctrl: artpec6: Fix return value check in artpec6_pmx_probe()
2017-04-28 09:40:52 +02:00
pinctrl-as3722.c
pinctrl-at91-pio4.c
pinctrl: at91-pio4: handle suspend to ram
2017-04-07 14:32:51 +02:00
pinctrl-at91.c
pinctrl: at91: add support for OUTPUT config
2016-10-31 09:16:46 +01:00
pinctrl-at91.h
pinctrl-coh901.c
pinctrl-coh901.h
pinctrl-da850-pupd.c
Merge branch 'ib-pinctrl-genprops' into devel
2017-01-26 15:27:54 +01:00
pinctrl-digicolor.c
Revert "pinctrl: digicolor: add missing platform_set_drvdata() call"
2016-06-23 09:50:05 +02:00
pinctrl-falcon.c
pinctrl: update my email address
2016-12-30 09:17:02 +01:00
pinctrl-lantiq.c
pinctrl: update my email address
2016-12-30 09:17:02 +01:00
pinctrl-lantiq.h
pinctrl: update my email address
2016-12-30 09:17:02 +01:00
pinctrl-lpc18xx.c
pinctrl: Widen the generic pinconf argument from 16 to 24 bits
2017-01-26 15:22:32 +01:00
pinctrl-max77620.c
pinctrl: Widen the generic pinconf argument from 16 to 24 bits
2017-01-26 15:22:32 +01:00
pinctrl-oxnas.c
pinctrl: oxnas: Add support for OX820
2016-10-24 16:30:14 +02:00
pinctrl-palmas.c
pinctrl: Widen the generic pinconf argument from 16 to 24 bits
2017-01-26 15:22:32 +01:00
pinctrl-pic32.c
pinctrl: pic32: Use devm_pinctrl_register() for pinctrl registration
2016-04-21 09:23:24 +02:00
pinctrl-pic32.h
pinctrl-pistachio.c
pinctrl: pistachio: fix mfio pll_lock pinmux
2016-08-22 15:28:35 +02:00
pinctrl-rockchip.c
pinctrl: rockchip: avoid hardirq-unsafe functions in irq_chip
2017-03-28 11:18:50 +02:00
pinctrl-single.c
pinctrl: core: Fix pinctrl_register_and_init() with pinctrl_enable()
2017-04-07 01:08:08 +02:00
pinctrl-st.c
pinctrl: st: add irq_request/release_resources callbacks
2017-03-23 10:10:39 +01:00
pinctrl-sx150x.c
pinctrl / gpio: Introduce .set_config() callback for GPIO chips
2017-01-26 15:27:37 +01:00
pinctrl-tb10x.c
pinctrl: tb10x: Use devm_pinctrl_register() for pinctrl registration
2016-04-21 09:23:25 +02:00
pinctrl-tz1090-pdc.c
pinctrl: tz1090-pdc: Use devm_pinctrl_register() for pinctrl registration
2016-04-21 09:23:26 +02:00
pinctrl-tz1090.c
pinctrl: tz1090 Use devm_pinctrl_register() for pinctrl registration
2016-04-21 09:23:26 +02:00
pinctrl-u300.c
pinctrl: u300: make u300_pmx_registers static
2016-06-13 09:27:43 +02:00
pinctrl-utils.c
pinctrl-utils.h
pinctrl-xway.c
pinctrl: update my email address
2016-12-30 09:17:02 +01:00
pinctrl-zynq.c
pinctrl: zynq: Add a 8 bit wide nand option
2016-11-04 15:19:00 +01:00
pinmux.c
pinctrl: core: Fix warning by removing bogus code
2017-05-22 17:36:13 +02:00
pinmux.h
pinctrl: core: Add generic pinctrl functions for managing groups
2017-01-03 09:26:18 +01:00