[PATCH 6/7] arm64: dts: broadcom: bcm2712: Add UARTA controller node
Andrea della Porta
andrea.porta at suse.com
Tue Jul 15 11:31:43 PDT 2025
From: "Ivan T. Ivanov" <iivanov at suse.de>
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 at suse.de>
Signed-off-by: Andrea della Porta <andrea.porta at suse.com>
---
This patch is based on linux-next/master
.../dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts | 43 +++++++++++++++++++
arch/arm64/boot/dts/broadcom/bcm2712.dtsi | 11 +++++
2 files changed, 54 insertions(+)
diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts
index 411b58c1dddf..f869554fd8e9 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts
@@ -81,6 +81,11 @@ wl_on_reg: wl-on-reg {
};
&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;
@@ -110,6 +115,29 @@ dat-pins {
};
};
+ 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";
@@ -188,6 +216,21 @@ power: power {
};
};
+/* uarta communicates with the BT module */
+&uarta {
+ uart-has-rtscts;
+ auto-flow-control;
+ 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";
diff --git a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
index 871537366e96..43cc4ee2a363 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
@@ -260,6 +260,17 @@ gio: gpio at 7d508500 {
brcm,gpio-bank-widths = <32 22>;
};
+ uarta: serial at 7d50c000 {
+ compatible = "brcm,bcm7271-uart";
+ reg = <0x7d50c000 0x20>;
+ reg-names = "uart";
+ reg-shift = <2>;
+ reg-io-width = <4>;
+ clock-frequency = <96000000>;
+ interrupts = <GIC_SPI 276 IRQ_TYPE_LEVEL_HIGH>;
+ status = "disabled";
+ };
+
pinctrl_aon: pinctrl at 7d510700 {
compatible = "brcm,bcm2712c0-aon-pinctrl";
reg = <0x7d510700 0x20>;
--
2.35.3
More information about the linux-arm-kernel
mailing list