From: Alexandre MINETTE <[email protected]> The APQ8064 HS USB controller nodes describe the transceiver clock as "core", but the ChipIdea MSM glue expects "core" to be the controller fabric clock and "fs" to be the transceiver clock.
This mismatch can leave the fabric clock disabled while the controller is accessed. Some boards may tolerate that if the clock is already enabled elsewhere, but it is not a correct description of the hardware. Describe the RPM Daytona fabric clock as "core", the AHB clock as "iface", and the transceiver clock as "fs" for all APQ8064 HS USB controllers. Without this, USB does not probe reliably on Samsung Galaxy S4 because the fabric clock remains disabled. Signed-off-by: Alexandre MINETTE <[email protected]> Acked-by: Konrad Dybcio <[email protected]> Reviewed-by: Dmitry Baryshkov <[email protected]> Reviewed-by: Linus Walleij <[email protected]> --- arch/arm/boot/dts/qcom/qcom-apq8064.dtsi | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi b/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi index 09062b2ad8ba..62ea38b7a652 100644 --- a/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi +++ b/arch/arm/boot/dts/qcom/qcom-apq8064.dtsi @@ -813,8 +813,10 @@ usb1: usb@12500000 { reg = <0x12500000 0x200>, <0x12500200 0x200>; interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&gcc USB_HS1_XCVR_CLK>, <&gcc USB_HS1_H_CLK>; - clock-names = "core", "iface"; + clocks = <&rpmcc RPM_DAYTONA_FABRIC_CLK>, + <&gcc USB_HS1_H_CLK>, + <&gcc USB_HS1_XCVR_CLK>; + clock-names = "core", "iface", "fs"; assigned-clocks = <&gcc USB_HS1_XCVR_CLK>; assigned-clock-rates = <60000000>; resets = <&gcc USB_HS1_RESET>; @@ -844,8 +846,10 @@ usb3: usb@12520000 { reg = <0x12520000 0x200>, <0x12520200 0x200>; interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&gcc USB_HS3_XCVR_CLK>, <&gcc USB_HS3_H_CLK>; - clock-names = "core", "iface"; + clocks = <&rpmcc RPM_DAYTONA_FABRIC_CLK>, + <&gcc USB_HS3_H_CLK>, + <&gcc USB_HS3_XCVR_CLK>; + clock-names = "core", "iface", "fs"; assigned-clocks = <&gcc USB_HS3_XCVR_CLK>; assigned-clock-rates = <60000000>; resets = <&gcc USB_HS3_RESET>; @@ -875,8 +879,10 @@ usb4: usb@12530000 { reg = <0x12530000 0x200>, <0x12530200 0x200>; interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>; - clocks = <&gcc USB_HS4_XCVR_CLK>, <&gcc USB_HS4_H_CLK>; - clock-names = "core", "iface"; + clocks = <&rpmcc RPM_DAYTONA_FABRIC_CLK>, + <&gcc USB_HS4_H_CLK>, + <&gcc USB_HS4_XCVR_CLK>; + clock-names = "core", "iface", "fs"; assigned-clocks = <&gcc USB_HS4_XCVR_CLK>; assigned-clock-rates = <60000000>; resets = <&gcc USB_HS4_RESET>; -- 2.43.0

