Changes in v5:
- Clarified commit description for WDMA binding compatibles addition
explaining why Dimensity 1200 is not compatible with MT8173
- Added missing mediatek,mt8189-dsi compatible in mtk_drm_drv.c
- Added fix in mtk_dsi for failing device_reset_optional() producing
a possible use-after-free issue
Changes in v4:
- WDMA: Delete the .remove() callback from WDMA as not needed anymore
- WDMA: Add comments explaining no bus errors will happen if writing
to INT_ENABLE, INT_STATUS registers while unpowered or unclocked
- Return error in mtk_wdma_wb_atomic_check() error conditions, oops!
- DSC: Fix dsc_pad_num calculation (missing parenthesis...)
- DSI: Change dsc slice check error to dev_dbg instead to avoid spam
- DSI: Correctly cleanup dsi->dsc upon component_add failure
- DSI: Make sure the CKTX_CKL_WC register is correctly programmed in
DSI w/DSC case
Changes in v3:
- Changed mtk_dsi DSC implementation to use a different DSI_PS
setting function for compressed or uncompressed, as the dsc one
is way simpler than the regular one and becomes way shorter
- DSC: Fixed missing PPS 19 register write
- DSI: Anticipated call to devm_pm_runtime_enable() to before
registering the DSI Host interface
- DSI: Anticipated installing IRQ handler before registering the
dsi host interface, which wasn't a problem before, but now it
would be one because the interrupt is being enabled when binding!
- DSI: Fixed some possible calculation overflows that may happen in
MT8189 and MT8196 because of the higher supported resolutions
- WDMA: Use devm variant of pm_runtime_enable()
- Change WDMA interrupt handler to allow signaling WB complete even
if there is no specific vblank callback installed to avoid very
long timeouts (in any case, WB is complete for real even if there
is no vblank_cb, just a bit useless without, but still complete)
- Fixed WDMA register writes as register id was in function signature
for mtk_wdma_ddp_write_dst_addr() but the function itself never
used it in DISP_REG_WDMA_DST_ADDRX() macro
Changes in v2:
- Rebased on next-20260706
This series adds support for:
- Display Stream Compression (DSC) for DSI and DisplayPort for both
legacy (8188/92/95 and others) and for Kompanio Ultra MT8196 SoCs
- Write DMA (WDMA) Engine (for legacy only at this time) as a step
to enable Writeback support (coming later with a restructuring of
the entire mediatek-drm driver)
- Newer MIPI DSI IP revisions, found in MT8189 and MT8196 SoCs
AngeloGioacchino Del Regno (11):
dt-bindings: display: mediatek: dsc: Add MT8196 compatible
drm/mediatek: Implement Display Stream Compression support
dt-bindings: display: mediatek: dsi: Document MT8189 and MT8196
drm/mediatek: mtk_dsi: Cleanup encoder if reset fails during bind
drm/mediatek: mtk_dsi: Enable interrupt at component bind time
drm/mediatek: mtk_dsi: Transfer register offsets to per-SoC const
drm/mediatek: mtk_dsi: Add support for MT8189
drm/mediatek: mtk_dsi: Add support for MT8196
drm/mediatek: mtk_dsi: Enable PM Runtime on probe
dt-bindings: display: mediatek: wdma: Add compatibles for more SoCs
drm/mediatek: Add Write DMA (WDMA) Engine for Writeback support
.../display/mediatek/mediatek,dsc.yaml | 4 +-
.../display/mediatek/mediatek,dsi.yaml | 2 +
.../display/mediatek/mediatek,wdma.yaml | 5 +
drivers/gpu/drm/mediatek/Makefile | 2 +
drivers/gpu/drm/mediatek/mtk_crtc.c | 21 +
drivers/gpu/drm/mediatek/mtk_ddp_comp.c | 64 +-
drivers/gpu/drm/mediatek/mtk_ddp_comp.h | 9 +
drivers/gpu/drm/mediatek/mtk_disp_drv.h | 29 +
drivers/gpu/drm/mediatek/mtk_disp_dsc.c | 455 ++++++++++
drivers/gpu/drm/mediatek/mtk_disp_wdma.c | 628 ++++++++++++++
drivers/gpu/drm/mediatek/mtk_drm_drv.c | 10 +
drivers/gpu/drm/mediatek/mtk_drm_drv.h | 2 +
drivers/gpu/drm/mediatek/mtk_dsi.c | 801 ++++++++++++++----
13 files changed, 1842 insertions(+), 190 deletions(-)
create mode 100644 drivers/gpu/drm/mediatek/mtk_disp_dsc.c
create mode 100644 drivers/gpu/drm/mediatek/mtk_disp_wdma.c
--
2.54.0