From: Peter Ujfalusi <peter.ujfalusi@ti.com> To: Tony Lindgren <tony@atomide.com>, Lee Jones <lee.jones@linaro.org> Cc: <linux-kernel@vger.kernel.org>, <linux-omap@vger.kernel.org>, Florian Vaussard <florian.vaussard@epfl.ch> Subject: Re: [PATCH] mfd: twl6040: Fix device init errors for ACCCTL register Date: Tue, 12 Feb 2019 09:50:19 +0200 [thread overview] Message-ID: <d749644a-95ae-822d-f7cb-69010a8f71e0@ti.com> (raw) In-Reply-To: <20190211225726.38355-1-tony@atomide.com> On 12/02/2019 0.57, Tony Lindgren wrote: > I noticed that we can get a -EREMOTEIO errors on at least omap4 duovero: > > twl6040 0-004b: Failed to write 2d = 19: -121 > > And then any following register access will produce errors. > > There 2d offset above is register ACCCTL that gets written on twl6040 > powerup. With error checking added to the related regcache_sync() call, > the -EREMOTEIO error is reproducable on twl6040 powerup at least > duovero. > > To fix the error, we need to wait until twl6040 is accessible after the > powerup. Based on tests on omap4 duovero, we need to wait over 8ms after > powerup before register write will complete without failures. Let's also > make sure we warn about possible errors too. > > Note that we have twl6040_patch[] reg_sequence with the ACCCTL register > configuration and regcache_sync() will write the new value to ACCCTL. Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > > Cc: Florian Vaussard <florian.vaussard@epfl.ch> > Cc: Peter Ujfalusi <peter.ujfalusi@ti.com> > Signed-off-by: Tony Lindgren <tony@atomide.com> > --- > drivers/mfd/twl6040.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/drivers/mfd/twl6040.c b/drivers/mfd/twl6040.c > --- a/drivers/mfd/twl6040.c > +++ b/drivers/mfd/twl6040.c > @@ -322,8 +322,19 @@ int twl6040_power(struct twl6040 *twl6040, int on) > } > } > > + /* > + * Register access can produce errors after power-up unless we > + * wait at least 8ms based on measurements on duovero. > + */ > + usleep_range(10000, 12000); > + > /* Sync with the HW */ > - regcache_sync(twl6040->regmap); > + ret = regcache_sync(twl6040->regmap); > + if (ret) { > + dev_err(twl6040->dev, "%s register write failed: %i\n", > + __func__, ret); > + goto out; > + } > > /* Default PLL configuration after power up */ > twl6040->pll = TWL6040_SYSCLK_SEL_LPPLL; > - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
WARNING: multiple messages have this Message-ID (diff)
From: Peter Ujfalusi <peter.ujfalusi@ti.com> To: Tony Lindgren <tony@atomide.com>, Lee Jones <lee.jones@linaro.org> Cc: linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Florian Vaussard <florian.vaussard@epfl.ch> Subject: Re: [PATCH] mfd: twl6040: Fix device init errors for ACCCTL register Date: Tue, 12 Feb 2019 09:50:19 +0200 [thread overview] Message-ID: <d749644a-95ae-822d-f7cb-69010a8f71e0@ti.com> (raw) In-Reply-To: <20190211225726.38355-1-tony@atomide.com> On 12/02/2019 0.57, Tony Lindgren wrote: > I noticed that we can get a -EREMOTEIO errors on at least omap4 duovero: > > twl6040 0-004b: Failed to write 2d = 19: -121 > > And then any following register access will produce errors. > > There 2d offset above is register ACCCTL that gets written on twl6040 > powerup. With error checking added to the related regcache_sync() call, > the -EREMOTEIO error is reproducable on twl6040 powerup at least > duovero. > > To fix the error, we need to wait until twl6040 is accessible after the > powerup. Based on tests on omap4 duovero, we need to wait over 8ms after > powerup before register write will complete without failures. Let's also > make sure we warn about possible errors too. > > Note that we have twl6040_patch[] reg_sequence with the ACCCTL register > configuration and regcache_sync() will write the new value to ACCCTL. Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > > Cc: Florian Vaussard <florian.vaussard@epfl.ch> > Cc: Peter Ujfalusi <peter.ujfalusi@ti.com> > Signed-off-by: Tony Lindgren <tony@atomide.com> > --- > drivers/mfd/twl6040.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/drivers/mfd/twl6040.c b/drivers/mfd/twl6040.c > --- a/drivers/mfd/twl6040.c > +++ b/drivers/mfd/twl6040.c > @@ -322,8 +322,19 @@ int twl6040_power(struct twl6040 *twl6040, int on) > } > } > > + /* > + * Register access can produce errors after power-up unless we > + * wait at least 8ms based on measurements on duovero. > + */ > + usleep_range(10000, 12000); > + > /* Sync with the HW */ > - regcache_sync(twl6040->regmap); > + ret = regcache_sync(twl6040->regmap); > + if (ret) { > + dev_err(twl6040->dev, "%s register write failed: %i\n", > + __func__, ret); > + goto out; > + } > > /* Default PLL configuration after power up */ > twl6040->pll = TWL6040_SYSCLK_SEL_LPPLL; > - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
next prev parent reply other threads:[~2019-02-12 7:50 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-02-11 22:57 [PATCH] mfd: twl6040: Fix device init errors for ACCCTL register Tony Lindgren 2019-02-12 7:50 ` Peter Ujfalusi [this message] 2019-02-12 7:50 ` Peter Ujfalusi 2019-02-14 9:20 ` Lee Jones 2019-02-14 16:03 ` Tony Lindgren
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=d749644a-95ae-822d-f7cb-69010a8f71e0@ti.com \ --to=peter.ujfalusi@ti.com \ --cc=florian.vaussard@epfl.ch \ --cc=lee.jones@linaro.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-omap@vger.kernel.org \ --cc=tony@atomide.com \ /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: linkBe 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.