[PATCH 09/10] ARM: dts: qcom: msm8974: add the HSIC USB controller
Dmitry Baryshkov <[email protected]>
| Newsgroups | org.kernel.vger.linux-gpio,org.infradead.lists.linux-phy,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-usb |
|---|---|
| Message-ID | <[email protected]> |
The MSM8974 HSIC USB host - a third Chipidea controller with a dedicated HSIC PHY on the special hsic_strobe/hsic_data pads - is not described, leaving boards with HSIC-attached hubs or modems without upstream support. Add the controller and PHY nodes. The PHY is a ULPI bus driver present inside the ulpi subnode. Assisted-by: Claude:claude-fable-5 Signed-off-by: Dmitry Baryshkov <[email protected]> --- arch/arm/boot/dts/qcom/qcom-msm8974.dtsi | 71 ++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi index bac3c8772e0a..72cd369927b2 100644 --- a/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi +++ b/arch/arm/boot/dts/qcom/qcom-msm8974.dtsi @@ -760,6 +760,49 @@ usb3_ss_phy: phy@f92f8830 { status = "disabled"; }; + usb_hsic: usb@f9a00000 { + compatible = "qcom,ci-hdrc"; + reg = <0xf9a00000 0x200>, + <0xf9a00200 0x200>; + interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 148 IRQ_TYPE_EDGE_RISING>; + assigned-clocks = <&gcc GCC_USB_HSIC_SYSTEM_CLK>, + <&gcc GCC_USB_HSIC_CLK>, + <&gcc GCC_USB_HSIC_IO_CAL_CLK>; + assigned-clock-rates = <75000000>, + <480000000>, + <9600000>; + clocks = <&gcc GCC_USB_HSIC_AHB_CLK>, + <&gcc GCC_USB_HSIC_SYSTEM_CLK>; + clock-names = "iface", "core"; + resets = <&gcc GCC_USB_HS_HSIC_BCR>; + reset-names = "core"; + power-domains = <&gcc USB_HS_HSIC_GDSC>; + phys = <&usb_hsic_phy>; + phy-names = "usb-phy"; + phy_type = "ulpi"; + dr_mode = "host"; + ahb-burst-config = <0>; + + status = "disabled"; + + ulpi { + usb_hsic_phy: phy { + compatible = "qcom,usb-hsic-phy-msm8974", + "qcom,usb-hsic-phy"; + clocks = <&gcc GCC_USB_HSIC_CLK>, + <&gcc GCC_USB_HSIC_IO_CAL_CLK>, + <&gcc GCC_USB_HSIC_IO_CAL_SLEEP_CLK>; + clock-names = "phy", "cal", "cal_sleep"; + #phy-cells = <0>; + + pinctrl-names = "init", "default"; + pinctrl-0 = <&hsic_gpio_state>; + pinctrl-1 = <&hsic_state>; + }; + }; + }; + usb: usb@f9a55000 { compatible = "qcom,ci-hdrc"; reg = <0xf9a55000 0x200>, @@ -1677,6 +1720,34 @@ tlmm: pinctrl@fd510000 { #interrupt-cells = <2>; interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>; + hsic_gpio_state: hsic-gpio-state { + data-strobe-pins { + pins = "gpio144", "gpio145"; + function = "gpio"; + drive-strength = <2>; + bias-pull-down; + }; + + ctl-pins { + pins = "hsic_data", "hsic_strobe"; + function = "gpio"; + }; + }; + + hsic_state: hsic-state { + data-strobe-pins { + pins = "gpio144", "gpio145"; + function = "hsic"; + drive-strength = <12>; + bias-disable; + }; + + ctl-pins { + pins = "hsic_data", "hsic_strobe"; + function = "hsic_ctl"; + }; + }; + sdc1_off: sdc1-off-state { clk-pins { pins = "sdc1_clk"; -- 2.47.3