Re: [PATCH v14 0/6] drm/imx: Introduce i.MX8qm/qxp DPU DRM

From: mripard@xxxxxxxxxx
Date: Tue Aug 22 2023 - 04:06:22 EST


Hi,

On Tue, Aug 22, 2023 at 05:36:14AM +0000, Ying Liu wrote:
> Hi,
>
> > On Friday, January 6, 2023 1:50 PM Ying Liu wrote:
> >
> > Hi,
> >
> >
> > This is the v14 series to introduce i.MX8qm/qxp Display Processing Unit(DPU)
> > DRM support.
> >
> > DPU is comprised of a blit engine for 2D graphics, a display controller
> > and a command sequencer. Outside of DPU, optional prefetch engines can
> > fetch data from memory prior to some DPU fetchunits of blit engine and
> > display controller. The pre-fetchers support linear formats and Vivante
> > GPU tile formats.
> >
> > Reference manual can be found at:
> > https://www.nxp.com/webapp/Download?colCode=IMX8DQXPRM
> >
> >
> > This patch set adds kernel modesetting support for the display controller part.
> > It supports two CRTCs per display controller, several planes, prefetch
> > engines and some properties of CRTC and plane. Currently, the registers of
> > the controller is accessed without command sequencer involved, instead just
> > by
> > using CPU. DRM connectors would be created from the DPU KMS driver.
> >
> >
> > Patch 1 ~ 3 add dt-bindings for DPU and prefetch engines.
> > Patch 4 is a minor improvement of a macro to suppress warning as the KMS
> > driver
> > uses it.
> > Patch 5 introduces the DPU DRM support.
> > Patch 6 updates MAINTAINERS.
> >
> > Welcome comments, thanks.
> >
> > v13->v14:
> > * Rebase the patch series to the latest drm-misc-next branch(v6.1-rc6 based).
> > * Include drm_fbdev_generic.h in dpu_drv.c due to the rebase.
> > * Fix dpu drm driver suspend/resume by properly get drm device through
> > dev_get_drvdata().
> > * Use pm_ptr() macro for dpu core driver PM operations.
> > * Use pm_sleep_ptr() macro for dpu drm driver PM operations.
> > * Use DEFINE_SIMPLE_DEV_PM_OPS() macro to define dpu drm driver PM
> > operations,
> > instead of SIMPLE_DEV_PM_OPS().
> > * Update year of Copyright.
> > * Add SoC series name 'i.MX8'/'IMX8'/'imx8' to dpu driver module decription,
> > Kconfig name, dpu driver names and dpu driver object name.
> >
> > v12->v13:
> > * Drop 'drm->irq_enabled = true;' from patch 5/6 to fix a potential build
> > break reported by 'kernel test robot <lkp@xxxxxxxxx>'. drm->irq_enabled
> > should not be used by imx-dpu drm as it is only used by legacy drivers
> > with userspace modesetting.
> >
> > v11->v12:
> > * Rebase the series upon v6.1-rc1.
> > * Minor update on Kconfigs, struct names and macro names for patch 5/6
> > due to the rebase.
> >
> > v10->v11:
> > * Rebase the series upon v6.0-rc1.
> > * Include drm_blend.h and drm_framebuffer.h in dpu-kms.c and dpu-
> > plane.c
> > to fix build errors due to the rebase.
> > * Fix a checkpatch warning for dpu-crtc.c.
> > * Properly use dev_err_probe() to return it's return value directly where
> > possible.
> >
> > v9->v10:
> > * Rebase the series upon v5.18-rc1.
> > * Make 'checkpatch.pl --strict' happier for patch 5/6.
> > * Add Rob's R-b tag on patch 3/6.
> > * Add Laurentiu's R-b tag on patch 5/6.
> > * Add Laurentiu's A-b tag on patch 6/6.
> >
> > v8->v9:
> > * Use drm_atomic_get_new_plane_state() in dpu_plane_atomic_update()
> > for
> > patch 5/6. (Laurentiu)
> > * Drop getting DPU DT alias ID for patch 5/6, as it is unused.
> > * Reference 'interrupts-extended' schema instead of 'interrupts' for patch
> > 3/6
> > to require an additional DPR interrupt(r_rtram_stall) because the reference
> > manual does mention it, though the driver doesn't get/use it for now.
> > Reference 'interrupt-names' schema to define the two DPR interrupt names
> > -
> > 'dpr_wrap' and 'r_rtram_stall'. Accordingly, patch 5/6 gets the 'dpr_wrap'
> > interrupt by name.
> > * Drop Rob's R-b tag on patch 3/6, as review is needed.
> >
> > v7->v8:
> > * Rebase this series up onto the latest drm-misc-next branch, due to DRM
> > plane
> > helper functions API change(atomic_check and atomic_update) from DRM
> > atomic
> > core. So, dpu_plane_atomic_check() and dpu_plane_atomic_update() are
> > updated
> > accordingly in patch 5/6. Also, rename plane->state variables and relevant
> > DPU plane state variables in those two functions to reflect they are new
> > states, like the patch 'drm: Rename plane->state variables in atomic update
> > and disable' recently landed in drm-misc-next.
> > * Replace drm_gem_fb_prepare_fb() with
> > drm_gem_plane_helper_prepare_fb() in
> > patch 5/6, due to DRM core API change.
> > * Improve DPR burst length for GPU standard tile and 32bpp GPU super tile in
> > patch 5/6 to align with the latest version of internal HW documention.
> >
> > v6->v7:
> > * Fix return value of dpu_get_irqs() if platform_get_irq() fails. (Laurentiu)
> > * Use the function array dpu_irq_handler[] to store individual DPU irq
> > handlers.
> > (Laurentiu)
> > * Call get/put() hooks directly to get/put DPU fetchunits for DPU plane groups.
> > (Laurentiu)
> > * Shorten the names of individual DPU irq handlers by using DPU unit abbrev
> > names to make writing dpu_irq_handler[] easier.
> > * Add Rob's R-b tag back on DPU dt-binding patch as change in v6 was
> > reviewed.
> >
> > v5->v6:
> > * Use graph schema in the DPU dt-binding.
> > * Do not use macros where possible in the DPU DRM driver. (Laurentiu)
> > * Break dpu_plane_atomic_check() into some smaller functions. (Laurentiu)
> > * Address some minor comments from Laurentiu on the DPU DRM driver.
> > * Add dpu_crtc_err() helper marco in the DPU DRM driver to tell dmesg
> > which CRTC generates error.
> > * Drop calling dev_set_drvdata() from dpu_drm_bind/unbind() in the DPU
> > DRM
> > driver as it is done in dpu_drm_probe().
> > * Some trivial tweaks.
> >
> > v4->v5:
> > * Rebase up onto the latest drm-misc-next branch and remove the hook to
> > drm_atomic_helper_legacy_gamma_set() from patch 5/6, because it was
> > dropped
> > by the newly landed commit 'drm: automatic legacy gamma support'.
> > * Remove a redundant blank line from dpu_plane_atomic_update() in patch
> > 5/6.
> >
> > v3->v4:
> > * Improve compatible properties in DPU and prefetch engines' dt bindings
> > by using enum instead of oneOf+const.
> > * Add Rob's R-b tags on dt binding patches(patch 1/6, 2/6 and 3/6).
> > * Add Daniel's A-b tag on patch 4/6.
> >
> > v2->v3:
> > * Fix DPU DRM driver build warnings which are
> > Reported-by: kernel test robot <lkp@xxxxxxxxx>.
> > * Drop DPU DRM driver build dependency on IMX_SCU, as dummy SCU
> > functions have
> > been added in header files by the patch 'firmware: imx: add dummy
> > functions'
> > which has landed in linux-next/master branch.
> > * Add a missing blank line in include/drm/drm_atomic.h.
> >
> > v1->v2:
> > * Test this patch set also with i.MX8qm LVDS displays.
> > * Drop the device tree patches because we'll use new dt binding way to
> > support i.MX8qm/qxp clocks. This depends on a not-yet-landed patch set
> > to do basic conversions for the platforms.
> > * Fix dt binding yamllint warnings.
> > * Require bypass0 and bypass1 clocks for both i.MX8qxp and i.MX8qm in
> > DPU's
> > dt binding documentation.
> > * Use new dt binding way to add clocks in the dt binding examples.
> > * Address several comments from Laurentiu on the DPU DRM patch.
> >
> >
> > Liu Ying (6):
> > dt-bindings: display: imx: Add i.MX8qxp/qm DPU binding
> > dt-bindings: display: imx: Add i.MX8qxp/qm PRG binding
> > dt-bindings: display: imx: Add i.MX8qxp/qm DPR channel binding
> > drm/atomic: Avoid unused-but-set-variable warning on
> > for_each_old_plane_in_state
> > drm/imx: Introduce i.MX8qm/qxp DPU DRM
> > MAINTAINERS: add maintainer for i.MX8qxp DPU DRM driver
> >
> > .../display/imx/fsl,imx8qxp-dprc.yaml | 100 ++
> > .../bindings/display/imx/fsl,imx8qxp-dpu.yaml | 387 ++++++
> > .../bindings/display/imx/fsl,imx8qxp-prg.yaml | 60 +
> > MAINTAINERS | 9 +
> > drivers/gpu/drm/imx/Kconfig | 1 +
> > drivers/gpu/drm/imx/Makefile | 1 +
> > drivers/gpu/drm/imx/dpu/Kconfig | 9 +
> > drivers/gpu/drm/imx/dpu/Makefile | 10 +
> > drivers/gpu/drm/imx/dpu/dpu-constframe.c | 171 +++
> > drivers/gpu/drm/imx/dpu/dpu-core.c | 1044 +++++++++++++++++
> > drivers/gpu/drm/imx/dpu/dpu-crtc.c | 969 +++++++++++++++
> > drivers/gpu/drm/imx/dpu/dpu-crtc.h | 72 ++
> > drivers/gpu/drm/imx/dpu/dpu-disengcfg.c | 117 ++
> > drivers/gpu/drm/imx/dpu/dpu-dprc.c | 715 +++++++++++
> > drivers/gpu/drm/imx/dpu/dpu-dprc.h | 40 +
> > drivers/gpu/drm/imx/dpu/dpu-drv.c | 294 +++++
> > drivers/gpu/drm/imx/dpu/dpu-drv.h | 28 +
> > drivers/gpu/drm/imx/dpu/dpu-extdst.c | 299 +++++
> > drivers/gpu/drm/imx/dpu/dpu-fetchdecode.c | 292 +++++
> > drivers/gpu/drm/imx/dpu/dpu-fetcheco.c | 224 ++++
> > drivers/gpu/drm/imx/dpu/dpu-fetchlayer.c | 152 +++
> > drivers/gpu/drm/imx/dpu/dpu-fetchunit.c | 610 ++++++++++
> > drivers/gpu/drm/imx/dpu/dpu-fetchunit.h | 195 +++
> > drivers/gpu/drm/imx/dpu/dpu-fetchwarp.c | 248 ++++
> > drivers/gpu/drm/imx/dpu/dpu-framegen.c | 395 +++++++
> > drivers/gpu/drm/imx/dpu/dpu-gammacor.c | 223 ++++
> > drivers/gpu/drm/imx/dpu/dpu-hscaler.c | 275 +++++
> > drivers/gpu/drm/imx/dpu/dpu-kms.c | 542 +++++++++
> > drivers/gpu/drm/imx/dpu/dpu-kms.h | 23 +
> > drivers/gpu/drm/imx/dpu/dpu-layerblend.c | 348 ++++++
> > drivers/gpu/drm/imx/dpu/dpu-plane.c | 804 +++++++++++++
> > drivers/gpu/drm/imx/dpu/dpu-plane.h | 59 +
> > drivers/gpu/drm/imx/dpu/dpu-prg.c | 433 +++++++
> > drivers/gpu/drm/imx/dpu/dpu-prg.h | 45 +
> > drivers/gpu/drm/imx/dpu/dpu-prv.h | 231 ++++
> > drivers/gpu/drm/imx/dpu/dpu-tcon.c | 250 ++++
> > drivers/gpu/drm/imx/dpu/dpu-vscaler.c | 308 +++++
> > drivers/gpu/drm/imx/dpu/dpu.h | 385 ++++++
> > include/drm/drm_atomic.h | 5 +-
> > 39 files changed, 10372 insertions(+), 1 deletion(-)
> > create mode 100644
> > Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dprc.yaml
> > create mode 100644
> > Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dpu.yaml
> > create mode 100644
> > Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-prg.yaml
> > create mode 100644 drivers/gpu/drm/imx/dpu/Kconfig
> > create mode 100644 drivers/gpu/drm/imx/dpu/Makefile
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-constframe.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-core.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-crtc.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-crtc.h
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-disengcfg.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-dprc.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-dprc.h
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-drv.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-drv.h
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-extdst.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-fetchdecode.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-fetcheco.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-fetchlayer.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-fetchunit.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-fetchunit.h
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-fetchwarp.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-framegen.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-gammacor.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-hscaler.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-kms.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-kms.h
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-layerblend.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-plane.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-plane.h
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-prg.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-prg.h
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-prv.h
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-tcon.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu-vscaler.c
> > create mode 100644 drivers/gpu/drm/imx/dpu/dpu.h
> >
> > --
> > 2.37.1
>
> This patch series has been submitted for a quite long period of time.
>
> Anything I can do to have it landed ?

I'm not sure why it fell through the cracks, but given that it's more
than 6 monthes old, please rebase and resend it.

Maxime

Attachment: signature.asc
Description: PGP signature