This patchset tries to add support for the GC620 2D accelerator, which is a quirky thing -- it has quirks on both MMU and DEC.
The DEC quirk is bound to the model number and revision number currently, and only involves writing to some DEC registers at specific situation. The MMU quirk is more weird -- it contains a broken implementation of PTA, which blocks directly writing MTLB address to switch MMU context, but loading page table IDs different to the initial one does not work either. A shared context practice, like what's done for IOMMUv1, has to be used instead. The DT patch isn't ready because the VP (video processing) subsystem on TH1520 does not have proper clock and reset driver yet, and the DT patch included in this patchset uses fake clocks and ignore resets. Tested by both the etnaviv_2d_test program in libdrm tests and xf86-video-thead 2D-accelerated DDX. Icenowy Zheng (7): drm/etnaviv: add HWDB entry for GC620 r5552 c20b drm/etnaviv: add handle for GPUs with only SECURITY_AHB flag drm/etnaviv: setup DEC400EX on GC620 r5552 drm/etnaviv: protect whole iommuv2 ctx alloc func under global mutex drm/etnaviv: prepare for shared_context support for iommuv2 drm/etnaviv: add shared context support for iommuv2 [NOT FOR UPSTREAM] riscv: dts: thead: enable GC620 G2D on TH1520 arch/riscv/boot/dts/thead/th1520.dtsi | 19 +++++++++++++ drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 19 ++++++++++--- drivers/gpu/drm/etnaviv/etnaviv_hwdb.c | 31 ++++++++++++++++++++++ drivers/gpu/drm/etnaviv/etnaviv_iommu.c | 8 +++--- drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c | 26 +++++++++++++----- drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 1 + drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 24 +++++++---------- 7 files changed, 99 insertions(+), 29 deletions(-) -- 2.51.0