On 6/1/26 10:51 AM, Antony Kurniawan Soemardi via B4 Relay wrote:
> From: Antony Kurniawan Soemardi <[email protected]>
>
> The RPM clock controller manages clocks shared between the application
> processor and the RPM firmware, including fabric and bus clocks required
> by several peripherals.
>
> With the RPM clock controller now available in the device tree, the USB
> controller must explicitly declare its dependency on
> RPM_DAYTONA_FABRIC_CLK. Without this declaration, the clock framework
> would consider it unused and disable it, breaking USB functionality.
>
> This also corrects the previous misuse of USB_HS1_XCVR_CLK as the core
> clock. The XCVR clock is in fact used for PHY/reset handling rather than
> as the main core clock.
>
> A similar issue has been observed on APQ8064, where missing the RPM
> fabric clock dependency leads to broken USB.
>
> Signed-off-by: Antony Kurniawan Soemardi <[email protected]>
> ---
> @@ -507,8 +519,12 @@ 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 = <&gcc USB_HS1_H_CLK>,
> + <&rpmcc RPM_DAYTONA_FABRIC_CLK>,
> + <&gcc USB_HS1_XCVR_CLK>;
> + clock-names = "iface",
> + "core",
> + "fs";
The bindings change you sent changes the expectations - "core" used
to be the first clock. And I would guesstimate that the
DAYTONA_FABRIC clock is not really "core" - does downstream do any
ratesetting on the other two?
Konrad