diff options
author | Li Jun <jun.li@nxp.com> | 2020-03-27 13:14:16 +0800 |
---|---|---|
committer | Li Jun <jun.li@nxp.com> | 2020-03-31 17:09:57 +0800 |
commit | 403f0af55d908c3c54426d373dc3f84288c8ad89 (patch) | |
tree | 5f1e37e48bf09c00f9ab7b5b00f39d13c526c109 /arch/arm64/boot/dts/freescale/imx8mp.dtsi | |
parent | 739af17e2a44e3bce08a8606a87b13bbc42d4690 (diff) |
MLK-23412-8 arm64: dtsi: imx8mp: add hsio root clock for usb
Currently hsio root clock is always on, which should be handled
by hsiomix power domain driver but there is problem on doing that,
see commit 5aaceda10ac0 ("MLK-23671-02 arm64: dts: imx8mp: Add the
rpm-always-on flag for hsiomix domain"):
"The hsiomix power domain need to be runtime always-on to maintain USB's
wakeup ability. As this domain need to be boot on by default, no one
will call the power on callback during system boot up, the clock
enable/disable will mismatch, so remove the clocks from this domain.
the necessary clocks will be handled in TF-A."
There is one clock(AXI_DIV) shared between hsiomix and USB, with
rpm-always-on property added, like above commit description, power
domain driver will not do enable/disable and think it's always on, but
it can be disabled by USB driver, afterwards if power domain driver does
hsiomix register access, system will hang because the required clock was
disabled.
Now with above commit and change in TF-A, those clocks are not
controlled by Linux for power domain operations, but user driver(i.e. USB
and PCIE) has to handle it.
Reviewed-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Li Jun <jun.li@nxp.com>
Diffstat (limited to 'arch/arm64/boot/dts/freescale/imx8mp.dtsi')
-rw-r--r-- | arch/arm64/boot/dts/freescale/imx8mp.dtsi | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi index 79d121b77d47..d098c49a94cb 100644 --- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi @@ -1949,9 +1949,10 @@ usb3_0: usb@32f10100 { compatible = "fsl,imx8mp-dwc3"; reg = <0 0x32f10100 0 0x8>; - clocks = <&clk IMX8MP_CLK_HSIO_AXI_DIV>, + clocks = <&clk IMX8MP_CLK_HSIO_ROOT>, + <&clk IMX8MP_CLK_HSIO_AXI_DIV>, <&clk IMX8MP_CLK_USB_ROOT>; - clock-names = "bus", "sleep"; + clock-names = "hsio", "bus", "suspend"; assigned-clocks = <&clk IMX8MP_CLK_HSIO_AXI_SRC>; assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_500M>; assigned-clock-rates = <500000000>; @@ -1992,9 +1993,10 @@ usb3_1: usb@32f10108 { compatible = "fsl,imx8mp-dwc3"; reg = <0 0x32f10108 0 0x8>; - clocks = <&clk IMX8MP_CLK_HSIO_AXI_DIV>, + clocks = <&clk IMX8MP_CLK_HSIO_ROOT>, + <&clk IMX8MP_CLK_HSIO_AXI_DIV>, <&clk IMX8MP_CLK_USB_ROOT>; - clock-names = "bus", "sleep"; + clock-names = "hsio", "bus", "suspend"; assigned-clocks = <&clk IMX8MP_CLK_HSIO_AXI_SRC>; assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_500M>; assigned-clock-rates = <500000000>; |