mbox series

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

Message ID 20230106055056.2883302-1-victor.liu@nxp.com (mailing list archive)
Headers show
Series drm/imx: Introduce i.MX8qm/qxp DPU DRM | expand

Message

Liu Ying Jan. 6, 2023, 5:50 a.m. UTC
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@intel.com>'.  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@intel.com>.
* 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

Comments

Liu Ying Aug. 22, 2023, 5:36 a.m. UTC | #1
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@intel.com>'.  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@intel.com>.
> * 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 ?

Regards,
Liu Ying
Marcel Ziswiler Aug. 22, 2023, 7:19 a.m. UTC | #2
Hi Liu Ying

On Tue, 2023-08-22 at 05:36 +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.

[snip]

> This patch series has been submitted for a quite long period of time.
> 
> Anything I can do to have it landed ?

Well, may it be tested? Are all the missing pieces there now?

Thanks!

> Regards,
> Liu Ying

Cheers

Marcel
Liu Ying Aug. 22, 2023, 7:57 a.m. UTC | #3
On Tuesday, August 22, 2023 3:20 PM Marcel Ziswiler <marcel.ziswiler@toradex.com> wrote:
> 
> Hi Liu Ying

Hi Marcel,

> 
> On Tue, 2023-08-22 at 05:36 +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.
> 
> [snip]
> 
> > This patch series has been submitted for a quite long period of time.
> >
> > Anything I can do to have it landed ?
> 
> Well, may it be tested? Are all the missing pieces there now?

I've tested this series on i.MX8qm MEK and i.MX8qxp MEK with LVDS
panel and LVDS to HDMI.

To test LVDS displays, compatible strings "fsl,imx8qm-lvds-csr" and
"fsl,imx8qxp-mipi-lvds-csr" need to be added in simple-pm-bus.c by
patch [1] and a clock patch [2] is needed if you use relatively new
SCU firmware in bootloader.

Aside from that, I just wrote/changed device tree.
See attached DT files for LVDS panel test. 

[1] https://www.spinics.net/lists/kernel/msg4664520.html
[2] https://pastebin.mozilla.org/LaXEeoY9

Regards,
Liu Ying

> 
> Thanks!
> 
> > Regards,
> > Liu Ying
> 
> Cheers
> 
> Marcel
Maxime Ripard Aug. 22, 2023, 8:06 a.m. UTC | #4
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@intel.com>'.  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@intel.com>.
> > * 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
Liu Ying Aug. 22, 2023, 8:23 a.m. UTC | #5
On Tuesday, August 22, 2023 4:06 PM Maxime <mripard@kernel.org> wrote:
> 
> Hi,

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@intel.com>'.  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@intel.com>.
> > > * 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.

Ok, will do that, though "git am" still runs successfully for this series
against the latest drm-misc-next.

Regards,
Liu Ying

> 
> Maxime