From: Arend van Spriel <arend.vanspriel@broadcom.com>
To: Rafal <fatwildcat@gmail.com>
Cc: linux-wireless@vger.kernel.org
Subject: Re: brcmfmac: 43430, additional delay after core out of reset
Date: Tue, 25 Jul 2017 14:14:40 +0200 [thread overview]
Message-ID: <59773630.5020407@broadcom.com> (raw)
In-Reply-To: <alpine.DEB.2.20.1707211817260.11359@wilk>
On 7/21/2017 6:20 PM, Rafal wrote:
> Again, ap6212 device on board. When the module gets unloaded and then
> loaded again, sometimes the driver fails to bring up the device - it
> stops with the following errors:
>
> [ 125.668000] brcmfmac: brcmf_sdio_txfail: sdio error, abort command
> and terminate frame
> [ 125.676000] brcmfmac: brcmf_sdio_txfail: sdio error, abort command
> and terminate frame
> [ 125.680000] brcmfmac: brcmf_sdio_txfail: sdio error, abort command
> and terminate frame
> [ 125.684000] brcmfmac: brcmf_sdio_dpc: failed backplane access over
> SDIO, halting operation
> [ 125.684000] brcmfmac: brcmf_proto_bcdc_query_dcmd:
> brcmf_proto_bcdc_msg failed w/status -84
> [ 125.684000] brcmfmac: brcmf_c_preinit_dcmds: Retreiving cur_etheraddr
> failed, -84
> [ 125.684000] brcmfmac: brcmf_bus_started: failed: -84
>
> I have made some investigations and it looks the problem is caused by
> too short time between getting CM3 core out of reset and first
> communication attempt with the device. It looks the device needs about
> 50ms to boot up. Usually the appropriate delay is introduced by function
> sdio_enable_func which is called just after activation of the core to
> enable F2 function on device. Usually the sdio function introduces the
> needed 50ms delay and everything is OK. But sometimes the function
> returns immediately. In this case the driver breaks down with the above
> error. But if the additional delay is added in place of
> sdio_enable_func, everything is okay.
Hi Rafal,
That is an interesting find. I took a dive into the SDIO code. After
enabling F2 there are actually three signals from the device that
indicate its readiness to handle communication with the host. However,
none of them are waited for before activating higher layer operations in
the driver. So instead of the delay it may be better to wait for the
device to come up properly and indicate its readiness. If we do need
this delay I would rather put it in sdio.c. Anyway, if I come up with a
patch for testing would you be willing to give it a spin. Thanks for
digging deeper.
Regards,
Arend
next prev parent reply other threads:[~2017-07-25 12:14 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-21 16:20 brcmfmac: 43430, additional delay after core out of reset Rafal
2017-07-25 12:14 ` Arend van Spriel [this message]
2017-07-25 14:49 ` Rafal
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=59773630.5020407@broadcom.com \
--to=arend.vanspriel@broadcom.com \
--cc=fatwildcat@gmail.com \
--cc=linux-wireless@vger.kernel.org \
/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).