drm/imx: dc: Use prefetch engine
From: | Liu Ying <victor.liu-AT-nxp.com> | |
To: | Philipp Zabel <p.zabel-AT-pengutronix.de>, Maarten Lankhorst <maarten.lankhorst-AT-linux.intel.com>, Maxime Ripard <mripard-AT-kernel.org>, Thomas Zimmermann <tzimmermann-AT-suse.de>, David Airlie <airlied-AT-gmail.com>, Simona Vetter <simona-AT-ffwll.ch>, Rob Herring <robh-AT-kernel.org>, Krzysztof Kozlowski <krzk+dt-AT-kernel.org>, Conor Dooley <conor+dt-AT-kernel.org>, Shawn Guo <shawnguo-AT-kernel.org>, Sascha Hauer <s.hauer-AT-pengutronix.de>, Pengutronix Kernel Team <kernel-AT-pengutronix.de>, Fabio Estevam <festevam-AT-gmail.com>, Dmitry Baryshkov <lumag-AT-kernel.org> | |
Subject: | [PATCH v3 00/14] drm/imx: dc: Use prefetch engine | |
Date: | Mon, 29 Sep 2025 10:41:35 +0800 | |
Message-ID: | <20250929-imx8-dc-prefetch-v3-0-c01d0608add2@nxp.com> | |
Cc: | dri-devel-AT-lists.freedesktop.org, devicetree-AT-vger.kernel.org, imx-AT-lists.linux.dev, linux-arm-kernel-AT-lists.infradead.org, linux-kernel-AT-vger.kernel.org, Liu Ying <victor.liu-AT-nxp.com>, Frank Li <Frank.Li-AT-nxp.com>, Alexander Stein <alexander.stein-AT-ew.tq-group.com> | |
Archive-link: | Article |
Hi, This patch series aims to use prefetch engine in imx8-dc KMS driver. One prefetch engine consists of one DPR Channel(DPRC) and one or two Display Prefetch Resolve Gaskets(PRGs). It prefetches data from DDR, resolves data in tile formats if needed and outputs the result data to FetchUnit(s). When one PRG is used, a prefetch engine supports processing pixel formats with one planar, e.g., RGB formats. When two are used, pixel formats with two planars are supported, e.g., NV12. For now, this patch series only supports prefetch engines with one PRG because it is enough for XRGB8888 which is the only pixel format supported by imx8-dc plane driver. Two PRGs would be supported by future patches. Patch 1 and 2 add dt-bindings for DPRC and PRG. They were reviewed by Rob[1][2]. I slightly modified the patches' commit message to use imperative mood. Patch 3 adds DPRC and PRG dt-binding files to MAINTAINERS. Patch 4 fixes FetchUnit dimensions as related to prefetch engine function. Patch 5 disables CRTC at boot if needed to support prefetch engine better. Patch 6 and 7 add PRG and DPRC drivers. Patch 8 to 13 do preparations before using prefetch engine in imx8-dc KMS driver. Patch 14 uses prefetch engine in imx8-dc KMS driver. [1] https://lore.kernel.org/lkml/20201207165945.GA430214@robh... [2] https://lore.kernel.org/lkml/20201207170206.GA434964@robh... Signed-off-by: Liu Ying <victor.liu@nxp.com> --- Changes in v3: - Call dc_dprc_enable() only when start == true in patch 7. (Frank) - Collect Frank's R-b tags. - Link to v2: https://lore.kernel.org/r/20250923-imx8-dc-prefetch-v2-0-... Changes in v2: - Rebase the patch series onto next-20250922. - Collect Alexander's and Frank's R-b tags. - Manage PRG's and DPRC's clocks with bulk interfaces in patch 6&7. (Frank) - Sort variables in probe function in reverse Christmas tree fashion in patch 7. (Frank) - Link to v1: https://lore.kernel.org/r/20250704-imx8-dc-prefetch-v1-0-... --- Liu Ying (14): dt-bindings: display: imx: Add i.MX8qxp/qm PRG binding dt-bindings: display: imx: Add i.MX8qxp/qm DPR channel binding MAINTAINERS: Add i.MX8qxp prefetch engine DT binding files drm/imx: dc-fu: Fix dimensions drm/imx: dc-crtc: Disable at boot drm/imx: dc: Add PRG support drm/imx: dc: Add DPR channel support drm/imx: dc: Use TCON operation mode drm/imx: dc-ed: Support getting source selection drm/imx: dc-lb: Support getting secondary input selection drm/imx: dc-ed: Drop initial source selection drm/imx: dc-lb: Drop initial primary and secondary input selections drm/imx: dc-fu: Get DPR channel drm/imx: dc: Use prefetch engine .../bindings/display/imx/fsl,imx8qxp-dprc.yaml | 100 +++++ .../bindings/display/imx/fsl,imx8qxp-prg.yaml | 60 +++ MAINTAINERS | 2 + drivers/gpu/drm/imx/dc/Kconfig | 1 + drivers/gpu/drm/imx/dc/Makefile | 6 +- drivers/gpu/drm/imx/dc/dc-crtc.c | 191 ++++++++- drivers/gpu/drm/imx/dc/dc-de.h | 2 + drivers/gpu/drm/imx/dc/dc-dprc.c | 466 +++++++++++++++++++++ drivers/gpu/drm/imx/dc/dc-dprc.h | 35 ++ drivers/gpu/drm/imx/dc/dc-drv.c | 7 + drivers/gpu/drm/imx/dc/dc-drv.h | 5 + drivers/gpu/drm/imx/dc/dc-ed.c | 27 +- drivers/gpu/drm/imx/dc/dc-fl.c | 7 +- drivers/gpu/drm/imx/dc/dc-fu.c | 49 ++- drivers/gpu/drm/imx/dc/dc-fu.h | 11 +- drivers/gpu/drm/imx/dc/dc-fw.c | 7 +- drivers/gpu/drm/imx/dc/dc-kms.h | 7 + drivers/gpu/drm/imx/dc/dc-lb.c | 23 +- drivers/gpu/drm/imx/dc/dc-pe.h | 2 + drivers/gpu/drm/imx/dc/dc-plane.c | 46 +- drivers/gpu/drm/imx/dc/dc-prg.c | 320 ++++++++++++++ drivers/gpu/drm/imx/dc/dc-prg.h | 39 ++ drivers/gpu/drm/imx/dc/dc-tc.c | 114 ++++- 23 files changed, 1497 insertions(+), 30 deletions(-) --- base-commit: bf2602a3cb2381fb1a04bf1c39a290518d2538d1 change-id: 20250703-imx8-dc-prefetch-028e306591c6 Best regards, -- Liu Ying <victor.liu@nxp.com>