From: Florian Vaussard <florian.vaussard@epfl.ch>
To: Peter Ujfalusi <peter.ujfalusi@ti.com>
Cc: "Philippe Rétornaz" <philippe.retornaz@epfl.ch>,
linux-omap <linux-omap@vger.kernel.org>,
linux-arm <linux-arm-kernel@lists.infradead.org>
Subject: TWL6040 fails to initialize
Date: Tue, 25 Feb 2014 11:30:11 +0100 [thread overview]
Message-ID: <530C70B3.4010103@epfl.ch> (raw)
Hi Peter,
I got recently to work on the DT support for an OMAP4 board [1], and I
encountered some troubles with the probe of the twl6040 audio codec on
3.14-rc kernels. On 3.13, things were working correctly. So I somewhat
managed to bisect this down to [c7f9129 mfd: twl6040: reg_defaults
support for regmap]. But looking more into it, things are less obvious.
When the init fails, here is what happens:
[ 2.455749] twl6040 0-004b: Looking up vio-supply from device tree
[ 2.456359] twl6040 0-004b: Looking up v2v1-supply from device tree
[ 2.457061] twl6040 0-004b: Failed to set masks in 0x4: -121
[ 2.463043] twl6040: probe of 0-004b failed with error -121
logically resulting in
[ 2.770050] omap-abe-twl6040 sound.4: ASoC: CODEC twl6040-codec not
registered
[ 2.777770] omap-abe-twl6040 sound.4: snd_soc_register_card() failed:
-517
[ 2.785095] platform sound.4: Driver omap-abe-twl6040 requests probe
deferral
We get a EREMOTEIO when calling regmap_add_irq_chip() from
twl6040_probe(). regmap_add_irq_chip() will try to perform non-cached
i2c writes, where the omap-i2c driver get a NACK from the remote chip.
Strange enough, the non-cached read just before (i.e.
twl6040_reg_read(twl6040, TWL6040_REG_ASICREV)) succeeds.
After some fiddling around, I could find that delaying the call to
regmap_add_irq_chip(), let's say by msleep(1), will "solve" the problem.
As the TRM for TWL6040 is not public, and I cannot physically access the
i2c bus on the board, I ran out of hypothesis. I first suspected a
concurrent access from the McPDM bus, but the mcpdm driver does not seem
to perform command (write) access.
As the regulators are enabled just before, could it be the twl6040 IP
which is not yet initialized, and NACK'ing writes but not reads? The
commit c7f9129 changed the regmap logic by reducing the number of
non-cached accesses, and thus changed the access timings, so it may have
trigged this behaviour. But this is pure supposition, as I cannot hack
the i2c bus :( And adding any kind of tracing before
regmap_add_irq_chip() usually delays enough to make the probe succeeds.
Any ideas?
Regards,
Florian
[1] http://thread.gmane.org/gmane.linux.ports.arm.omap/110801
next reply other threads:[~2014-02-25 10:30 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-25 10:30 Florian Vaussard [this message]
2014-02-25 14:29 ` TWL6040 fails to initialize Peter Ujfalusi
2014-02-25 15:41 ` Florian Vaussard
2014-02-26 7:26 ` Peter Ujfalusi
2014-02-26 9:53 ` Florian Vaussard
2014-02-26 10:28 ` Peter Ujfalusi
2014-02-26 10:31 ` Florian Vaussard
2014-02-27 12:05 ` Peter Ujfalusi
2014-02-27 15:24 ` Florian Vaussard
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=530C70B3.4010103@epfl.ch \
--to=florian.vaussard@epfl.ch \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=peter.ujfalusi@ti.com \
--cc=philippe.retornaz@epfl.ch \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).