Re: [PATCH] pinctrl: mxs: atomically switch mux and drive strength config

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 18, 2017 at 11:23:55AM +0200, Uwe Kleine-König wrote:
> 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: 17723111e64f ("pinctrl: add pinctrl-mxs support")
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx>

Acked-by: Shawn Guo <shawnguo@xxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux