arm64: dts: broadcom: bcm2712: Add UARTA controller node

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>
This commit is contained in:
Ivan T. Ivanov 2025-08-28 15:17:14 +02:00 committed by Florian Fainelli
parent 55ec7b1b97
commit 72323b1416
2 changed files with 60 additions and 0 deletions

View File

@ -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,20 @@ power: power {
};
};
/* 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";

View File

@ -38,6 +38,13 @@ clk_emmc2: clk-emmc2 {
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 {
@ -260,6 +267,17 @@ gio: gpio@7d508500 {
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>;