Re: [PATCH] arm64: dts: mediatek: mt8192-asurada-hayato: Enable Bluetooth

From: Nícolas F. R. A. Prado
Date: Fri Apr 21 2023 - 10:02:19 EST


On Fri, Apr 21, 2023 at 07:03:27PM +0800, Chen-Yu Tsai wrote:
> Hayato's Realtek WiFi/BT module has it's Bluetooth function wired to
> UART1.
>
> Add and enable the relevant device nodes for it.
>
> Signed-off-by: Chen-Yu Tsai <wenst@xxxxxxxxxxxx>
> ---
> .../dts/mediatek/mt8192-asurada-hayato-r1.dts | 80 +++++++++++++++++++
> 1 file changed, 80 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/mediatek/mt8192-asurada-hayato-r1.dts b/arch/arm64/boot/dts/mediatek/mt8192-asurada-hayato-r1.dts
> index 43a823990a92..6a7d7870525b 100644
> --- a/arch/arm64/boot/dts/mediatek/mt8192-asurada-hayato-r1.dts
> +++ b/arch/arm64/boot/dts/mediatek/mt8192-asurada-hayato-r1.dts
> @@ -40,9 +40,89 @@ CROS_STD_MAIN_KEYMAP
> >;
> };
>
> +&pio {
> + bt_pins: bt-pins {
> + bt_kill: pins-bt-kill {

Drop this label and for the other pinconfigs below as they'll never be
referenced.

> + pinmux = <PINMUX_GPIO144__FUNC_GPIO144>; /* BT_KILL_L */

I'd also drop this and the other comments, as they're already documented in the
gpio-line-names property.

> + output-low;
> + };
> +
> + bt_wake: pins-bt-wake {
> + pinmux = <PINMUX_GPIO22__FUNC_GPIO22>; /* bt to wake ap */
> + bias-pull-up;
> + };
> +
> + ap_wake_bt: pins-ap-wake-bt {
> + pinmux = <PINMUX_GPIO168__FUNC_GPIO168>; /* AP_WAKE_BT_H */
> + output-low;
> + };
> + };
> +
> + uart1_pins: uart1-pins {
> + pins-rx {
> + pinmux = <PINMUX_GPIO94__FUNC_URXD1>;
> + input-enable;
> + bias-pull-up;
> + };
> +
> + pins-tx {
> + pinmux = <PINMUX_GPIO95__FUNC_UTXD1>;
> + };
> +
> + pins-cts {
> + pinmux = <PINMUX_GPIO166__FUNC_UCTS1>;
> + input-enable;
> + };
> +
> + pins-rts {
> + pinmux = <PINMUX_GPIO167__FUNC_URTS1>;
> + output-enable;

Looks like the dt-binding doesn't currently support output-enable, but the
driver does, so please just add a patch with

output-enable: true

on mediatek,mt8192-pinctrl.yaml

> + };
> + };
> +
> + uart1_pins_sleep: uart1-pins-sleep {

"-pins" needs to come last in the name otherwise the dt-binding will complain.

> + pins-rx {
> + pinmux = <PINMUX_GPIO94__FUNC_GPIO94>;
> + input-enable;
> + bias-pull-up;
> + };
> + pins-tx {
> + pinmux = <PINMUX_GPIO95__FUNC_UTXD1>;
> + };
> + pins-cts {
> + pinmux = <PINMUX_GPIO166__FUNC_UCTS1>;
> + input-enable;
> + };
> + pins-rts {
> + pinmux = <PINMUX_GPIO167__FUNC_URTS1>;
> + output-enable;
> + };
> + };
> +};
> +
> &touchscreen {
> compatible = "hid-over-i2c";
> post-power-on-delay-ms = <10>;
> hid-descr-addr = <0x0001>;
> vdd-supply = <&pp3300_u>;
> };
> +
> +&uart1 {
> + status = "okay";
> + pinctrl-names = "default", "sleep";
> + pinctrl-0 = <&uart1_pins>;
> + pinctrl-1 = <&uart1_pins_sleep>;
> + /delete-property/ interrupts;
> + interrupts-extended = <&gic GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>,
> + <&pio 94 IRQ_TYPE_EDGE_FALLING>;
> +
> + bluetooth: bluetooth {

I'd also drop this label and only introduce it if/when needed.

Reviewed-by: Nícolas F. R. A. Prado <nfraprado@xxxxxxxxxxxxx>

Thanks,
Nícolas

> + compatible = "realtek,rtl8822cs-bt";
> + pinctrl-names = "default";
> + pinctrl-0 = <&bt_pins>;
> +
> + enable-gpios = <&pio 144 GPIO_ACTIVE_HIGH>;
> + device-wake-gpios = <&pio 168 GPIO_ACTIVE_HIGH>;
> + host-wake-gpios = <&pio 22 GPIO_ACTIVE_LOW>;
> + };
> +};
> --
> 2.40.0.634.g4ca3ef3211-goog
>