linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* brcmfmac firmware issue on NanoPi K2
@ 2017-05-21 16:20 Andreas Färber
  2017-05-22 21:39 ` Franky Lin
  0 siblings, 1 reply; 2+ messages in thread
From: Andreas Färber @ 2017-05-21 16:20 UTC (permalink / raw)
  To: linux-wireless, brcm80211-dev-list.pdl
  Cc: netdev, technicalsupport, Arend Van Spriel, linux-amlogic

Hello,

The NanoPi K2 has an Ampak AP6212 SDIO module. brcmfmac driver loads
brcmfmac43430-sdio.bin.

When using the firmware file from linux-firmware.git that openSUSE ships
I get the following errors on 4.11.0 and next-20170519:

[ 2103.618716] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000):
clkctl 0x50
[ 2104.668746] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000):
clkctl 0x50
[ 2105.678677] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000):
clkctl 0x50

If I overwrite /lib/firmware/brcm/bcm43430-sdio.bin with
fw_bcm43438a0.bin from FriendlyARM's Android repository it suddenly works:

[  +0.157738] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0:
Jun  6 2014 14:50:39 version 7.10.226.49 (r) FWID 01-8962686a
[  +0.160108] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code
(0x30 0x30)

I recall using the linux-firmware.git brcmfmac43430-sdio.bin file
successfully on the Raspberry Pi 3 with a downstream (Leap 42.2) kernel.

I've tested both nvram_ap6212.txt and nvram_ap6212a.txt, the latter has
the following diff to nvram.txt:

--- nvram_ap6212.txt    2017-05-21 04:24:40.372113426 +0200
+++ nvram_ap6212a.txt   2017-05-21 04:24:49.852116599 +0200
@@ -1,4 +1,4 @@
-#AP6212_NVRAM_V1.0_20140603
+#AP6212_NVRAM_V1.0.1_20160606
 # 2.4 GHz, 20 MHz BW mode

 # The following parameter values are just placeholders, need to be updated.
@@ -51,4 +51,4 @@
 muxenab=0x10
 # CLDO PWM voltage settings - 0x4 - 1.1 volt
 #cldo_pwm=0x4
-
+glitch_based_crsmin=1

https://github.com/friendlyarm/android_hardware_amlogic_wifi/tree/l-amlogic-gx-sync/bcm_ampak/config/6212

* Does the linux-firmware.git brcmfmac43430-sdio.bin need a fix for AP6212?
https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/brcm

* Does the brcmfmac driver need to distinguish revisions in sdio.c as
done for 43241, plus a separate firmware file?
	BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFF, 43430),

* Any other ideas?

Thanks,
Andreas

-- 
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Jane Smithard, Graham Norton
HRB 21284 (AG Nürnberg)

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: brcmfmac firmware issue on NanoPi K2
  2017-05-21 16:20 brcmfmac firmware issue on NanoPi K2 Andreas Färber
@ 2017-05-22 21:39 ` Franky Lin
  0 siblings, 0 replies; 2+ messages in thread
From: Franky Lin @ 2017-05-22 21:39 UTC (permalink / raw)
  To: Andreas Färber
  Cc: linux-wireless,
	open list:BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER, netdev,
	technicalsupport, Arend Van Spriel, linux-amlogic

Hi Andreas,

On Sun, May 21, 2017 at 9:20 AM, Andreas F=C3=A4rber <afaerber@suse.de> wro=
te:
> Hello,
>
> The NanoPi K2 has an Ampak AP6212 SDIO module. brcmfmac driver loads
> brcmfmac43430-sdio.bin.
>
> When using the firmware file from linux-firmware.git that openSUSE ships
> I get the following errors on 4.11.0 and next-20170519:
>
> [ 2103.618716] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000):
> clkctl 0x50
> [ 2104.668746] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000):
> clkctl 0x50
> [ 2105.678677] brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000):
> clkctl 0x50
>
> If I overwrite /lib/firmware/brcm/bcm43430-sdio.bin with
> fw_bcm43438a0.bin from FriendlyARM's Android repository it suddenly works=
:
>
> [  +0.157738] brcmfmac: brcmf_c_preinit_dcmds: Firmware version =3D wl0:
> Jun  6 2014 14:50:39 version 7.10.226.49 (r) FWID 01-8962686a
> [  +0.160108] brcmfmac: brcmf_cfg80211_reg_notifier: not a ISO3166 code
> (0x30 0x30)
>
> I recall using the linux-firmware.git brcmfmac43430-sdio.bin file
> successfully on the Raspberry Pi 3 with a downstream (Leap 42.2) kernel.
>
> I've tested both nvram_ap6212.txt and nvram_ap6212a.txt, the latter has
> the following diff to nvram.txt:
>
> --- nvram_ap6212.txt    2017-05-21 04:24:40.372113426 +0200
> +++ nvram_ap6212a.txt   2017-05-21 04:24:49.852116599 +0200
> @@ -1,4 +1,4 @@
> -#AP6212_NVRAM_V1.0_20140603
> +#AP6212_NVRAM_V1.0.1_20160606
>  # 2.4 GHz, 20 MHz BW mode
>
>  # The following parameter values are just placeholders, need to be updat=
ed.
> @@ -51,4 +51,4 @@
>  muxenab=3D0x10
>  # CLDO PWM voltage settings - 0x4 - 1.1 volt
>  #cldo_pwm=3D0x4
> -
> +glitch_based_crsmin=3D1
>
> https://github.com/friendlyarm/android_hardware_amlogic_wifi/tree/l-amlog=
ic-gx-sync/bcm_ampak/config/6212
>
> * Does the linux-firmware.git brcmfmac43430-sdio.bin need a fix for AP621=
2?
> https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.g=
it/tree/brcm
>
> * Does the brcmfmac driver need to distinguish revisions in sdio.c as
> done for 43241, plus a separate firmware file?
>         BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFF, 43430),

It seems we are dealing with different revisions of 43430. The
firmware file you pointed to is for 43430a0 and raspberry pi 3 is
using 43430a1. So yes brcmfmac needs to load different firmware and
nvram for them just like 43241.

Could you please help try the attached patch? I don't have the
hardware to test it. Please rename the 43438 firmware and nvram to
brcmfmac43430a0-sdio.bin/txt.

Thanks,
Franky

---

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index a999f95..1b12ccb 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -608,6 +608,7 @@ BRCMF_FW_NVRAM_DEF(43340,
"brcmfmac43340-sdio.bin", "brcmfmac43340-sdio.txt");
 BRCMF_FW_NVRAM_DEF(4335, "brcmfmac4335-sdio.bin", "brcmfmac4335-sdio.txt")=
;
 BRCMF_FW_NVRAM_DEF(43362, "brcmfmac43362-sdio.bin", "brcmfmac43362-sdio.tx=
t");
 BRCMF_FW_NVRAM_DEF(4339, "brcmfmac4339-sdio.bin", "brcmfmac4339-sdio.txt")=
;
+BRCMF_FW_NVRAM_DEF(43430A0, "brcmfmac43430a0-sdio.bin",
"brcmfmac43430a0-sdio.txt");
 BRCMF_FW_NVRAM_DEF(43430, "brcmfmac43430-sdio.bin", "brcmfmac43430-sdio.tx=
t");
 BRCMF_FW_NVRAM_DEF(43455, "brcmfmac43455-sdio.bin", "brcmfmac43455-sdio.tx=
t");
 BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", "brcmfmac4354-sdio.txt")=
;
@@ -626,7 +627,8 @@ static struct brcmf_firmware_mapping
brcmf_sdio_fwnames[] =3D {
  BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4335_CHIP_ID, 0xFFFFFFFF, 4335),
  BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362),
  BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339),
- BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFF, 43430),
+ BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0x00000001, 43430A0),
+ BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFE, 43430),
  BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFFC0, 43455),
  BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354),
  BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356)

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-05-22 21:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-21 16:20 brcmfmac firmware issue on NanoPi K2 Andreas Färber
2017-05-22 21:39 ` Franky Lin

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).