]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: broadcom: bcm2712: Add UARTA controller node
authorIvan T. Ivanov <iivanov@suse.de>
Thu, 28 Aug 2025 13:17:14 +0000 (15:17 +0200)
committerFlorian Fainelli <florian.fainelli@broadcom.com>
Thu, 4 Sep 2025 21:05:22 +0000 (14:05 -0700)
On RPi5 device Bluetooth chips is connected to UARTA
port. Add Bluetooth chips and related pin definitions.

With this and firmware already provided by distributions,
at least on openSUSE Tumbleweed, this is sufficient to make
Bluetooth operational on RPi5 \o/.

Signed-off-by: Ivan T. Ivanov <iivanov@suse.de>
Signed-off-by: Andrea della Porta <andrea.porta@suse.com>
Link: https://lore.kernel.org/r/35c0da6a741019efefc3c8e405e210a3a8156830.1756386531.git.andrea.porta@suse.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts
arch/arm64/boot/dts/broadcom/bcm2712.dtsi

index 411b58c1dddfc4f44e22cbbb642e3f80ec54d367..04738bf281ebda5c027766bf43e65c99e92976a5 100644 (file)
 };
 
 &pinctrl {
+       bt_shutdown_default: bt-shutdown-default-state {
+               function = "gpio";
+               pins = "gpio29";
+       };
+
        emmc_sd_default: emmc-sd-default-state {
                pins = "emmc_cmd", "emmc_dat0", "emmc_dat1", "emmc_dat2", "emmc_dat3";
                bias-pull-up;
                };
        };
 
+       uarta_24_default: uarta-24-default-state {
+               rts-pins {
+                       function = "uart0";
+                       pins = "gpio24";
+                       bias-disable;
+               };
+               cts-pins {
+                       function = "uart0";
+                       pins = "gpio25";
+                       bias-pull-up;
+               };
+               txd-pins {
+                       function = "uart0";
+                       pins = "gpio26";
+                       bias-disable;
+               };
+               rxd-pins {
+                       function = "uart0";
+                       pins = "gpio27";
+                       bias-pull-up;
+               };
+       };
+
        wl_on_default: wl-on-default-state {
                function = "gpio";
                pins = "gpio28";
        };
 };
 
+/* uarta communicates with the BT module */
+&uarta {
+       uart-has-rtscts;
+       pinctrl-0 = <&uarta_24_default &bt_shutdown_default>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       bluetooth: bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               max-speed = <3000000>;
+               shutdown-gpios = <&gio 29 GPIO_ACTIVE_HIGH>;
+       };
+};
+
 &hvs {
        clocks = <&firmware_clocks 4>, <&firmware_clocks 16>;
        clock-names = "core", "disp";
index 6068cb75ef5aa0dabbee2a1215954f2f38c0b645..e77a66adc22ae78bd3a0e7e5d6d04c5c0e6c1e13 100644 (file)
                        clock-frequency = <200000000>;
                        clock-output-names = "emmc2-clock";
                };
+
+               clk_sw_baud: clk-sw-baud {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <96000000>;
+                       clock-output-names = "sw-baud";
+               };
        };
 
        cpus: cpus {
                        brcm,gpio-bank-widths = <32 22>;
                };
 
+               uarta: serial@7d50c000 {
+                       compatible = "brcm,bcm7271-uart";
+                       reg = <0x7d50c000 0x20>;
+                       reg-names = "uart";
+                       clocks = <&clk_sw_baud>;
+                       clock-names = "sw_baud";
+                       interrupts = <GIC_SPI 276 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "uart";
+                       status = "disabled";
+               };
+
                pinctrl_aon: pinctrl@7d510700 {
                        compatible = "brcm,bcm2712c0-aon-pinctrl";
                        reg = <0x7d510700 0x20>;