[PATCH 1/4] arm64: dts: imx8mp: switch usb controller to flattened model
Frank Li
Frank.li at nxp.com
Tue Apr 21 20:45:32 PDT 2026
On Tue, Apr 21, 2026 at 06:55:00PM +0800, Xu Yang wrote:
> Switch to use flattened model for all USB controllers. To enable USB
> controllers with restricted DMA access range to work correctly, add a
> pseudo simple-bus to constrain the dma address.
This should not "pseudo", and bus is physical existed, which limited dma
range since it transparent to SW, which may not mention in spec.
>
> Also reorder USB-related nodes.
this need new patch to just do reorder.
>
> Signed-off-by: Xu Yang <xu.yang_2 at nxp.com>
> ---
> arch/arm64/boot/dts/freescale/imx8mp.dtsi | 161 ++++++++++------------
> 1 file changed, 76 insertions(+), 85 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> index 90d7bb8f5619..8b3aab14ccf1 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
> @@ -2329,6 +2329,82 @@ gpu2d: gpu at 38008000 {
> power-domains = <&pgc_gpu2d>;
> };
>
> + bus at 38100000 {
> + compatible = "simple-bus";
> + #address-cells = <1>;
> + #size-cells = <1>;
> + dma-ranges = <0x40000000 0x40000000 0xc0000000>;
> + ranges;
> +
> + usb3_0: usb_dwc3_0: usb at 38100000 {
> + compatible = "nxp,imx8mp-dwc3";
> + reg = <0x38100000 0x10000>,
> + <0x32f10100 0x8>,
> + <0x381f0000 0x20>;
> + reg-names = "core", "blkctl", "glue";
> + clocks = <&clk IMX8MP_CLK_HSIO_ROOT>,
> + <&clk IMX8MP_CLK_USB_ROOT>,
> + <&clk IMX8MP_CLK_USB_CORE_REF>,
> + <&clk IMX8MP_CLK_USB_SUSP>;
> + clock-names = "hsio", "bus_early", "ref", "suspend";
> + interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "dwc_usb3", "wakeup";
> + power-domains = <&hsio_blk_ctrl IMX8MP_HSIOBLK_PD_USB>;
> + phys = <&usb3_phy0>, <&usb3_phy0>;
> + phy-names = "usb2-phy", "usb3-phy";
> + snps,gfladj-refclk-lpm-sel-quirk;
> + snps,parkmode-disable-ss-quirk;
> + status = "disabled";
> + };
> +
> + usb3_1: usb_dwc3_1: usb at 38200000 {
> + compatible = "nxp,imx8mp-dwc3";
> + reg = <0x38200000 0x10000>,
> + <0x32f10108 0x8>,
> + <0x382f0000 0x20>;
> + reg-names = "core", "blkctl", "glue";
> + clocks = <&clk IMX8MP_CLK_HSIO_ROOT>,
> + <&clk IMX8MP_CLK_USB_ROOT>,
> + <&clk IMX8MP_CLK_USB_CORE_REF>,
> + <&clk IMX8MP_CLK_USB_SUSP>;
> + clock-names = "hsio", "bus_early", "ref", "suspend";
> + interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "dwc_usb3", "wakeup";
> + power-domains = <&hsio_blk_ctrl IMX8MP_HSIOBLK_PD_USB>;
> + phys = <&usb3_phy1>, <&usb3_phy1>;
> + phy-names = "usb2-phy", "usb3-phy";
> + snps,gfladj-refclk-lpm-sel-quirk;
> + snps,parkmode-disable-ss-quirk;
> + status = "disabled";
> + };
> + };
> +
> + usb3_phy0: usb-phy at 381f0040 {
> + compatible = "fsl,imx8mp-usb-phy";
> + reg = <0x381f0040 0x40>;
> + clocks = <&clk IMX8MP_CLK_USB_PHY_ROOT>;
> + clock-names = "phy";
> + assigned-clocks = <&clk IMX8MP_CLK_USB_PHY_REF>;
> + assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
> + power-domains = <&hsio_blk_ctrl IMX8MP_HSIOBLK_PD_USB_PHY1>;
> + #phy-cells = <0>;
> + status = "disabled";
> + };
> +
> + usb3_phy1: usb-phy at 382f0040 {
> + compatible = "fsl,imx8mp-usb-phy";
> + reg = <0x382f0040 0x40>;
> + clocks = <&clk IMX8MP_CLK_USB_PHY_ROOT>;
> + clock-names = "phy";
> + assigned-clocks = <&clk IMX8MP_CLK_USB_PHY_REF>;
> + assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
> + power-domains = <&hsio_blk_ctrl IMX8MP_HSIOBLK_PD_USB_PHY2>;
> + #phy-cells = <0>;
> + status = "disabled";
> + };
> +
> vpu_g1: video-codec at 38300000 {
> compatible = "nxp,imx8mm-vpu-g1";
> reg = <0x38300000 0x10000>;
> @@ -2407,91 +2483,6 @@ ddr-pmu at 3d800000 {
> interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> };
>
> - usb3_phy0: usb-phy at 381f0040 {
> - compatible = "fsl,imx8mp-usb-phy";
> - reg = <0x381f0040 0x40>;
> - clocks = <&clk IMX8MP_CLK_USB_PHY_ROOT>;
> - clock-names = "phy";
> - assigned-clocks = <&clk IMX8MP_CLK_USB_PHY_REF>;
> - assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
> - power-domains = <&hsio_blk_ctrl IMX8MP_HSIOBLK_PD_USB_PHY1>;
> - #phy-cells = <0>;
> - status = "disabled";
> - };
> -
> - usb3_0: usb at 32f10100 {
> - compatible = "fsl,imx8mp-dwc3";
Delete these will broken back compatible. You can delete later or descript
impact judgement in commit message.
Frank
> - reg = <0x32f10100 0x8>,
> - <0x381f0000 0x20>;
> - clocks = <&clk IMX8MP_CLK_HSIO_ROOT>,
> - <&clk IMX8MP_CLK_USB_SUSP>;
> - clock-names = "hsio", "suspend";
> - interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
> - power-domains = <&hsio_blk_ctrl IMX8MP_HSIOBLK_PD_USB>;
> - #address-cells = <1>;
> - #size-cells = <1>;
> - dma-ranges = <0x40000000 0x40000000 0xc0000000>;
> - ranges;
> - status = "disabled";
> -
> - usb_dwc3_0: usb at 38100000 {
> - compatible = "snps,dwc3";
> - reg = <0x38100000 0x10000>;
> - clocks = <&clk IMX8MP_CLK_USB_ROOT>,
> - <&clk IMX8MP_CLK_USB_CORE_REF>,
> - <&clk IMX8MP_CLK_USB_SUSP>;
> - clock-names = "bus_early", "ref", "suspend";
> - interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
> - phys = <&usb3_phy0>, <&usb3_phy0>;
> - phy-names = "usb2-phy", "usb3-phy";
> - snps,gfladj-refclk-lpm-sel-quirk;
> - snps,parkmode-disable-ss-quirk;
> - };
> -
> - };
> -
> - usb3_phy1: usb-phy at 382f0040 {
> - compatible = "fsl,imx8mp-usb-phy";
> - reg = <0x382f0040 0x40>;
> - clocks = <&clk IMX8MP_CLK_USB_PHY_ROOT>;
> - clock-names = "phy";
> - assigned-clocks = <&clk IMX8MP_CLK_USB_PHY_REF>;
> - assigned-clock-parents = <&clk IMX8MP_CLK_24M>;
> - power-domains = <&hsio_blk_ctrl IMX8MP_HSIOBLK_PD_USB_PHY2>;
> - #phy-cells = <0>;
> - status = "disabled";
> - };
> -
> - usb3_1: usb at 32f10108 {
> - compatible = "fsl,imx8mp-dwc3";
> - reg = <0x32f10108 0x8>,
> - <0x382f0000 0x20>;
> - clocks = <&clk IMX8MP_CLK_HSIO_ROOT>,
> - <&clk IMX8MP_CLK_USB_SUSP>;
> - clock-names = "hsio", "suspend";
> - interrupts = <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>;
> - power-domains = <&hsio_blk_ctrl IMX8MP_HSIOBLK_PD_USB>;
> - #address-cells = <1>;
> - #size-cells = <1>;
> - dma-ranges = <0x40000000 0x40000000 0xc0000000>;
> - ranges;
> - status = "disabled";
> -
> - usb_dwc3_1: usb at 38200000 {
> - compatible = "snps,dwc3";
> - reg = <0x38200000 0x10000>;
> - clocks = <&clk IMX8MP_CLK_USB_ROOT>,
> - <&clk IMX8MP_CLK_USB_CORE_REF>,
> - <&clk IMX8MP_CLK_USB_SUSP>;
> - clock-names = "bus_early", "ref", "suspend";
> - interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
> - phys = <&usb3_phy1>, <&usb3_phy1>;
> - phy-names = "usb2-phy", "usb3-phy";
> - snps,gfladj-refclk-lpm-sel-quirk;
> - snps,parkmode-disable-ss-quirk;
> - };
> - };
> -
> dsp: dsp at 3b6e8000 {
> compatible = "fsl,imx8mp-hifi4";
> reg = <0x3b6e8000 0x88000>;
> --
> 2.34.1
>
More information about the linux-arm-kernel
mailing list