| From a6a86473350c7dcbae61afa1e926941d76ca17ed Mon Sep 17 00:00:00 2001 |
| From: Laurentiu Tudor <laurentiu.tudor@nxp.com> |
| Date: Thu, 20 Sep 2018 13:46:54 +0300 |
| Subject: [PATCH] arm64: dts: ls104x: use a pseudo-bus to constrain usb dma |
| size |
| |
| Wrap the usb controllers in an intermediate simple-bus and use it to |
| constrain the dma address size of these usb controllers to the 40 bits |
| that they generate toward the interconnect. |
| This is required because the SoC uses 48 bits address sizes and this |
| mismatch would lead to smmu context faults because the usb generates |
| 40-bit addresses while the smmu page tables are populated with 48-bit |
| wide addresses. |
| |
| Suggested-by: Robin Murphy <robin.murphy@arm.com> |
| Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com> |
| --- |
| arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi | 82 ++++++++++++++------------ |
| arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi | 76 +++++++++++++----------- |
| 2 files changed, 87 insertions(+), 71 deletions(-) |
| |
| --- a/arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi |
| +++ b/arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi |
| @@ -727,43 +727,51 @@ |
| <&clockgen 4 0>; |
| }; |
| |
| - usb0: usb3@2f00000 { |
| - compatible = "snps,dwc3"; |
| - reg = <0x0 0x2f00000 0x0 0x10000>; |
| - interrupts = <0 60 0x4>; |
| - dr_mode = "host"; |
| - snps,quirk-frame-length-adjustment = <0x20>; |
| - snps,dis_rxdet_inp3_quirk; |
| - usb3-lpm-capable; |
| - snps,dis-u1u2-when-u3-quirk; |
| - snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| - configure-gfladj; |
| - }; |
| + usb_aux_bus: usb_aux_bus { |
| + #address-cells = <2>; |
| + #size-cells = <2>; |
| + compatible = "simple-bus"; |
| + ranges; |
| + dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x00000000>; |
| |
| - usb1: usb3@3000000 { |
| - compatible = "snps,dwc3"; |
| - reg = <0x0 0x3000000 0x0 0x10000>; |
| - interrupts = <0 61 0x4>; |
| - dr_mode = "host"; |
| - snps,quirk-frame-length-adjustment = <0x20>; |
| - snps,dis_rxdet_inp3_quirk; |
| - usb3-lpm-capable; |
| - snps,dis-u1u2-when-u3-quirk; |
| - snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| - configure-gfladj; |
| - }; |
| + usb0: usb3@2f00000 { |
| + compatible = "snps,dwc3"; |
| + reg = <0x0 0x2f00000 0x0 0x10000>; |
| + interrupts = <0 60 0x4>; |
| + dr_mode = "host"; |
| + snps,quirk-frame-length-adjustment = <0x20>; |
| + snps,dis_rxdet_inp3_quirk; |
| + usb3-lpm-capable; |
| + snps,dis-u1u2-when-u3-quirk; |
| + snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| + configure-gfladj; |
| + }; |
| + |
| + usb1: usb3@3000000 { |
| + compatible = "snps,dwc3"; |
| + reg = <0x0 0x3000000 0x0 0x10000>; |
| + interrupts = <0 61 0x4>; |
| + dr_mode = "host"; |
| + snps,quirk-frame-length-adjustment = <0x20>; |
| + snps,dis_rxdet_inp3_quirk; |
| + usb3-lpm-capable; |
| + snps,dis-u1u2-when-u3-quirk; |
| + snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| + configure-gfladj; |
| + }; |
| |
| - usb2: usb3@3100000 { |
| - compatible = "snps,dwc3"; |
| - reg = <0x0 0x3100000 0x0 0x10000>; |
| - interrupts = <0 63 0x4>; |
| - dr_mode = "host"; |
| - snps,quirk-frame-length-adjustment = <0x20>; |
| - snps,dis_rxdet_inp3_quirk; |
| - usb3-lpm-capable; |
| - snps,dis-u1u2-when-u3-quirk; |
| - snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| - configure-gfladj; |
| + usb2: usb3@3100000 { |
| + compatible = "snps,dwc3"; |
| + reg = <0x0 0x3100000 0x0 0x10000>; |
| + interrupts = <0 63 0x4>; |
| + dr_mode = "host"; |
| + snps,quirk-frame-length-adjustment = <0x20>; |
| + snps,dis_rxdet_inp3_quirk; |
| + usb3-lpm-capable; |
| + snps,dis-u1u2-when-u3-quirk; |
| + snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| + configure-gfladj; |
| + }; |
| }; |
| |
| sata: sata@3200000 { |
| --- a/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi |
| +++ b/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi |
| @@ -625,40 +625,48 @@ |
| <&clockgen 4 1>; |
| }; |
| |
| - usb0: usb@2f00000 { |
| - compatible = "snps,dwc3"; |
| - reg = <0x0 0x2f00000 0x0 0x10000>; |
| - interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; |
| - dr_mode = "host"; |
| - snps,quirk-frame-length-adjustment = <0x20>; |
| - snps,dis_rxdet_inp3_quirk; |
| - snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| - usb3-lpm-capable; |
| - snps,dis-u1u2-when-u3-quirk; |
| - }; |
| + usb_aux_bus: usb_aux_bus { |
| + #address-cells = <2>; |
| + #size-cells = <2>; |
| + compatible = "simple-bus"; |
| + ranges; |
| + dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x00000000>; |
| |
| - usb1: usb@3000000 { |
| - compatible = "snps,dwc3"; |
| - reg = <0x0 0x3000000 0x0 0x10000>; |
| - interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; |
| - dr_mode = "host"; |
| - snps,quirk-frame-length-adjustment = <0x20>; |
| - snps,dis_rxdet_inp3_quirk; |
| - snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| - usb3-lpm-capable; |
| - snps,dis-u1u2-when-u3-quirk; |
| - }; |
| + usb0: usb@2f00000 { |
| + compatible = "snps,dwc3"; |
| + reg = <0x0 0x2f00000 0x0 0x10000>; |
| + interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; |
| + dr_mode = "host"; |
| + snps,quirk-frame-length-adjustment = <0x20>; |
| + snps,dis_rxdet_inp3_quirk; |
| + snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| + usb3-lpm-capable; |
| + snps,dis-u1u2-when-u3-quirk; |
| + }; |
| + |
| + usb1: usb@3000000 { |
| + compatible = "snps,dwc3"; |
| + reg = <0x0 0x3000000 0x0 0x10000>; |
| + interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; |
| + dr_mode = "host"; |
| + snps,quirk-frame-length-adjustment = <0x20>; |
| + snps,dis_rxdet_inp3_quirk; |
| + snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| + usb3-lpm-capable; |
| + snps,dis-u1u2-when-u3-quirk; |
| + }; |
| |
| - usb2: usb@3100000 { |
| - compatible = "snps,dwc3"; |
| - reg = <0x0 0x3100000 0x0 0x10000>; |
| - interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; |
| - dr_mode = "host"; |
| - snps,quirk-frame-length-adjustment = <0x20>; |
| - snps,dis_rxdet_inp3_quirk; |
| - snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| - usb3-lpm-capable; |
| - snps,dis-u1u2-when-u3-quirk; |
| + usb2: usb@3100000 { |
| + compatible = "snps,dwc3"; |
| + reg = <0x0 0x3100000 0x0 0x10000>; |
| + interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; |
| + dr_mode = "host"; |
| + snps,quirk-frame-length-adjustment = <0x20>; |
| + snps,dis_rxdet_inp3_quirk; |
| + snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>; |
| + usb3-lpm-capable; |
| + snps,dis-u1u2-when-u3-quirk; |
| + }; |
| }; |
| |
| sata: sata@3200000 { |