All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shawn Guo <shawnguo@kernel.org>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	Fabio Estevam <fabio.estevam@nxp.com>,
	kernel@pengutronix.de, linux-gpio@vger.kernel.org
Subject: Re: [PATCH] pinctrl: mxs: atomically switch mux and drive strength config
Date: Sun, 21 May 2017 16:46:12 +0800	[thread overview]
Message-ID: <20170521084611.GI26102@dragon> (raw)
In-Reply-To: <20170518092355.6735-1-u.kleine-koenig@pengutronix.de>

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@pengutronix.de>

Acked-by: Shawn Guo <shawnguo@kernel.org>

  reply	other threads:[~2017-05-21  8:46 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-18  9:23 [PATCH] pinctrl: mxs: atomically switch mux and drive strength config Uwe Kleine-König
2017-05-21  8:46 ` Shawn Guo [this message]
2017-05-23  9:28 ` Linus Walleij

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170521084611.GI26102@dragon \
    --to=shawnguo@kernel.org \
    --cc=fabio.estevam@nxp.com \
    --cc=kernel@pengutronix.de \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=u.kleine-koenig@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.