RPi-3 brcmfmac errors on boot

Don Zickus dzickus at redhat.com
Tue Nov 29 12:04:16 PST 2016


On Mon, Nov 28, 2016 at 01:42:42PM -0800, Michael Zoran wrote:
> On Mon, 2016-11-28 at 11:18 -0500, Don Zickus wrote:
> > 
> > But bluetooth..
> > 
> > I have a custom built hciattach binary to use to download the special
> > bluetooth firmware /lib/firmware/BCM43430A1.hcd
> > 
> > hciattach /dev/ttyAMA0 bcm43xx-3wire 921600 noflow -
> > 
> > However that still times out trying to start the initial download
> > (based on
> > hciattach debug printfs I have).
> > 
> > I am guessing my bluetooth pins are not setup correctly?  Where can I
> > find
> > the correct pull ups I need?
> > 
> 
> You can find the pullups in the downstream device tree source file.  Or
>  at least I think that's what's setting up the pullups. Although if you
> are detecting it, it might be correct.

Hi Michael,

I am not sure it is being detected.  I believe I have to download the binary
blob with hciattach to activate the device, which is what I am failing with.

> 
> I know they made a patch for bluez that might be part of it.  I also
> know the Bluetooth module used in the RPI 3 isn't that great.  It's a
> serial attached module for all that's worth.

Yeah, I have those 5 bluez patches in my hciattach binary but it still isn't
working.  I was hoping to figure out how to determine if the device is
configured correctly.

I tried to mimic some of the device tree stuff from raspbian with a patch
like below:

diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
index 02fde31..975184e 100644
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
@@ -189,6 +189,7 @@
                        gpclk2_gpio43: gpclk2_gpio43 {
                                brcm,pins = <43>;
                                brcm,function = <BCM2835_FSEL_ALT0>;
+                               brcm,pull = <0>;
                        };

                        i2c0_gpio0: i2c0_gpio0 {
@@ -305,6 +306,7 @@
                        uart0_ctsrts_gpio32: uart0_ctsrts_gpio32 {
                                brcm,pins = <32 33>;
                                brcm,function = <BCM2835_FSEL_ALT3>;
+                               brcm,pull = <0 2>;
                        };

                        uart1_gpio14: uart1_gpio14 {
@@ -341,10 +343,10 @@
                        compatible = "brcm,bcm2835-pl011", "arm,pl011",
"arm,primecell";
                        reg = <0x7e201000 0x1000>;
                        interrupts = <2 25>;
-                       clocks = <&clocks BCM2835_CLOCK_UART>,
-                                <&clocks BCM2835_CLOCK_VPU>;
+                       clocks = <&clk_uart0 &clk_apb_p>;
                        clock-names = "uartclk", "apb_pclk";
                        arm,primecell-periphid = <0x00241011>;
+                       status = "disabled";
                };

                i2s: i2s at 7e203000 {
@@ -537,5 +542,22 @@
                        clock-output-names = "otg";
                        clock-frequency = <480000000>;
                };
+
+               clk_uart0: clock at 5 {
+                       compatible = "fixed-clock";
+                       reg = <5>;
+                       #clock-cells = <0>;
+                       clock-output-names = "uart0_pclk";
+                       clock-frequency = <48000000>;
+               };
+
+               clk_apb_p: clock at 6 {
+                       compatible = "fixed-clock";
+                       reg = <6>;
+                       #clock-cells = <0>;
+                       clock-output-names = "apb_pclk";
+                       clock-frequency = <126000000>;
+               };
+
        };

But no luck. :-(

Thoughts?

Cheers,
Don




More information about the linux-rpi-kernel mailing list