Hi, This is an updated series to the initial OMAP IOMMU DT driver adaptation series [1], that primarily dealt with just the OMAP3 ISP MMU. This series is based on 3.14-rc2, and the patches were developed in collaboration with Florian. I am hoping that the series can make the 3.15 merge window.
This series updates the bindings for IOMMUs for all OMAP2+ SoCs (OMAP3, OMAP4, OMAP5, DRA7), and includes new patches for adding the support to iommus on OMAP4 and OMAP5, and IVA IOMMU on OMAP3. The DT bindings and adaptation is done mainly in patches 3 and 4. The differences between IOMMUs between different OMAP generations is explained in the previous posting [1], and the differentiation is achieved through two optional properties keeping the compatible strings to a minimum. This could also have been achieved through driver match data with a compatible string per sub-system, so do let me know if that should be the preferred approach. All the MMUs other than the OMAP3 ISP leverage omap_device reset functions, performed through platform data ops previously. With the removal of the legacy mode, the same functionality is achieved for DT nodes through pdata quirks until a TI PRCM reset driver is available. The first 7 patches in the series are in drivers/iommu, with all the remaining patches in the arch/arm/mach-omap2 layer. Tony, The last 3 patches are cleanup of the legacy mode, so IOMMU devices cannot be instantiated after these patches. Please let me know if legacy mode on OMAP3 needs to be supported for 3.15, in which case, the last 3 can be dropped for now and I would have to revise the OMAP3 ISP archdata change (Patch 9) to support both legacy and DT boots. At present, I have made the change to support OMAP3 ISP with DT-boot only. Detailed changes in v2: - Cleanup of driver probe/release to use devm_ interfaces (Patch 1) - The DT bindings are split into a separate patch, and updated based on discussion on v1 [1] (Patch 3) - Updated DT adaptation patch with improved error checking, and support for DRA7 compatible IOMMUs in the driver (Patch 4) - Added support for throwing a bus error response back to the processor cores on MMUs associated with IPUs (Patch 5) - Added preliminary support to DT-based IOMMU users (Patch 6) - Added preparatory patches to enable and use the hwmod for IVA MMU on OMAP3 (Patches 8 and 11) - Adapt the OMAP3 ISP archdata to support DT boot (Patch 9). Legacy mode will not work after this patch, and this will be cleaned up anyway once OMAP3ISP is converted to a DT node. - Reset functionality enablement with DT-boots using pdata quirks for OMAP3 IVA, OMAP4 and OMAP5 DSP & IPU MMUs (Patches 10, 13) - Added the basic hwmod data for OMAP5 iommus (Patch 12) - Clean up the iommu hwmod data and remove the legacy file for creating IOMMU devices (Patches 14, 15, 16). - Dropped the "iommu/omap: Do bus_set_iommu() only if probe() succeeds" patch from previous series. - Dropped the OMAP3 ISP MMU DTS patch (posting separately). I have validated the functionality of all the different IOMMUs on OMAP3, OMAP4 and OMAP5. Florian has verified the OMAP3 ISP usage as well. The full branch including the DTS patches is here for reference, https://github.com/sumananna/omap-kernel/commits/iommu/3.14-rc2-dt-support-v2 v1: - Couple of cleanup and initial DT adaptation for OMAP3 ISP. http://marc.info/?l=linux-omap&m=138728485600624&w=2 [1] http://marc.info/?l=linux-omap&m=138782819732435&w=2 Florian Vaussard (8): iommu/omap: omap_iommu_attach() should return ENODEV, not NULL Documentation: dt: add OMAP iommu bindings iommu/omap: add devicetree support iommu/omap: allow enable/disable even without pdata ARM: OMAP3: remove deprecated CONFIG_OMAP_IOMMU_IVA2 ARM: OMAP3: hwmod data: cleanup data for IOMMUs ARM: OMAP4: hwmod data: cleanup data for IOMMUs ARM: OMAP2+: Remove legacy omap-iommu.c Laurent Pinchart (1): iommu/omap: allocate archdata on the fly for DT-based devices Suman Anna (7): iommu/omap: convert to devm_* interfaces iommu/omap: enable bus-error back on supported iommus ARM: OMAP2+: change the ISP device archdata MMU name ARM: OMAP2+: use pdata quirks for iommu reset lines ARM: OMAP3: fix iva mmu programming issues ARM: OMAP5: hwmod data: add mmu data for ipu & dsp ARM: OMAP2+: extend iommu pdata-quirks to OMAP5 .../devicetree/bindings/iommu/ti,omap-iommu.txt | 28 ++++ arch/arm/mach-omap2/Makefile | 3 - arch/arm/mach-omap2/clockdomains3xxx_data.c | 2 +- arch/arm/mach-omap2/devices.c | 2 +- arch/arm/mach-omap2/omap-iommu.c | 74 ---------- arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 58 +------- arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 35 ----- arch/arm/mach-omap2/omap_hwmod_54xx_data.c | 83 +++++++++++ arch/arm/mach-omap2/pdata-quirks.c | 24 ++++ arch/arm/plat-omap/Kconfig | 3 - drivers/iommu/omap-iommu.c | 154 +++++++++++++-------- drivers/iommu/omap-iommu.h | 5 + drivers/iommu/omap-iommu2.c | 3 + 13 files changed, 247 insertions(+), 227 deletions(-) create mode 100644 Documentation/devicetree/bindings/iommu/ti,omap-iommu.txt delete mode 100644 arch/arm/mach-omap2/omap-iommu.c -- 1.8.5.3 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu