ARM: dt: tegra30: Register AHB/IOMMU device first
Subsystems (2)
PATCH 4/23 ARM: dt: tegra30: Register AHB/IOMMU device first
Move up AHB/IOMMU to register them earlier than others. IOMMU needs AHB, and IOMMU needs to register all platform devices as IOMMU'able. So AHB/IOMMU needs to be instanciated at very beginning.
--- arch/arm/boot/dts/tegra30.dtsi | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-)
arch/arm/boot/dts/tegra30.dtsi +17 -16
@@ -17,6 +17,23 @@ serial4 = &uarte; }; + /* FIXME: ahb/iommu needs to be populated first. */ + ahb: ahb { + compatible = "nvidia,tegra30-ahb"; + reg = <0x6000c004 0x14c>; /* AHB Arbitration + Gizmo Controller */ + }; + + iommu { + compatible = "nvidia,tegra30-smmu"; + reg = <0x7000f010 0x02c + 0x7000f1f0 0x010 + 0x7000f228 0x05c>; + nvidia,#asids = <4>; /* # of ASIDs */ + dma-window = <0 0x40000000>; /* IOVA start & length */ + nvidia,swgroups = <0x00000000 0x000779ff>; + nvidia,ahb = <&ahb>; + }; + host1x { compatible = "nvidia,tegra30-host1x", "simple-bus"; reg = <0x50000000 0x00024000>;
@@ -213,11 +230,6 @@ clocks = <&tegra_car TEGRA30_CLK_APBDMA>; }; - ahb: ahb { - compatible = "nvidia,tegra30-ahb"; - reg = <0x6000c004 0x14c>; /* AHB Arbitration + Gizmo Controller */ - }; - gpio: gpio { compatible = "nvidia,tegra30-gpio"; reg = <0x6000d000 0x1000>;
@@ -469,17 +481,6 @@ interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; }; - iommu { - compatible = "nvidia,tegra30-smmu"; - reg = <0x7000f010 0x02c - 0x7000f1f0 0x010 - 0x7000f228 0x05c>; - nvidia,#asids = <4>; /* # of ASIDs */ - dma-window = <0 0x40000000>; /* IOVA start & length */ - nvidia,swgroups = <0x00000000 0x000779ff>; - nvidia,ahb = <&ahb>; - }; - ahub { compatible = "nvidia,tegra30-ahub"; reg = <0x70080000 0x200
Signature · 1 line
1.8.1.5
PATCH 4/23 ARM: dt: tegra30: Register AHB/IOMMU device first
Quoted 8 lines · Hiroshi Doyu
Move up AHB/IOMMU to register them earlier than others. IOMMU needs AHB, and IOMMU needs to register all platform devices as IOMMU'able. So AHB/IOMMU needs to be instanciated at very beginning.
Signed-off-by Hiroshi Doyu <[email protected]>--- arch/arm/boot/dts/tegra30.dtsi | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-)
This just happens to work because DTC keeps the order from the DTS in the DTB and the Linux implementation sequentially instantiates devices from DT nodes. Neither should be assumed though when writing DTS files. Other implementations (DTC or OS) could do things differently.
But if I understand correctly there is another solution which should solve this issue properly.
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130626/93649077/attachment-0001.sig>
PATCH 4/23 ARM: dt: tegra30: Register AHB/IOMMU device first
Thierry Reding <[email protected]> wrote @ Wed, 26 Jun 2013 12:45:14 +0200:
Quoted 12 lines
* PGP Signed by an unknown key
Quoted 8 lines · Hiroshi Doyu
Move up AHB/IOMMU to register them earlier than others. IOMMU needs AHB, and IOMMU needs to register all platform devices as IOMMU'able. So AHB/IOMMU needs to be instanciated at very beginning.
Signed-off-by Hiroshi Doyu <[email protected]>--- arch/arm/boot/dts/tegra30.dtsi | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-)
Quoted 7 lines
This just happens to work because DTC keeps the order from the DTS in the DTB and the Linux implementation sequentially instantiates devices from DT nodes. Neither should be assumed though when writing DTS files. Other implementations (DTC or OS) could do things differently.
But if I understand correctly there is another solution which should solve this issue properly.
As you've noticed:
https://lists.ozlabs.org/pipermail/devicetree-discuss/2013-June/036746.html