Re: [PATCH v11 00/23] MT8183 IOMMU SUPPORT

2019-08-30 Thread Joerg Roedel
On Sat, Aug 24, 2019 at 11:01:45AM +0800, Yong Wu wrote:
> Change notes:
> v11:
>1) Adjust a bit code for mtk quirk in v7s.
>2) Collect ack from will and Matthias of the last patch.

Applied to arm/mediatek, thanks.


Re: [PATCH v11 00/23] MT8183 IOMMU SUPPORT

2019-08-24 Thread Will Deacon
On Sat, Aug 24, 2019 at 11:01:45AM +0800, Yong Wu wrote:
> This patchset mainly adds support for mt8183 IOMMU and SMI.

Thanks for persevering with this, and sorry it took me so long to get
to grips with the io-pgtable changes.

Joerg -- this is good for you to pick up from my side now, but if you run
into any fiddly conflicts with any of my other changes then I'm happy to
resolve them on a separate branch for you to pull.

Just let me know.

Cheers,

Will


[PATCH v11 00/23] MT8183 IOMMU SUPPORT

2019-08-23 Thread Yong Wu
This patchset mainly adds support for mt8183 IOMMU and SMI.

mt8183 has only one M4U like mt8173 and is also MTK IOMMU gen2 which
uses ARM Short-Descriptor translation table format.

The mt8183 M4U-SMI HW diagram is as below:

  EMI
   |
  M4U
   |
   --
   ||
   gals0-rx   gals1-rx
   ||
   ||
   gals0-tx   gals1-tx
   ||
  
   SMI Common
  
   |
  +-+-++-+-+---+---+
  | | || | |   |   |
  | |  gals-rx  gals-rx  |   gals-rx gals-rx gals-rx
  | | || | |   |   |
  | | || | |   |   |
  | |  gals-tx  gals-tx  |   gals-tx gals-tx gals-tx
  | | || | |   |   |
larb0 larb1  IPU0IPU1  larb4  larb5  larb6CCU
disp  vdec   img camvenc   imgcam

All the connections are HW fixed, SW can NOT adjust it.

Compared with mt8173, we add a GALS(Global Async Local Sync) module
between SMI-common and M4U, and additional GALS between larb2/3/5/6
and SMI-common. GALS can help synchronize for the modules in different
clock frequency, it can be seen as a "asynchronous fifo".

GALS can only help transfer the command/data while it doesn't have
the configuring register, thus it has the special "smi" clock and it
doesn't have the "apb" clock. From the diagram above, we add "gals0"
and "gals1" clocks for smi-common and add a "gals" clock for smi-larb.

>From the diagram above, IPU0/IPU1(Image Processor Unit) and CCU(Camera
Control Unit) is connected with smi-common directly, we can take them
as "larb2", "larb3" and "larb7", and their register spaces are
different with the normal larb.

The dtsi was sent at: [1] https://lore.kernel.org/patchwork/patch/1054099/

Change notes:
v11:
   1) Adjust a bit code for mtk quirk in v7s.
   2) Collect ack from will and Matthias of the last patch.

v10: https://lists.linuxfoundation.org/pipermail/iommu/2019-August/038349.html
   1) Keep v7s only dealing with the pa32/pa33. Move the special "4gb mode"
flow into mtk iommu. like v8 did.
   2) Split the "4gb mode" into two patches. one is only for the v7s, the other
is for mtk iommu.
   3) Add a fixup patch(5/23) for 4gb mode, like v8 did.

v9: https://lists.linuxfoundation.org/pipermail/iommu/2019-August/037925.html
   1) rebase on v5.3-rc1.
   2) In v7s, Use oas to implement MTK 4GB mode. It nearly reconstruct the
  patch, so I don't keep the R-b.

v8: https://lists.linuxfoundation.org/pipermail/iommu/2019-June/037095.html
   1) From the 4GB mode:
  a. Move the patch sequency(Move "iommu/mediatek: Fix iova_to_phys PA
  start for 4GB mode" before "iommu/io-pgtable-arm-v7s: Extend MediaTek
  4G Mode").
  b. Remove the patch "Rename enable_4GB to dram_is_4gb" and Use Evan's
  suggestion.
   2) add a "union" for smi gen1/gen2 base.
   3) Clean up the structure "struct mtk_smi_iommu" since it have only one item,
  suggested from Matthias.

v7: https://lists.linuxfoundation.org/pipermail/iommu/2019-June/036552.html
   1) rebase on v5.2-rc1.
   2) Add fixed tags in patch 20.
   3) Remove shutdown patch. I will send it independently if necessary.

v6: https://lists.linuxfoundation.org/pipermail/iommu/2019-February/033685.html
1) rebase on v5.0-rc1.
2) About the register name (VLD_PA_RNG), Keep consistent in the patches.
3) In the 4GB mode, Always add MTK_4GB_quirk.
4) Reword some commit message helped from Evan. like common->smi_ao_base is
   completely different from common->base; STANDARD_AXI_MODE reg is 
completely
   different from CTRL_MISC; commit in the shutdown patch.
5) Add 2 new patches again:
   iommu/mediatek: Rename enable_4GB to dram_is_4gb
   iommu/mediatek: Fix iova_to_phys PA start for 4GB mode

v5: https://lists.linuxfoundation.org/pipermail/iommu/2019-January/032387.html
1) Remove this patch "iommu/mediatek: Constify iommu_ops" from here as it
   was applied for v5.0.
2) Again, add 3 preparing patches. Move two property into the plat_data.
   iommu/mediatek: Move vld_pa_rng into plat_data
   iommu/mediatek: Move reset_axi into plat_data
   iommu/mediatek: Refine protect memory definition
3) Add shutdown callback for mtk_iommu_v1 in patch[19/20].

v4: 
http://lists.infradead.org/pipermail/linux-mediatek/2018-December/016205.html
1) Add 3 preparing patches. Seperate some minor meaningful code into
   a new patch according to Matthias's suggestion.
   memory: mtk-smi: Add gals support 
   iommu/mediatek: Add larb-id remapped support 
   iommu/mediatek: Add bclk can