Raspberry Pi 3B: Failed to create device link with soc:firmware:gpio

Stefan Wahren wahrenst at gmx.net
Thu Dec 12 05:15:57 PST 2024


Am 12.12.24 um 11:13 schrieb Martin Wetterwald:
> Hello Saravana and Florian,
>
> Back in 2023, you discussed about an issue concerning the Raspberry Pi 4, that
> you fixed in commit 1a5ecc73b2bfeffe036212d4a6bfacee053ab0a1:
> https://lore.kernel.org/lkml/03b70a8a-0591-f28b-a567-9d2f736f17e5@gmail.com/
> https://lore.kernel.org/all/20230302023509.319903-1-saravanak@google.com/
>
> Today, I notice I see the same issue, but it's with the Raspberry Pi 3B (V1.2).
> I'm using the upstream kernel 6.12.3, with the upstream DTB.
>
> You can find my kernel miniconfig (basis being allnoconfig) here:
> https://gist.github.com/mwetterw/299bb1317fccf9e68125cb0f5da7384c
What happens if you replace your custom config with arm64/defconfig?
Does the issue still occurs?
>
> During boot, I see following messages:
>> Bluetooth: HCI UART driver ver 2.3
>> Bluetooth: HCI UART protocol H4 registered
>> Bluetooth: HCI UART protocol Broadcom registered
>> bcm2835-mbox 3f00b880.mailbox: mailbox enabled
>> 3f201000.serial: ttyAMA0 at MMIO 0x3f201000 (irq = 99, base_baud = 0) is a PL011 rev2
>> raspberrypi-firmware soc:firmware: Attached to firmware from 2024-09-13T16:00:14
>> uart-pl011 3f201000.serial: Failed to create device link (0x180) with soc:firmware:gpio
> Here is an extract of the relevant FDT nodes.
> Because my setup involves first the proprietary GPU firmware, then the U-Boot
> bootloader before finally launching the kernel, I used following command in
> order to make sure I see the same FDT as Linux:
>
>> ssh rpi 'cat /sys/firmware/fdt' | fdtdump -
>> firmware {
>>      compatible = "raspberrypi,bcm2835-firmware", "simple-mfd";
>>      mboxes = <0x0000001b>;
>>      phandle = <0x0000001c>;
>>      clocks {
>>          compatible = "raspberrypi,firmware-clocks";
>>          #clock-cells = <0x00000001>;
>>          phandle = <0x00000015>;
>>      };
>>      gpio {
>>          compatible = "raspberrypi,firmware-gpio";
>>          gpio-controller;
>>          #gpio-cells = <0x00000002>;
>>          gpio-line-names = "BT_ON", "WL_ON", "STATUS_LED", "LAN_RUN", "HDMI_HPD_N", "CAM_GPIO0", "CAM_GPIO1", "PWR_LOW_N";
>>          status = "okay";
>>          phandle = <0x0000000a>;
>>      };
>> };
>> serial at 7e201000 {
>>      compatible = "arm,pl011", "arm,primecell";
>>      reg = <0x7e201000 0x00000200>;
>>      interrupts = <0x00000002 0x00000019>;
>>      clocks = <0x00000007 0x00000013 0x00000007 0x00000014>;
>>      clock-names = "uartclk", "apb_pclk";
>>      arm,primecell-periphid = <0x00241011>;
>>      status = "okay";
>>      pinctrl-names = "default";
>>      pinctrl-0 = <0x00000008 0x00000009>;
>>      phandle = <0x00000048>;
>>      bluetooth {
>>          compatible = "brcm,bcm43438-bt";
>>          max-speed = <0x001e8480>;
>>          shutdown-gpios = <0x0000000a 0x00000000 0x00000000>;
>>          phandle = <0x00000049>;
>>      };
>> };
> If I understand correctly, the serial dev bus, together with
> CONFIG_BT_HCI_UART, CONFIG_BT_HCI_UART_BCM, and if associated to the correct
> DTB nodes describing the bluetooth chip, should allow the kernel to handle the
> serial Bluetooth HCI himself, without the userspace needing to launch user
> space tools like hciattach or btattach?
>
> Is the log
>
>> uart-pl011 3f201000.serial: Failed to create device link (0x180) with soc:firmware:gpio
> a hint to the reason why the kernel doesn't automatically handle my Bluetooth
> HCI over serial?
>
> How to solve this log error, and how to let the kernel handle the HCI himself?
> Am I missing kernel configuration flags?
>
> Thanks!
> Martin
>




More information about the linux-arm-kernel mailing list