Re: [PATCH v9 0/5] Add support for iMX8MQ Display Controller Subsystem

From: Guido Günther
Date: Sat Sep 05 2020 - 07:50:04 EST


Hi Laurentiu,
On Fri, Jul 31, 2020 at 10:54:29AM +0200, Guido Günther wrote:
> Hi,
> On Fri, Jul 31, 2020 at 11:18:28AM +0300, Laurentiu Palcu wrote:
> > From: Laurentiu Palcu <laurentiu.palcu@xxxxxxx>
> >
> > Hi,
> >
> > This patchset adds initial DCSS support for iMX8MQ chip. Initial support
> > includes only graphics plane support (no video planes), no HDR10 capabilities,
> > no graphics decompression (only linear, tiled and super-tiled buffers allowed).
> >
> > Support for the rest of the features will be added incrementally, in subsequent
> > patches.
> >
> > The patchset was tested with both HDP driver (in the downstream tree) and the upstream
> > MIPI-DSI driver (with a couple of patches on top, to make it work correctly with DCSS).
> >
> > Thanks,
> > Laurentiu
> >
> > Changes in v9:
> > * Fixed a compilation issue found by Guido in his setup: 'select
> > VIDEOMODE_HELPERS' was missing from Kconfig;
> > * Use imx8mq-clock.h in the bindings file so one can understand what
> > those clock values mean;
> > * no other changes done. Couldn't address the hang Guido reported as
> > it's not happening in my setup. However, in my tree, there are some
> > extra NWL and ADV patches applied on top of upstream ones... Also,
> > removing them and testing only with upstream, even if there's no
> > image out, does not produce a hang... :/
>
> I don't think this should hold up merging.

And i retested your v9 series on next-20200903 on a librem5 devkit and
it works. Looking back I spotted an error in my clock configuration, so

Tested-by: Guido Günther <agx@xxxxxxxxxxx>

Cheers,
-- Guido

> Cheers,
> -- Guido
>
> >
> > Changes in v8:
> > * Removed 'select RESET_CONTROLLER" from Kconfig as Philipp pointed
> > out. SRC is not used in DCSS driver;
> > * Nothing else changed;
> >
> > Changes in v7:
> > * Added a patch to initialize the connector using the drm_bridge_connector
> > API as Sam suggested. Tested it using NWL_DSI and ADV7535 with
> > Guido's patch [1] applied and one fix for ADV [2]. Also, some extra
> > patches for ADV and NWL were needed, from our downstream tree, which
> > will be upstreamed soon by their author;
> > * Rest of the patches are untouched;
> >
> > [1] https://lists.freedesktop.org/archives/dri-devel/2020-July/273025.html
> > [2] https://lists.freedesktop.org/archives/dri-devel/2020-July/273132.html
> >
> > Changes in v6:
> > * Addressed Rob's comment and added "additionalProperties: false" at
> > the end of the bindings' properties. However, this change surfaced
> > an issue with the assigned-clock* properties not being documented in
> > the properties section. Added the descriptions and the bindings patch
> > will need another review;
> > * Added an entry for DCSS driver in the MAINTAINERS file;
> > * Removed the component framework patch altogether;
> >
> > Changes in v5:
> > * Rebased to latest;
> > * Took out component framework support and made it a separate patch so
> > that people can still test with HDP driver, which makes use of it.
> > But the idea is to get rid of it once HDP driver's next versions
> > will remove component framework as well;
> > * Slight improvement to modesetting: avoid cutting off the pixel clock
> > if the new mode and the old one are equal. Also, in this case, is
> > not necessary to wait for DTG to shut off. This would allow to switch
> > from 8b RGB to 12b YUV422, for example, with no interruptions (at least
> > from DCSS point of view);
> > * Do not fire off CTXLD when going to suspend, unless it still has
> > entries that need to be committed to DCSS;
> > * Addressed Rob's comments on bindings;
> >
> > Changes in v4:
> > * Addressed Lucas and Philipp's comments:
> > * Added DRM_KMS_CMA_HELPER dependency in Kconfig;
> > * Removed usage of devm_ functions since I'm already doing all the
> > clean-up in the submodules_deinit();
> > * Moved the drm_crtc_arm_vblank_event() in dcss_crtc_atomic_flush();
> > * Removed en_completion variable from dcss_crtc since this was
> > introduced mainly to avoid vblank timeout warnings which were fixed
> > by arming the vblank event in flush() instead of begin();
> > * Removed clks_on and irq_enabled flags since all the calls to
> > enabling/disabling clocks and interrupts were balanced;
> > * Removed the custom atomic_commit callback and used the DRM core
> > helper and, in the process, got rid of a workqueue that wasn't
> > necessary anymore;
> > * Fixed some minor DT binding issues flagged by Philipp;
> > * Some other minor changes suggested by Lucas;
> > * Removed YUV formats from the supported formats as these cannot work
> > without the HDR10 module CSCs and LUTs. Will add them back when I
> > will add support for video planes;
> >
> > Changes in v3:
> > * rebased to latest linux-next and made it compile as drmP.h was
> > removed;
> > * removed the patch adding the VIDEO2_PLL clock. It's already applied;
> > * removed an unnecessary 50ms sleep in the dcss_dtg_sync_set();
> > * fixed a a spurious hang reported by Lukas Hartmann and encountered
> > by me several times;
> > * mask DPR and DTG interrupts by default, as they may come enabled from
> > U-boot;
> >
> > Changes in v2:
> > * Removed '0x' in node's unit-address both in DT and yaml;
> > * Made the address region size lowercase, to be consistent;
> > * Removed some left-over references to P010;
> > * Added a Kconfig dependency of DRM && ARCH_MXC. This will also silence compilation
> > issues reported by kbuild for other architectures;
> >
> >
> > Laurentiu Palcu (5):
> > drm/imx: compile imx directory by default
> > drm/imx: Add initial support for DCSS on iMX8MQ
> > drm/imx/dcss: use drm_bridge_connector API
> > MAINTAINERS: Add entry for i.MX 8MQ DCSS driver
> > dt-bindings: display: imx: add bindings for DCSS
> >
> > .../bindings/display/imx/nxp,imx8mq-dcss.yaml | 108 +++
> > MAINTAINERS | 8 +
> > drivers/gpu/drm/Makefile | 2 +-
> > drivers/gpu/drm/imx/Kconfig | 2 +
> > drivers/gpu/drm/imx/Makefile | 1 +
> > drivers/gpu/drm/imx/dcss/Kconfig | 9 +
> > drivers/gpu/drm/imx/dcss/Makefile | 6 +
> > drivers/gpu/drm/imx/dcss/dcss-blkctl.c | 70 ++
> > drivers/gpu/drm/imx/dcss/dcss-crtc.c | 219 +++++
> > drivers/gpu/drm/imx/dcss/dcss-ctxld.c | 424 +++++++++
> > drivers/gpu/drm/imx/dcss/dcss-dev.c | 325 +++++++
> > drivers/gpu/drm/imx/dcss/dcss-dev.h | 177 ++++
> > drivers/gpu/drm/imx/dcss/dcss-dpr.c | 562 ++++++++++++
> > drivers/gpu/drm/imx/dcss/dcss-drv.c | 138 +++
> > drivers/gpu/drm/imx/dcss/dcss-dtg.c | 409 +++++++++
> > drivers/gpu/drm/imx/dcss/dcss-kms.c | 198 +++++
> > drivers/gpu/drm/imx/dcss/dcss-kms.h | 44 +
> > drivers/gpu/drm/imx/dcss/dcss-plane.c | 405 +++++++++
> > drivers/gpu/drm/imx/dcss/dcss-scaler.c | 826 ++++++++++++++++++
> > drivers/gpu/drm/imx/dcss/dcss-ss.c | 180 ++++
> > 20 files changed, 4112 insertions(+), 1 deletion(-)
> > create mode 100644 Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
> > create mode 100644 drivers/gpu/drm/imx/dcss/Kconfig
> > create mode 100644 drivers/gpu/drm/imx/dcss/Makefile
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-blkctl.c
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-crtc.c
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-ctxld.c
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-dev.c
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-dev.h
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-dpr.c
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-drv.c
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-dtg.c
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-kms.c
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-kms.h
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-plane.c
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-scaler.c
> > create mode 100644 drivers/gpu/drm/imx/dcss/dcss-ss.c
> >
> > --
> > 2.23.0
> >