[PATCH v6 00/14] Add some DRM bridge drivers support for i.MX8qm/qxp SoCs

Liu Ying victor.liu at nxp.com
Tue Mar 23 09:07:36 UTC 2021


Hi Marcel,

On Tue, 2021-03-23 at 00:19 +0000, Marcel Ziswiler wrote:
> Hi Liu
> 
> I gave this a try however I believe I am still missing some piece as it throws the following during compilation
> of the device tree:

Thanks for trying.

> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_irqsteer"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_dpu_lpcg"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_dpu_lpcg"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_disp_lpcg"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_disp_lpcg"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_dpr1_channel1"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_dpr1_channel2"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_dpr1_channel3"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_dpr2_channel1"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_dpr2_channel2"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:333.18-439.7: ERROR (phandle_references): /dpu at 56180000: Reference
> to non-existent node or label "dc0_dpr2_channel3"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:501.38-591.3: ERROR (phandle_references): /syscon at 56221000:
> Reference to non-existent node or label "mipi_lvds_0_di_mipi_lvds_regs_lpcg"
> 
> arch/arm64/boot/dts/freescale/imx8qxp.dtsi:603.29-656.7: ERROR (phandle_references): /pixel-combiner at 56020000:
> Reference to non-existent node or label "dc0_pixel_combiner_lpcg"
> 
> For now I just put all the examples from the various Documentation/devicetree/bindings/*/imx8qxp-*.yaml files
> directly into arch/arm64/boot/dts/freescale/imx8qxp.dtsi. Maybe you do have the various device tree parts
> available somewhere as well?

It's not enough to just put all the examples from those dt schemas
into imx8qxp.dtsi.  That way, you'll meet the 'make dtbs' build break
for sure like the above log, because of missing dependencies.

> 
> Any suggestions? Do you by any chance have a git tree available anywhere which includes all dependencies and
> everything which one could try?

AFAIK, we don't have any public git repo to share all my work here.

So, I attach a patch set(WIP) in this email to support the in-tree
'koe,tx26d202vm0bwa' dual-link lvds panels on i.MX8qm/qxp MEK boards.
The patch set doesn't support the downstream LVDS to HDMI bridge(a
single chip connects with the MEK boards with MiniSAS connectors)
mentioned in the cover letter.

The patch set is appliable to the latest drm-misc-next branch.

Patch 1 ~ 16 are picked from shawn's for-next git branch.

Others contain the series of DPU KMS support, the series of i.MX8qxp
LVDS PHY support and this series, plus i.MX8qm LVDS PHY, i.MX8qm/qxp
MSI bus, some i.MX8qm power domains/clocks support and some DT support
for the display pipes.

The last patch builds in all necessary drivers to support the LVDS
displays. However, the patch set supports building them as modules,
ofc.

Moreover, if you see logs on i.MX8qxp like below, that's caused by
adding DC1 clocks(only valid for i.MX8qm, as i.MX8qm has dual DC
subsystems, while i.MX8qxp has one) in clk-imx8qxp.c and i.MX8qm/qxp
specific clocks are not split yet.

[    3.974330] dc1_disp0_clk: failed to get clock parent -22

Regards,
Liu Ying

> 
> Thanks!
> 
> Cheers
> 
> Marcel
> 
> On Wed, 2021-03-17 at 11:42 +0800, Liu Ying wrote:
> > Hi,
> > 
> > This is the v6 series to add some DRM bridge drivers support
> > for i.MX8qm/qxp SoCs.
> > 
> > The bridges may chain one by one to form display pipes to support
> > LVDS displays.  The relevant display controller is DPU embedded in
> > i.MX8qm/qxp SoCs.
> > 
> > The DPU KMS driver can be found at:
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.spinics.net%2Flists%2Farm-kernel%2Fmsg878542.html&data=04%7C01%7Cvictor.liu%40nxp.com%7C757d554c08d24e80ae8a08d8ed915fb0%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637520555926078617%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=MZkLWE%2FaNQQygHma9DefnvcQfJvvQotEv0ehps6f3bA%3D&reserved=0
> > 
> > This series supports the following display pipes:
> > 1) i.MX8qxp:
> > prefetch eng -> DPU -> pixel combiner -> pixel link ->
> > pixel link to DPI(PXL2DPI) -> LVDS display bridge(LDB)
> > 
> > 2) i.MX8qm:
> > prefetch eng -> DPU -> pixel combiner -> pixel link -> LVDS display bridge(LDB)
> > 
> > 
> > This series dropped the patch 'phy: Add LVDS configuration options', as
> > suggested by Robert Foss, because it has already been sent with the following
> > series to add Mixel combo PHY found in i.MX8qxp:
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.spinics.net%2Flists%2Farm-kernel%2Fmsg879957.html&data=04%7C01%7Cvictor.liu%40nxp.com%7C757d554c08d24e80ae8a08d8ed915fb0%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637520555926078617%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=vxnmLN%2FsjX4PS62n3Kfxn6fTBu4m3A35ibYWg6XcsYI%3D&reserved=0
> > 
> > So, this version depends on that series.
> > 
> > 
> > Patch 1/14 and 2/14 add bus formats used by pixel combiner.
> > 
> > Patch 7/14 adds dt-binding for Control and Status Registers module(a syscon
> > used by PXL2DPI and LDB), which references the PXL2DPI and LDB schemas.
> > 
> > Patch 10/14 adds a helper for LDB bridge drivers.
> > 
> > Patch 3/14 ~ 6/14, 8/14, 9/14 and 11/14 ~ 13/14 add drm bridge drivers and
> > dt-bindings support for the bridges.
> > 
> > Patch 14/14 updates MAINTAINERS.
> > 
> > 
> > I've tested this series with a koe,tx26d202vm0bwa dual link LVDS panel and
> > a LVDS to HDMI bridge(with a downstream drm bridge driver).
> > 
> > 
> > Welcome comments, thanks.
> > 
> > v5->v6:
> > * Fix data organizations in documentation(patch 2/14) for
> >   MEDIA_BUS_FMT_RGB{666,888}_1X30-CPADLO. (Laurent)
> > * Add Laurent's R-b tags on patch 1/14 and 2/14.
> > * Drop 'select' schema from the CSR dt-binding documentation(patch 7/14). (Rob)
> > * Add Rob's R-b tag on patch 8/14.
> > 
> > v4->v5:
> > * Drop the patch 'phy: Add LVDS configuration options'. (Robert)
> > * Add Robert's R-b tags on patch 1/14, 2/14, 4/14 and 6/14.
> > * Drop the 'PC_BUF_PARA_REG' register definition from the pixel combiner bridge
> >   driver(patch 4/14). (Robert)
> > * Make a comment occupy a line in the pixel link bridge driver(patch 6/14).
> >   (Robert)
> > * Introduce a new patch(patch 7/14) to add dt-binding for Control and Status
> >   Registers module. (Rob)
> > * Make imx-ldb-helper be a pure object to be linked with i.MX8qxp LDB bridge
> >   driver and i.MX8qm LDB bridge driver, instead of a module.  Correspondingly,
> >   rename 'imx8{qm, qxp}-ldb.c' to 'imx8{qm, qxp}-ldb-drv.c'. (Robert)
> > * Move 'imx_ldb_helper.h' to 'drivers/gpu/drm/bridge/imx/imx-ldb-helper.h'.
> >   (Robert)
> > * s/__FSL_IMX_LDB__/__IMX_LDB_HELPER__/  for 'imx-ldb-helper.h'.
> > 
> > v3->v4:
> > * Use 'fsl,sc-resource' DT property to get the SCU resource ID associated with
> >   the PXL2DPI instance instead of using alias ID. (Rob)
> > * Add Rob's R-b tag on patch 11/14.
> > 
> > v2->v3:
> > * Drop 'fsl,syscon' DT properties from fsl,imx8qxp-ldb.yaml and
> >   fsl,imx8qxp-pxl2dpi.yaml. (Rob)
> > * Mention the CSR module controls LDB and PXL2DPI in fsl,imx8qxp-ldb.yaml and
> >   fsl,imx8qxp-pxl2dpi.yaml.
> > * Call syscon_node_to_regmap() to get regmaps from LDB bridge helper driver
> >   and PXL2DPI bridger driver instead of syscon_regmap_lookup_by_phandle().
> > * Drop two macros from pixel link bridge driver which help define functions
> >   and define them directly.
> > * Properly disable all pixel link controls to POR value by calling
> >   imx8qxp_pixel_link_disable_all_controls() from
> >   imx8qxp_pixel_link_bridge_probe().
> > * Add Rob's R-b tags on patch 4/14 and 6/14.
> > 
> > v1->v2:
> > * Rebase the series upon the latest drm-misc-next branch(5.11-rc2 based).
> > * Use graph schema in the dt-bindings of the bridges. (Laurent)
> > * Require all four pixel link output ports in fsl,imx8qxp-pixel-link.yaml.
> >   (Laurent)
> > * Side note i.MX8qm/qxp LDB official name 'pixel mapper' in fsl,imx8qxp-ldb.yaml.
> >   (Laurent)
> > * Mention pixel link is accessed via SCU firmware in fsl,imx8qxp-pixel-link.yaml.
> >   (Rob)
> > * Use enum instead of oneOf + const for the reg property of pixel combiner
> >   channels in fsl,imx8qxp-pixel-combiner.yaml. (Rob)
> > * Rewrite the function to find the next bridge in pixel link bridge driver
> >   by properly using OF APIs and dropping unnecessary DT validation. (Rob)
> > * Drop unnecessary port availability check in i.MX8qxp pixel link to DPI
> >   bridge driver.
> > * Drop unnecessary DT validation from i.MX8qxp LDB bridge driver.
> > * Use of_graph_get_endpoint_by_regs() and of_graph_get_remote_endpoint() to
> >   get the input remote endpoint in imx8qxp_ldb_set_di_id() of i.MX8qxp LDB
> >   bridge driver.
> > * Avoid using companion_port OF node after putting it in
> >   imx8qxp_ldb_parse_dt_companion() of i.MX8qxp LDB bridge driver.
> > * Drop unnecessary check for maximum available LDB channels from
> >   i.MX8qm LDB bridge driver.
> > * Mention i.MX8qm/qxp LDB official name 'pixel mapper' in i.MX8qm/qxp LDB
> >   bridge drivers and Kconfig help messages.
> > 
> > Liu Ying (14):
> >   media: uapi: Add some RGB bus formats for i.MX8qm/qxp pixel combiner
> >   media: docs: Add some RGB bus formats for i.MX8qm/qxp pixel combiner
> >   dt-bindings: display: bridge: Add i.MX8qm/qxp pixel combiner binding
> >   drm/bridge: imx: Add i.MX8qm/qxp pixel combiner support
> >   dt-bindings: display: bridge: Add i.MX8qm/qxp display pixel link
> >     binding
> >   drm/bridge: imx: Add i.MX8qm/qxp display pixel link support
> >   dt-bindings: mfd: Add i.MX8qm/qxp Control and Status Registers module
> >     binding
> >   dt-bindings: display: bridge: Add i.MX8qxp pixel link to DPI binding
> >   drm/bridge: imx: Add i.MX8qxp pixel link to DPI support
> >   drm/bridge: imx: Add LDB driver helper support
> >   dt-bindings: display: bridge: Add i.MX8qm/qxp LVDS display bridge
> >     binding
> >   drm/bridge: imx: Add LDB support for i.MX8qxp
> >   drm/bridge: imx: Add LDB support for i.MX8qm
> >   MAINTAINERS: add maintainer for DRM bridge drivers for i.MX SoCs
> > 
> >  .../bindings/display/bridge/fsl,imx8qxp-ldb.yaml   | 173 +++++
> >  .../display/bridge/fsl,imx8qxp-pixel-combiner.yaml | 144 +++++
> >  .../display/bridge/fsl,imx8qxp-pixel-link.yaml     | 106 +++
> >  .../display/bridge/fsl,imx8qxp-pxl2dpi.yaml        | 108 ++++
> >  .../devicetree/bindings/mfd/fsl,imx8qxp-csr.yaml   | 192 ++++++
> >  .../userspace-api/media/v4l/subdev-formats.rst     | 156 +++++
> >  MAINTAINERS                                        |  10 +
> >  drivers/gpu/drm/bridge/Kconfig                     |   2 +
> >  drivers/gpu/drm/bridge/Makefile                    |   1 +
> >  drivers/gpu/drm/bridge/imx/Kconfig                 |  42 ++
> >  drivers/gpu/drm/bridge/imx/Makefile                |   9 +
> >  drivers/gpu/drm/bridge/imx/imx-ldb-helper.c        | 232 +++++++
> >  drivers/gpu/drm/bridge/imx/imx-ldb-helper.h        |  98 +++
> >  drivers/gpu/drm/bridge/imx/imx8qm-ldb-drv.c        | 586 +++++++++++++++++
> >  drivers/gpu/drm/bridge/imx/imx8qxp-ldb-drv.c       | 720 +++++++++++++++++++++
> >  .../gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c    | 448 +++++++++++++
> >  drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c    | 427 ++++++++++++
> >  drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c       | 485 ++++++++++++++
> >  include/uapi/linux/media-bus-format.h              |   6 +-
> >  19 files changed, 3944 insertions(+), 1 deletion(-)
> >  create mode 100644 Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-ldb.yaml
> >  create mode 100644 Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pixel-combiner.yaml
> >  create mode 100644 Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pixel-link.yaml
> >  create mode 100644 Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pxl2dpi.yaml
> >  create mode 100644 Documentation/devicetree/bindings/mfd/fsl,imx8qxp-csr.yaml
> >  create mode 100644 drivers/gpu/drm/bridge/imx/Kconfig
> >  create mode 100644 drivers/gpu/drm/bridge/imx/Makefile
> >  create mode 100644 drivers/gpu/drm/bridge/imx/imx-ldb-helper.c
> >  create mode 100644 drivers/gpu/drm/bridge/imx/imx-ldb-helper.h
> >  create mode 100644 drivers/gpu/drm/bridge/imx/imx8qm-ldb-drv.c
> >  create mode 100644 drivers/gpu/drm/bridge/imx/imx8qxp-ldb-drv.c
> >  create mode 100644 drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c
> >  create mode 100644 drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c
> >  create mode 100644 drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c
-------------- next part --------------
A non-text attachment was scrubbed...
Name: drm_misc_next_imx8qm_qxp_mek_lvds_panel.tgz
Type: application/x-compressed-tar
Size: 145320 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20210323/dd035fc0/attachment-0001.bin>


More information about the dri-devel mailing list