RPi-3 brcmfmac errors on boot

Michael Zoran mzoran at crowfest.net
Wed Nov 23 12:16:27 PST 2016


On Wed, 2016-11-23 at 12:00 -0800, Michael Zoran wrote:
> On Wed, 2016-11-23 at 14:35 -0500, Don Zickus wrote:
> > Hi,
> > 
> > I am trying to get bluetooth working on the RPi-3 and realized I
> > needed some
> > out-of-box drivers in Gerd's tree:
> > 
> > https://www.kraxel.org/cgit/linux/log/?h=bcm2837-wifi
> > 
> > Combining his tree with a patch to remove pwr
> > 
> > https://github.com/anholt/linux/commit/a44e87b47148c6ee6b78509f47e6
> > a1
> > 5c0fae890a
> > 
> > I can get the SDIO device detected and the brcmfmac driver to probe
> > it.
> > 
> > However, that results in the following error message:
> > 
> > """
> > brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
> > """
> > 
> > and neither the wifi nor bluetooth device get detected and added to
> > the bus.
> > 
> 
> I see this alot on the downstream tree if the firmware file hasn't
> been
> copied from Raspbian.   So just to ask an obvious question, did you
> copy the firmware file?
> 
> 
BTW, does your tree have the patches from the downstream tree to add
the hardware identifiers so that the firmware can load?

diff -r linux-kernel-
stable/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
linux-rpi-
fresh/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
2758a2759,2760
> 	pr_info("power management disabled\n");
> 	enabled = false;
4753,4755c4755
< 		err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0);
< 		if (err < 0)
< 			brcmf_err("setting AP mode failed %d\n",
err);
---
> 
4758a4759,4763
> 
> 		err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_AP, 0);
> 		if (err < 0)
> 			brcmf_err("setting AP mode failed %d\n",
err);
> 
6739a6745,6746
> 	char ccode[BRCMF_COUNTRY_BUF_SZ];
> 	int rev;
6741a6749,6751
> 	memcpy(ccode, alpha2, sizeof(ccode));
> 	rev = -1;
> 
6744,6745c6754,6756
< 		brcmf_dbg(TRACE, "No country codes configured for
device\n");
< 		return -EINVAL;
---
> 		brcmf_dbg(TRACE, "No country codes configured for
device"
> 				 " - use requested value\n");
> 		goto use_input_value;
6769,6771c6780,6781
< 	memset(ccreq, 0, sizeof(*ccreq));
< 	ccreq->rev = cpu_to_le32(country_codes-
>table[found_index].rev);
< 	memcpy(ccreq->ccode, country_codes->table[found_index].cc,
---
> 	rev = country_codes->table[found_index].rev;
> 	memcpy(ccode, country_codes->table[found_index].cc,
6772a6783,6787
> 
> use_input_value:
> 	memset(ccreq, 0, sizeof(*ccreq));
> 	ccreq->rev = cpu_to_le32(rev);
> 	memcpy(ccreq->ccode, ccode, sizeof(ccode));
diff -r linux-kernel-
stable/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c linux-
rpi-fresh/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
72c72
< static int brcmf_roamoff;
---
> static int brcmf_roamoff = 1;
diff -r linux-kernel-
stable/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c linux-
rpi-fresh/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
606a607
> BRCMF_FW_NVRAM_DEF(43341, "brcmfmac43341-sdio.bin", "brcmfmac43341-
sdio.txt");
623a625
> 	BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43341_CHIP_ID, 0xFFFFFFFF,
43341),
diff -r linux-kernel-
stable/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
linux-rpi-
fresh/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
38a39
> #define BRCM_CC_43341_CHIP_ID		43341



More information about the linux-rpi-kernel mailing list