* [PATCH v2 1/2] arm64: dts: exynos: gs101: add USB & USB-phy nodes
2024-04-29 10:35 [PATCH v2 0/2] enable USB on Pixel 6 (Oriole) André Draszik
@ 2024-04-29 10:35 ` André Draszik
2024-04-29 10:35 ` [PATCH v2 2/2] arm64: dts: exynos: gs101-oriole: enable USB on this board André Draszik
2024-04-29 17:30 ` [PATCH v2 0/2] enable USB on Pixel 6 (Oriole) Krzysztof Kozlowski
2 siblings, 0 replies; 4+ messages in thread
From: André Draszik @ 2024-04-29 10:35 UTC (permalink / raw)
To: Peter Griffin, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Alim Akhtar
Cc: Tudor Ambarus, Will McVicker, Roy Luo, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
André Draszik
Add the USB 3.1 Dual Role Device (DRD) controller and USB-PHY nodes for
Google Tensor GS101.
The USB 3.1 DRD controller has the following features:
* compliant with both USB device 3.1 and USB device 2.0 standards
* compliant with USB host 3.1 and USB host 2.0 standards
* supports USB device 3.1 and USB device 2.0 interfaces
* supports USB host 3.1 and USB host 2.0 interfaces
* full-speed (12 Mbps) and high-speed (480 Mbps) modes with USB device
2.0 interface
* super-speed (5 Gbps) mode with USB device 3.1 Gen1 interface
* super-speed plus (10 Gbps) mode with USB device 3.1 Gen2 interface
* single USB port which can be used for USB 3.1 or USB 2.0
* on-chip USB PHY transceiver
* DWC3 compatible
* supports up to 16 bi-directional endpoints
* compliant with xHCI 1.1 specification
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
v2: fix commit message
---
arch/arm64/boot/dts/exynos/google/gs101.dtsi | 41 ++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/arch/arm64/boot/dts/exynos/google/gs101.dtsi b/arch/arm64/boot/dts/exynos/google/gs101.dtsi
index 9755a0bb70a1..217699477b32 100644
--- a/arch/arm64/boot/dts/exynos/google/gs101.dtsi
+++ b/arch/arm64/boot/dts/exynos/google/gs101.dtsi
@@ -1261,6 +1261,47 @@ cmu_hsi0: clock-controller@11000000 {
"usbdpdbg";
};
+ usbdrd31_phy: phy@11100000 {
+ compatible = "google,gs101-usb31drd-phy";
+ reg = <0x11100000 0x0100>,
+ <0x110f0000 0x0800>,
+ <0x110e0000 0x2800>;
+ reg-names = "phy", "pcs", "pma";
+ clocks = <&cmu_hsi0 CLK_GOUT_HSI0_USB31DRD_ACLK_PHYCTRL>,
+ <&cmu_hsi0 CLK_GOUT_HSI0_USB31DRD_I_USB20_PHY_REFCLK_26>,
+ <&cmu_hsi0 CLK_GOUT_HSI0_UASC_HSI0_CTRL_ACLK>,
+ <&cmu_hsi0 CLK_GOUT_HSI0_UASC_HSI0_CTRL_PCLK>,
+ <&cmu_hsi0 CLK_GOUT_HSI0_USB31DRD_I_USBDPPHY_SCL_APB_PCLK>;
+ clock-names = "phy", "ref", "ctrl_aclk", "ctrl_pclk", "scl_pclk";
+ samsung,pmu-syscon = <&pmu_system_controller>;
+ #phy-cells = <1>;
+ status = "disabled";
+ };
+
+ usbdrd31: usb@11110000 {
+ compatible = "google,gs101-dwusb3";
+ clocks = <&cmu_hsi0 CLK_GOUT_HSI0_USB31DRD_BUS_CLK_EARLY>,
+ <&cmu_hsi0 CLK_GOUT_HSI0_USB31DRD_I_USB31DRD_SUSPEND_CLK_26>,
+ <&cmu_hsi0 CLK_GOUT_HSI0_UASC_HSI0_LINK_ACLK>,
+ <&cmu_hsi0 CLK_GOUT_HSI0_UASC_HSI0_LINK_PCLK>;
+ clock-names = "bus_early", "susp_clk", "link_aclk", "link_pclk";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x0 0x11110000 0x10000>;
+ status = "disabled";
+
+ usbdrd31_dwc3: usb@0 {
+ compatible = "snps,dwc3";
+ clocks = <&cmu_hsi0 CLK_GOUT_HSI0_USB31DRD_I_USB31DRD_REF_CLK_40>;
+ clock-names = "ref";
+ reg = <0x0 0x10000>;
+ interrupts = <GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH 0>;
+ phys = <&usbdrd31_phy 0>, <&usbdrd31_phy 1>;
+ phy-names = "usb2-phy", "usb3-phy";
+ status = "disabled";
+ };
+ };
+
pinctrl_hsi1: pinctrl@11840000 {
compatible = "google,gs101-pinctrl";
reg = <0x11840000 0x00001000>;
--
2.44.0.769.g3c40516874-goog
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH v2 2/2] arm64: dts: exynos: gs101-oriole: enable USB on this board
2024-04-29 10:35 [PATCH v2 0/2] enable USB on Pixel 6 (Oriole) André Draszik
2024-04-29 10:35 ` [PATCH v2 1/2] arm64: dts: exynos: gs101: add USB & USB-phy nodes André Draszik
@ 2024-04-29 10:35 ` André Draszik
2024-04-29 17:30 ` [PATCH v2 0/2] enable USB on Pixel 6 (Oriole) Krzysztof Kozlowski
2 siblings, 0 replies; 4+ messages in thread
From: André Draszik @ 2024-04-29 10:35 UTC (permalink / raw)
To: Peter Griffin, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Alim Akhtar
Cc: Tudor Ambarus, Will McVicker, Roy Luo, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel,
André Draszik
Pixel 6 (Oriole) has a USB-C connector that can act as host or device.
The USB role is detected dynamically using a MAX77759 TCPCI controller,
but since there is no driver for the MAX77759, the role is defaulted to
peripheral, without any endpoints / ports.
This allows Oriole to be configured as a gadget, e.g. using configfs.
As PMIC regulators are not implemented yet, we rely on USB LDOs being
enabled by the bootloader. A placeholder regulator is used for now.
Signed-off-by: André Draszik <andre.draszik@linaro.org>
---
v2: fix commit message
---
arch/arm64/boot/dts/exynos/google/gs101-oriole.dts | 24 ++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/arch/arm64/boot/dts/exynos/google/gs101-oriole.dts b/arch/arm64/boot/dts/exynos/google/gs101-oriole.dts
index 6be15e990b65..03b2a6fdfdc4 100644
--- a/arch/arm64/boot/dts/exynos/google/gs101-oriole.dts
+++ b/arch/arm64/boot/dts/exynos/google/gs101-oriole.dts
@@ -53,6 +53,12 @@ button-power {
wakeup-source;
};
};
+
+ /* TODO: Remove this once PMIC is implemented */
+ reg_placeholder: regulator-0 {
+ compatible = "regulator-fixed";
+ regulator-name = "placeholder_reg";
+ };
};
&ext_24_5m {
@@ -106,6 +112,24 @@ &serial_0 {
status = "okay";
};
+&usbdrd31 {
+ status = "okay";
+ vdd10-supply = <®_placeholder>;
+ vdd33-supply = <®_placeholder>;
+};
+
+&usbdrd31_dwc3 {
+ dr_mode = "otg";
+ usb-role-switch;
+ role-switch-default-mode = "peripheral";
+ maximum-speed = "super-speed-plus";
+ status = "okay";
+};
+
+&usbdrd31_phy {
+ status = "okay";
+};
+
&usi_uart {
samsung,clkreq-on; /* needed for UART mode */
status = "okay";
--
2.44.0.769.g3c40516874-goog
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH v2 0/2] enable USB on Pixel 6 (Oriole)
2024-04-29 10:35 [PATCH v2 0/2] enable USB on Pixel 6 (Oriole) André Draszik
2024-04-29 10:35 ` [PATCH v2 1/2] arm64: dts: exynos: gs101: add USB & USB-phy nodes André Draszik
2024-04-29 10:35 ` [PATCH v2 2/2] arm64: dts: exynos: gs101-oriole: enable USB on this board André Draszik
@ 2024-04-29 17:30 ` Krzysztof Kozlowski
2 siblings, 0 replies; 4+ messages in thread
From: Krzysztof Kozlowski @ 2024-04-29 17:30 UTC (permalink / raw)
To: Peter Griffin, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Alim Akhtar, André Draszik
Cc: Tudor Ambarus, Will McVicker, Roy Luo, kernel-team,
linux-arm-kernel, linux-samsung-soc, devicetree, linux-kernel
On Mon, 29 Apr 2024 11:35:48 +0100, André Draszik wrote:
> These patches enable USB in peripheral mode on Pixel 6.
>
> We can only support peripheral mode at this stage, as the MAX77759 TCPCI
> controller used on Pixel 6 to do the role selection doesn't have a(n
> upstream) Linux driver. Therefore the role is defaulted to peripheral
> without any endpoints / ports.
>
> [...]
Applied, thanks!
[1/2] arm64: dts: exynos: gs101: add USB & USB-phy nodes
https://git.kernel.org/krzk/linux/c/14d15fcbe0f1fac5979a0b01160f3651340e38b4
[2/2] arm64: dts: exynos: gs101-oriole: enable USB on this board
https://git.kernel.org/krzk/linux/c/b93b3140e82a0e48442087c38346eabfb92c63af
Best regards,
--
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 4+ messages in thread