]> www.infradead.org Git - users/willy/xarray.git/commitdiff
arm64: dts: mediatek: mt8390-genio-common: Set ssusb2 default dual role mode to host
authorLouis-Alexis Eyraud <louisalexis.eyraud@collabora.com>
Fri, 2 May 2025 13:17:19 +0000 (15:17 +0200)
committerAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Tue, 6 May 2025 08:27:52 +0000 (10:27 +0200)
On the Mediatek Genio 510-EVK and 700-EVK boards, ssusb2 controller is
one but has two ports: one is routed to the M.2 slot, the other is on
the RPi header who does support full OTG.
Since Mediatek Genio 700-EVK USB support was added, dual role mode
property is set to otg for ssusb2. This config prevents the M.2
Wifi/Bluetooth module, present on those boards and exposing Bluetooth
as an USB device to be properly detected at startup as the default role
is device.
To keep the OTG functionality and make the M.2 module be detected at
the same time, add role-switch-default-mode property set to host and
also fix the polarity of GPIO associated to the USB connector, so the
ssusb2 controller role is properly set to host when the other port is
unused.

Fixes: 1afaeca17238 ("arm64: dts: mediatek: mt8390-genio-700: Add USB, TypeC Controller, MUX")
Signed-off-by: Louis-Alexis Eyraud <louisalexis.eyraud@collabora.com>
Link: https://lore.kernel.org/r/20250502-mtk-genio-510-700-fix-bt-detection-v2-1-870aa2145480@collabora.com
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
arch/arm64/boot/dts/mediatek/mt8390-genio-common.dtsi

index 127764c4d6be81767ef534a7cb228989f471b3bd..aa8dd12a84ea9d8e0e879067c45f59563455b077 100644 (file)
 };
 
 &ssusb2 {
+       /*
+        * the ssusb2 controller is one but we got two ports : one is routed
+        * to the M.2 slot, the other is on the RPi header who does support
+        * full OTG.
+        * As the controller is shared between them, the role switch default
+        * mode is set to host to make any peripheral inserted in the M.2
+        * slot (i.e BT/WIFI module) be detected when the other port is
+        * unused.
+        */
        dr_mode = "otg";
        maximum-speed = "high-speed";
+       role-switch-default-mode = "host";
        usb-role-switch;
        vusb33-supply = <&mt6359_vusb_ldo_reg>;
        wakeup-source;
        connector {
                compatible = "gpio-usb-b-connector", "usb-b-connector";
                type = "micro";
-               id-gpios = <&pio 89 GPIO_ACTIVE_HIGH>;
+               id-gpios = <&pio 89 GPIO_ACTIVE_LOW>;
                vbus-supply = <&usb_p2_vbus>;
        };
 };