Commit 72323b14 authored by Ivan T. Ivanov's avatar Ivan T. Ivanov Committed by Florian Fainelli
Browse files

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: default avatarIvan T. Ivanov <iivanov@suse.de>
Signed-off-by: default avatarAndrea della Porta <andrea.porta@suse.com>
Link: https://lore.kernel.org/r/35c0da6a741019efefc3c8e405e210a3a8156830.1756386531.git.andrea.porta@suse.com


Signed-off-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
parent 55ec7b1b
Loading
Loading
Loading
Loading
+42 −0
Original line number Diff line number Diff line
@@ -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";
+18 −0
Original line number Diff line number Diff line
@@ -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>;