From: Laurentiu Palcu <[email protected]>
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 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 | 104 +++
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 | 8 +
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, 4107 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
From: Laurentiu Palcu <[email protected]>
The driver is part of DRM subsystem and is located in drivers/gpu/drm/imx/dcss.
Signed-off-by: Laurentiu Palcu <[email protected]>
---
MAINTAINERS | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/MAINTAINERS b/MAINTAINERS
index dad5a62d21a7..200c5985b41f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12276,6 +12276,14 @@ F: drivers/iio/gyro/fxas21002c_core.c
F: drivers/iio/gyro/fxas21002c_i2c.c
F: drivers/iio/gyro/fxas21002c_spi.c
+NXP i.MX 8MQ DCSS DRIVER
+M: Laurentiu Palcu <[email protected]>
+R: Lucas Stach <[email protected]>
+L: [email protected]
+S: Maintained
+F: Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
+F: drivers/gpu/drm/imx/dcss/
+
NXP SGTL5000 DRIVER
M: Fabio Estevam <[email protected]>
L: [email protected] (moderated for non-subscribers)
--
2.23.0
From: Laurentiu Palcu <[email protected]>
Add bindings for iMX8MQ Display Controller Subsystem.
Signed-off-by: Laurentiu Palcu <[email protected]>
Reviewed-by: Rob Herring <[email protected]>
---
.../bindings/display/imx/nxp,imx8mq-dcss.yaml | 104 ++++++++++++++++++
1 file changed, 104 insertions(+)
create mode 100644 Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
diff --git a/Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml b/Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
new file mode 100644
index 000000000000..68e4635e4874
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
@@ -0,0 +1,104 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright 2019 NXP
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/display/imx/nxp,imx8mq-dcss.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: iMX8MQ Display Controller Subsystem (DCSS)
+
+maintainers:
+ - Laurentiu Palcu <[email protected]>
+
+description:
+
+ The DCSS (display controller sub system) is used to source up to three
+ display buffers, compose them, and drive a display using HDMI 2.0a(with HDCP
+ 2.2) or MIPI-DSI. The DCSS is intended to support up to 4kp60 displays. HDR10
+ image processing capabilities are included to provide a solution capable of
+ driving next generation high dynamic range displays.
+
+properties:
+ compatible:
+ const: nxp,imx8mq-dcss
+
+ reg:
+ items:
+ - description: DCSS base address and size, up to IRQ steer start
+ - description: DCSS BLKCTL base address and size
+
+ interrupts:
+ items:
+ - description: Context loader completion and error interrupt
+ - description: DTG interrupt used to signal context loader trigger time
+ - description: DTG interrupt for Vblank
+
+ interrupt-names:
+ items:
+ - const: ctxld
+ - const: ctxld_kick
+ - const: vblank
+
+ clocks:
+ items:
+ - description: Display APB clock for all peripheral PIO access interfaces
+ - description: Display AXI clock needed by DPR, Scaler, RTRAM_CTRL
+ - description: RTRAM clock
+ - description: Pixel clock, can be driven either by HDMI phy clock or MIPI
+ - description: DTRC clock, needed by video decompressor
+
+ clock-names:
+ items:
+ - const: apb
+ - const: axi
+ - const: rtrm
+ - const: pix
+ - const: dtrc
+
+ assigned-clocks:
+ items:
+ - description: Phandle and clock specifier of IMX8MQ_CLK_DISP_AXI_ROOT
+ - description: Phandle and clock specifier of IMX8MQ_CLK_DISP_RTRM
+ - description: Phandle and clock specifier of either IMX8MQ_VIDEO2_PLL1_REF_SEL or
+ IMX8MQ_VIDEO_PLL1_REF_SEL
+
+ assigned-clock-parents:
+ items:
+ - description: Phandle and clock specifier of IMX8MQ_SYS1_PLL_800M
+ - description: Phandle and clock specifier of IMX8MQ_SYS1_PLL_800M
+ - description: Phandle and clock specifier of IMX8MQ_CLK_27M
+
+ assigned-clock-rates:
+ items:
+ - description: Must be 800 MHz
+ - description: Must be 400 MHz
+
+ port:
+ type: object
+ description:
+ A port node pointing to the input port of a HDMI/DP or MIPI display bridge.
+
+additionalProperties: false
+
+examples:
+ - |
+ dcss: display-controller@32e00000 {
+ compatible = "nxp,imx8mq-dcss";
+ reg = <0x32e00000 0x2d000>, <0x32e2f000 0x1000>;
+ interrupts = <6>, <8>, <9>;
+ interrupt-names = "ctxld", "ctxld_kick", "vblank";
+ interrupt-parent = <&irqsteer>;
+ clocks = <&clk 248>, <&clk 247>, <&clk 249>,
+ <&clk 254>,<&clk 122>;
+ clock-names = "apb", "axi", "rtrm", "pix", "dtrc";
+ assigned-clocks = <&clk 107>, <&clk 109>, <&clk 266>;
+ assigned-clock-parents = <&clk 78>, <&clk 78>, <&clk 3>;
+ assigned-clock-rates = <800000000>,
+ <400000000>;
+ port {
+ dcss_out: endpoint {
+ remote-endpoint = <&hdmi_in>;
+ };
+ };
+ };
+
--
2.23.0
Hi,
On Fri, Jul 24, 2020 at 12:07:34PM +0300, Laurentiu Palcu wrote:
> From: Laurentiu Palcu <[email protected]>
>
> Add bindings for iMX8MQ Display Controller Subsystem.
>
> Signed-off-by: Laurentiu Palcu <[email protected]>
> Reviewed-by: Rob Herring <[email protected]>
> ---
> .../bindings/display/imx/nxp,imx8mq-dcss.yaml | 104 ++++++++++++++++++
> 1 file changed, 104 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
>
> diff --git a/Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml b/Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
> new file mode 100644
> index 000000000000..68e4635e4874
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
> @@ -0,0 +1,104 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +# Copyright 2019 NXP
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/display/imx/nxp,imx8mq-dcss.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: iMX8MQ Display Controller Subsystem (DCSS)
> +
> +maintainers:
> + - Laurentiu Palcu <[email protected]>
> +
> +description:
> +
> + The DCSS (display controller sub system) is used to source up to three
> + display buffers, compose them, and drive a display using HDMI 2.0a(with HDCP
> + 2.2) or MIPI-DSI. The DCSS is intended to support up to 4kp60 displays. HDR10
> + image processing capabilities are included to provide a solution capable of
> + driving next generation high dynamic range displays.
> +
> +properties:
> + compatible:
> + const: nxp,imx8mq-dcss
> +
> + reg:
> + items:
> + - description: DCSS base address and size, up to IRQ steer start
> + - description: DCSS BLKCTL base address and size
> +
> + interrupts:
> + items:
> + - description: Context loader completion and error interrupt
> + - description: DTG interrupt used to signal context loader trigger time
> + - description: DTG interrupt for Vblank
> +
> + interrupt-names:
> + items:
> + - const: ctxld
> + - const: ctxld_kick
> + - const: vblank
> +
> + clocks:
> + items:
> + - description: Display APB clock for all peripheral PIO access interfaces
> + - description: Display AXI clock needed by DPR, Scaler, RTRAM_CTRL
> + - description: RTRAM clock
> + - description: Pixel clock, can be driven either by HDMI phy clock or MIPI
> + - description: DTRC clock, needed by video decompressor
> +
> + clock-names:
> + items:
> + - const: apb
> + - const: axi
> + - const: rtrm
> + - const: pix
> + - const: dtrc
> +
> + assigned-clocks:
> + items:
> + - description: Phandle and clock specifier of IMX8MQ_CLK_DISP_AXI_ROOT
> + - description: Phandle and clock specifier of IMX8MQ_CLK_DISP_RTRM
> + - description: Phandle and clock specifier of either IMX8MQ_VIDEO2_PLL1_REF_SEL or
> + IMX8MQ_VIDEO_PLL1_REF_SEL
> +
> + assigned-clock-parents:
> + items:
> + - description: Phandle and clock specifier of IMX8MQ_SYS1_PLL_800M
> + - description: Phandle and clock specifier of IMX8MQ_SYS1_PLL_800M
> + - description: Phandle and clock specifier of IMX8MQ_CLK_27M
> +
> + assigned-clock-rates:
> + items:
> + - description: Must be 800 MHz
> + - description: Must be 400 MHz
> +
> + port:
> + type: object
> + description:
> + A port node pointing to the input port of a HDMI/DP or MIPI display bridge.
> +
> +additionalProperties: false
> +
> +examples:
> + - |
it would be nice to
#include <dt-bindings/clock/imx8mq-clock.h>
here...
> + dcss: display-controller@32e00000 {
> + compatible = "nxp,imx8mq-dcss";
> + reg = <0x32e00000 0x2d000>, <0x32e2f000 0x1000>;
> + interrupts = <6>, <8>, <9>;
> + interrupt-names = "ctxld", "ctxld_kick", "vblank";
> + interrupt-parent = <&irqsteer>;
> + clocks = <&clk 248>, <&clk 247>, <&clk 249>,
> + <&clk 254>,<&clk 122>;
> + clock-names = "apb", "axi", "rtrm", "pix", "dtrc";
> + assigned-clocks = <&clk 107>, <&clk 109>, <&clk 266>;
> + assigned-clock-parents = <&clk 78>, <&clk 78>, <&clk 3>;
so that clock names like IMX8MQ_CLK_DISP_AXI could be used to make this
even more useful.
Cheers,
-- Guido
> + assigned-clock-rates = <800000000>,
> + <400000000>;
> + port {
> + dcss_out: endpoint {
> + remote-endpoint = <&hdmi_in>;
> + };
> + };
> + };
> +
> --
> 2.23.0
>
Hi,
On Fri, Jul 24, 2020 at 12:07:29PM +0300, Laurentiu Palcu wrote:
> From: Laurentiu Palcu <[email protected]>
>
> 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).
While i could run earlier versions of this series with NWL I'm seeing
only a brief image that then turns black (backlight still on) with this current version and
the board hangs soon after.(for reference using mxsfb works nicely with
the very same DT on next-20200727). If I do a drm.debug=0x3f i can see
that display output stops around:
[ 15.394473] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=22, diff=1, hw=0 hw_last=0
[ 15.397575] device: 'input1': device_add
[ 15.444658] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=23, diff=1, hw=0 hw_last=0
[ 15.465946] PM: Adding info for No Bus:input1
[ 15.494842] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=24, diff=1, hw=0 hw_last=0
[ 15.511694] input: gpio-keys as /devices/platform/gpio-keys/input/input1
[ 15.545025] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=25, diff=1, hw=0 hw_last=0
[ 15.557869] device: 'event1': device_add
[ 15.595209] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=26, diff=1, hw=0 hw_last=0
[ 15.605363] PM: Adding info for No Bus:event1
[ 15.645394] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=27, diff=1, hw=0 hw_last=0
[ 19.427039] imx-dcss 32e00000.display-controller: [drm:vblank_disable_fn] disabling vblank on crtc 0
[ 19.436135] device: 'wakeup6': device_add
[ 19.448202] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=28, diff=0, hw=0 hw_last=0
(and there's no further logging from drm from there on).
Would any the above mentioned patches do anything in that area?
Cheers,
-- Guido
>
> Thanks,
> Laurentiu
>
> 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 | 104 +++
> 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 | 8 +
> 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, 4107 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
>
Hi Guido,
On Wed, Jul 29, 2020 at 03:59:48PM +0200, Guido G?nther wrote:
> Hi,
> On Fri, Jul 24, 2020 at 12:07:29PM +0300, Laurentiu Palcu wrote:
> > From: Laurentiu Palcu <[email protected]>
> >
> > 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).
>
> While i could run earlier versions of this series with NWL I'm seeing
> only a brief image that then turns black (backlight still on) with this current version and
> the board hangs soon after.(for reference using mxsfb works nicely with
> the very same DT on next-20200727). If I do a drm.debug=0x3f i can see
> that display output stops around:
>
> [ 15.394473] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=22, diff=1, hw=0 hw_last=0
> [ 15.397575] device: 'input1': device_add
> [ 15.444658] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=23, diff=1, hw=0 hw_last=0
> [ 15.465946] PM: Adding info for No Bus:input1
> [ 15.494842] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=24, diff=1, hw=0 hw_last=0
> [ 15.511694] input: gpio-keys as /devices/platform/gpio-keys/input/input1
> [ 15.545025] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=25, diff=1, hw=0 hw_last=0
> [ 15.557869] device: 'event1': device_add
> [ 15.595209] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=26, diff=1, hw=0 hw_last=0
> [ 15.605363] PM: Adding info for No Bus:event1
> [ 15.645394] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=27, diff=1, hw=0 hw_last=0
> [ 19.427039] imx-dcss 32e00000.display-controller: [drm:vblank_disable_fn] disabling vblank on crtc 0
> [ 19.436135] device: 'wakeup6': device_add
> [ 19.448202] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=28, diff=0, hw=0 hw_last=0
>
> (and there's no further logging from drm from there on).
>
> Would any the above mentioned patches do anything in that area?
The NWL driver is missing at least one fix that is needed for DCSS to
work nicely with it. One thing that needs fixed is the polarity. I added
a patch for that in our tree... :/
Currently, in NWL upstream, we have
adjusted_mode->flags |= (DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
adjusted_mode->flags &= ~(DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC);
However DCSS works with:
adjusted->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
adjusted->flags |= (DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC);
I CCed Robert. He'll work on upstreaming these NWL changes in the following
period of time.
Thanks,
laurentiu
>
> Cheers,
> -- Guido
>
> >
> > Thanks,
> > Laurentiu
> >
> > 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 | 104 +++
> > 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 | 8 +
> > 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, 4107 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
> >
On Wed, Jul 29, 2020 at 03:27:30PM +0200, Guido G?nther wrote:
> Hi,
> On Fri, Jul 24, 2020 at 12:07:34PM +0300, Laurentiu Palcu wrote:
> > From: Laurentiu Palcu <[email protected]>
> >
> > Add bindings for iMX8MQ Display Controller Subsystem.
> >
> > Signed-off-by: Laurentiu Palcu <[email protected]>
> > Reviewed-by: Rob Herring <[email protected]>
> > ---
> > .../bindings/display/imx/nxp,imx8mq-dcss.yaml | 104 ++++++++++++++++++
> > 1 file changed, 104 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml b/Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
> > new file mode 100644
> > index 000000000000..68e4635e4874
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/display/imx/nxp,imx8mq-dcss.yaml
> > @@ -0,0 +1,104 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +# Copyright 2019 NXP
> > +%YAML 1.2
> > +---
> > +$id: "http://devicetree.org/schemas/display/imx/nxp,imx8mq-dcss.yaml#"
> > +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> > +
> > +title: iMX8MQ Display Controller Subsystem (DCSS)
> > +
> > +maintainers:
> > + - Laurentiu Palcu <[email protected]>
> > +
> > +description:
> > +
> > + The DCSS (display controller sub system) is used to source up to three
> > + display buffers, compose them, and drive a display using HDMI 2.0a(with HDCP
> > + 2.2) or MIPI-DSI. The DCSS is intended to support up to 4kp60 displays. HDR10
> > + image processing capabilities are included to provide a solution capable of
> > + driving next generation high dynamic range displays.
> > +
> > +properties:
> > + compatible:
> > + const: nxp,imx8mq-dcss
> > +
> > + reg:
> > + items:
> > + - description: DCSS base address and size, up to IRQ steer start
> > + - description: DCSS BLKCTL base address and size
> > +
> > + interrupts:
> > + items:
> > + - description: Context loader completion and error interrupt
> > + - description: DTG interrupt used to signal context loader trigger time
> > + - description: DTG interrupt for Vblank
> > +
> > + interrupt-names:
> > + items:
> > + - const: ctxld
> > + - const: ctxld_kick
> > + - const: vblank
> > +
> > + clocks:
> > + items:
> > + - description: Display APB clock for all peripheral PIO access interfaces
> > + - description: Display AXI clock needed by DPR, Scaler, RTRAM_CTRL
> > + - description: RTRAM clock
> > + - description: Pixel clock, can be driven either by HDMI phy clock or MIPI
> > + - description: DTRC clock, needed by video decompressor
> > +
> > + clock-names:
> > + items:
> > + - const: apb
> > + - const: axi
> > + - const: rtrm
> > + - const: pix
> > + - const: dtrc
> > +
> > + assigned-clocks:
> > + items:
> > + - description: Phandle and clock specifier of IMX8MQ_CLK_DISP_AXI_ROOT
> > + - description: Phandle and clock specifier of IMX8MQ_CLK_DISP_RTRM
> > + - description: Phandle and clock specifier of either IMX8MQ_VIDEO2_PLL1_REF_SEL or
> > + IMX8MQ_VIDEO_PLL1_REF_SEL
> > +
> > + assigned-clock-parents:
> > + items:
> > + - description: Phandle and clock specifier of IMX8MQ_SYS1_PLL_800M
> > + - description: Phandle and clock specifier of IMX8MQ_SYS1_PLL_800M
> > + - description: Phandle and clock specifier of IMX8MQ_CLK_27M
> > +
> > + assigned-clock-rates:
> > + items:
> > + - description: Must be 800 MHz
> > + - description: Must be 400 MHz
> > +
> > + port:
> > + type: object
> > + description:
> > + A port node pointing to the input port of a HDMI/DP or MIPI display bridge.
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > + - |
>
> it would be nice to
>
> #include <dt-bindings/clock/imx8mq-clock.h>
>
> here...
>
> > + dcss: display-controller@32e00000 {
> > + compatible = "nxp,imx8mq-dcss";
> > + reg = <0x32e00000 0x2d000>, <0x32e2f000 0x1000>;
> > + interrupts = <6>, <8>, <9>;
> > + interrupt-names = "ctxld", "ctxld_kick", "vblank";
> > + interrupt-parent = <&irqsteer>;
> > + clocks = <&clk 248>, <&clk 247>, <&clk 249>,
> > + <&clk 254>,<&clk 122>;
> > + clock-names = "apb", "axi", "rtrm", "pix", "dtrc";
> > + assigned-clocks = <&clk 107>, <&clk 109>, <&clk 266>;
> > + assigned-clock-parents = <&clk 78>, <&clk 78>, <&clk 3>;
>
> so that clock names like IMX8MQ_CLK_DISP_AXI could be used to make this
> even more useful.
That's a good idea. I'll add it in.
Thanks,
laurentiu
>
> Cheers,
> -- Guido
>
> > + assigned-clock-rates = <800000000>,
> > + <400000000>;
> > + port {
> > + dcss_out: endpoint {
> > + remote-endpoint = <&hdmi_in>;
> > + };
> > + };
> > + };
> > +
> > --
> > 2.23.0
> >
Hi,
On Wed, Jul 29, 2020 at 05:16:47PM +0300, Laurentiu Palcu wrote:
> Hi Guido,
>
> On Wed, Jul 29, 2020 at 03:59:48PM +0200, Guido G?nther wrote:
> > Hi,
> > On Fri, Jul 24, 2020 at 12:07:29PM +0300, Laurentiu Palcu wrote:
> > > From: Laurentiu Palcu <[email protected]>
> > >
> > > 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).
> >
> > While i could run earlier versions of this series with NWL I'm seeing
> > only a brief image that then turns black (backlight still on) with this current version and
> > the board hangs soon after.(for reference using mxsfb works nicely with
> > the very same DT on next-20200727). If I do a drm.debug=0x3f i can see
> > that display output stops around:
> >
> > [ 15.394473] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=22, diff=1, hw=0 hw_last=0
> > [ 15.397575] device: 'input1': device_add
> > [ 15.444658] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=23, diff=1, hw=0 hw_last=0
> > [ 15.465946] PM: Adding info for No Bus:input1
> > [ 15.494842] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=24, diff=1, hw=0 hw_last=0
> > [ 15.511694] input: gpio-keys as /devices/platform/gpio-keys/input/input1
> > [ 15.545025] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=25, diff=1, hw=0 hw_last=0
> > [ 15.557869] device: 'event1': device_add
> > [ 15.595209] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=26, diff=1, hw=0 hw_last=0
> > [ 15.605363] PM: Adding info for No Bus:event1
> > [ 15.645394] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=27, diff=1, hw=0 hw_last=0
> > [ 19.427039] imx-dcss 32e00000.display-controller: [drm:vblank_disable_fn] disabling vblank on crtc 0
> > [ 19.436135] device: 'wakeup6': device_add
> > [ 19.448202] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=28, diff=0, hw=0 hw_last=0
> >
> > (and there's no further logging from drm from there on).
> >
> > Would any the above mentioned patches do anything in that area?
>
> The NWL driver is missing at least one fix that is needed for DCSS to
> work nicely with it. One thing that needs fixed is the polarity. I added
> a patch for that in our tree... :/
>
> Currently, in NWL upstream, we have
>
> adjusted_mode->flags |= (DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
> adjusted_mode->flags &= ~(DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC);
>
> However DCSS works with:
>
> adjusted->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
> adjusted->flags |= (DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC);
Thanks! I remember not getting any output at all with DCSS without what
you suggest above but now i get some output and then a hang so there
seems to be something else off.
Cheers,
-- Guido
>
> I CCed Robert. He'll work on upstreaming these NWL changes in the following
> period of time.
>
> Thanks,
> laurentiu
>
> >
> > Cheers,
> > -- Guido
> >
> > >
> > > Thanks,
> > > Laurentiu
> > >
> > > 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 | 104 +++
> > > 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 | 8 +
> > > 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, 4107 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
> > >
>
Hi Guido,
On Wed, Jul 29, 2020 at 05:09:52PM +0200, Guido G?nther wrote:
> Hi,
> On Wed, Jul 29, 2020 at 05:16:47PM +0300, Laurentiu Palcu wrote:
> > Hi Guido,
> >
> > On Wed, Jul 29, 2020 at 03:59:48PM +0200, Guido G?nther wrote:
> > > Hi,
> > > On Fri, Jul 24, 2020 at 12:07:29PM +0300, Laurentiu Palcu wrote:
> > > > From: Laurentiu Palcu <[email protected]>
> > > >
> > > > 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).
> > >
> > > While i could run earlier versions of this series with NWL I'm seeing
> > > only a brief image that then turns black (backlight still on) with this current version and
> > > the board hangs soon after.(for reference using mxsfb works nicely with
> > > the very same DT on next-20200727). If I do a drm.debug=0x3f i can see
> > > that display output stops around:
> > >
> > > [ 15.394473] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=22, diff=1, hw=0 hw_last=0
> > > [ 15.397575] device: 'input1': device_add
> > > [ 15.444658] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=23, diff=1, hw=0 hw_last=0
> > > [ 15.465946] PM: Adding info for No Bus:input1
> > > [ 15.494842] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=24, diff=1, hw=0 hw_last=0
> > > [ 15.511694] input: gpio-keys as /devices/platform/gpio-keys/input/input1
> > > [ 15.545025] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=25, diff=1, hw=0 hw_last=0
> > > [ 15.557869] device: 'event1': device_add
> > > [ 15.595209] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=26, diff=1, hw=0 hw_last=0
> > > [ 15.605363] PM: Adding info for No Bus:event1
> > > [ 15.645394] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=27, diff=1, hw=0 hw_last=0
> > > [ 19.427039] imx-dcss 32e00000.display-controller: [drm:vblank_disable_fn] disabling vblank on crtc 0
> > > [ 19.436135] device: 'wakeup6': device_add
> > > [ 19.448202] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=28, diff=0, hw=0 hw_last=0
> > >
> > > (and there's no further logging from drm from there on).
> > >
> > > Would any the above mentioned patches do anything in that area?
> >
> > The NWL driver is missing at least one fix that is needed for DCSS to
> > work nicely with it. One thing that needs fixed is the polarity. I added
> > a patch for that in our tree... :/
> >
> > Currently, in NWL upstream, we have
> >
> > adjusted_mode->flags |= (DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
> > adjusted_mode->flags &= ~(DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC);
> >
> > However DCSS works with:
> >
> > adjusted->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
> > adjusted->flags |= (DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC);
>
> Thanks! I remember not getting any output at all with DCSS without what
> you suggest above but now i get some output and then a hang so there
> seems to be something else off.
What's the hang about? Any backtrace?
Thanks,
laurentiu
>
> Cheers,
> -- Guido
>
> >
> > I CCed Robert. He'll work on upstreaming these NWL changes in the following
> > period of time.
> >
> > Thanks,
> > laurentiu
> >
> > >
> > > Cheers,
> > > -- Guido
> > >
> > > >
> > > > Thanks,
> > > > Laurentiu
> > > >
> > > > 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 | 104 +++
> > > > 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 | 8 +
> > > > 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, 4107 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
> > > >
> >
Hi Laurentiu,
On Thu, Jul 30, 2020 at 12:10:55PM +0300, Laurentiu Palcu wrote:
> Hi Guido,
>
> On Wed, Jul 29, 2020 at 05:09:52PM +0200, Guido G?nther wrote:
> > Hi,
> > On Wed, Jul 29, 2020 at 05:16:47PM +0300, Laurentiu Palcu wrote:
> > > Hi Guido,
> > >
> > > On Wed, Jul 29, 2020 at 03:59:48PM +0200, Guido G?nther wrote:
> > > > Hi,
> > > > On Fri, Jul 24, 2020 at 12:07:29PM +0300, Laurentiu Palcu wrote:
> > > > > From: Laurentiu Palcu <[email protected]>
> > > > >
> > > > > 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).
> > > >
> > > > While i could run earlier versions of this series with NWL I'm seeing
> > > > only a brief image that then turns black (backlight still on) with this current version and
> > > > the board hangs soon after.(for reference using mxsfb works nicely with
> > > > the very same DT on next-20200727). If I do a drm.debug=0x3f i can see
> > > > that display output stops around:
> > > >
> > > > [ 15.394473] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=22, diff=1, hw=0 hw_last=0
> > > > [ 15.397575] device: 'input1': device_add
> > > > [ 15.444658] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=23, diff=1, hw=0 hw_last=0
> > > > [ 15.465946] PM: Adding info for No Bus:input1
> > > > [ 15.494842] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=24, diff=1, hw=0 hw_last=0
> > > > [ 15.511694] input: gpio-keys as /devices/platform/gpio-keys/input/input1
> > > > [ 15.545025] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=25, diff=1, hw=0 hw_last=0
> > > > [ 15.557869] device: 'event1': device_add
> > > > [ 15.595209] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=26, diff=1, hw=0 hw_last=0
> > > > [ 15.605363] PM: Adding info for No Bus:event1
> > > > [ 15.645394] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=27, diff=1, hw=0 hw_last=0
> > > > [ 19.427039] imx-dcss 32e00000.display-controller: [drm:vblank_disable_fn] disabling vblank on crtc 0
> > > > [ 19.436135] device: 'wakeup6': device_add
> > > > [ 19.448202] imx-dcss 32e00000.display-controller: [drm:drm_update_vblank_count] updating vblank count on crtc 0: current=28, diff=0, hw=0 hw_last=0
> > > >
> > > > (and there's no further logging from drm from there on).
> > > >
> > > > Would any the above mentioned patches do anything in that area?
> > >
> > > The NWL driver is missing at least one fix that is needed for DCSS to
> > > work nicely with it. One thing that needs fixed is the polarity. I added
> > > a patch for that in our tree... :/
> > >
> > > Currently, in NWL upstream, we have
> > >
> > > adjusted_mode->flags |= (DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
> > > adjusted_mode->flags &= ~(DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC);
> > >
> > > However DCSS works with:
> > >
> > > adjusted->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC);
> > > adjusted->flags |= (DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC);
> >
> > Thanks! I remember not getting any output at all with DCSS without what
> > you suggest above but now i get some output and then a hang so there
> > seems to be something else off.
>
> What's the hang about? Any backtrace?
I'm not near the board atm but there wasn't anything in the logs (even
with 'drm.debug=0x3f debug' turned. It's about the time when the virtual
console would get spawned but i haven't checked more closely yet.
Cheers,
-- Guido
>
> Thanks,
> laurentiu
>
> >
> > Cheers,
> > -- Guido
> >
> > >
> > > I CCed Robert. He'll work on upstreaming these NWL changes in the following
> > > period of time.
> > >
> > > Thanks,
> > > laurentiu
> > >
> > > >
> > > > Cheers,
> > > > -- Guido
> > > >
> > > > >
> > > > > Thanks,
> > > > > Laurentiu
> > > > >
> > > > > 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 | 104 +++
> > > > > 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 | 8 +
> > > > > 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, 4107 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
> > > > >
> > >
>