dt-bindings: display: bridge: Add i.MX8qm/qxp LVDS display bridge binding
This patch adds bindings for i.MX8qm/qxp LVDS display bridge(LDB). Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Liu Ying <victor.liu@nxp.com> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Robert Foss <robert.foss@linaro.org> Link: https://patchwork.freedesktop.org/patch/msgid/20220611141421.718743-11-victor.liu@nxp.com
This commit is contained in:
parent
1039fb6046
commit
48ed447c69
|
@ -0,0 +1,173 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/display/bridge/fsl,imx8qxp-ldb.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Freescale i.MX8qm/qxp LVDS Display Bridge
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Liu Ying <victor.liu@nxp.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The Freescale i.MX8qm/qxp LVDS Display Bridge(LDB) has two channels.
|
||||||
|
|
||||||
|
The i.MX8qm/qxp LDB is controlled by Control and Status Registers(CSR) module.
|
||||||
|
The CSR module, as a system controller, contains the LDB's configuration
|
||||||
|
registers.
|
||||||
|
|
||||||
|
For i.MX8qxp LDB, each channel supports up to 24bpp parallel input color
|
||||||
|
format and can map the input to VESA or JEIDA standards. The two channels
|
||||||
|
cannot be used simultaneously, that is to say, the user should pick one of
|
||||||
|
them to use. Two LDB channels from two LDB instances can work together in
|
||||||
|
LDB split mode to support a dual link LVDS display. The channel indexes
|
||||||
|
have to be different. Channel0 outputs odd pixels and channel1 outputs
|
||||||
|
even pixels.
|
||||||
|
|
||||||
|
For i.MX8qm LDB, each channel additionally supports up to 30bpp parallel
|
||||||
|
input color format. The two channels can be used simultaneously, either
|
||||||
|
in dual mode or split mode. In dual mode, the two channels output identical
|
||||||
|
data. In split mode, channel0 outputs odd pixels and channel1 outputs even
|
||||||
|
pixels.
|
||||||
|
|
||||||
|
A side note is that i.MX8qm/qxp LDB is officially called pixel mapper in
|
||||||
|
the SoC reference manuals. The pixel mapper uses logic of LDBs embedded in
|
||||||
|
i.MX6qdl/sx SoCs, i.e., it is essentially based on them. To keep the naming
|
||||||
|
consistency, this binding calls it LDB.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- fsl,imx8qm-ldb
|
||||||
|
- fsl,imx8qxp-ldb
|
||||||
|
|
||||||
|
"#address-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
"#size-cells":
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
items:
|
||||||
|
- description: pixel clock
|
||||||
|
- description: bypass clock
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
items:
|
||||||
|
- const: pixel
|
||||||
|
- const: bypass
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
fsl,companion-ldb:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/phandle
|
||||||
|
description: |
|
||||||
|
A phandle which points to companion LDB which is used in LDB split mode.
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
"^channel@[0-1]$":
|
||||||
|
type: object
|
||||||
|
description: Represents a channel of LDB.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
"#address-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
"#size-cells":
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
reg:
|
||||||
|
description: The channel index.
|
||||||
|
enum: [ 0, 1 ]
|
||||||
|
|
||||||
|
phys:
|
||||||
|
description: A phandle to the phy module representing the LVDS PHY.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
phy-names:
|
||||||
|
const: lvds_phy
|
||||||
|
|
||||||
|
port@0:
|
||||||
|
$ref: /schemas/graph.yaml#/properties/port
|
||||||
|
description: Input port of the channel.
|
||||||
|
|
||||||
|
port@1:
|
||||||
|
$ref: /schemas/graph.yaml#/properties/port
|
||||||
|
description: Output port of the channel.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- "#address-cells"
|
||||||
|
- "#size-cells"
|
||||||
|
- reg
|
||||||
|
- phys
|
||||||
|
- phy-names
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- "#address-cells"
|
||||||
|
- "#size-cells"
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
- power-domains
|
||||||
|
- channel@0
|
||||||
|
- channel@1
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
const: fsl,imx8qm-ldb
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
fsl,companion-ldb: false
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/firmware/imx/rsrc.h>
|
||||||
|
ldb {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
compatible = "fsl,imx8qxp-ldb";
|
||||||
|
clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_MISC2>,
|
||||||
|
<&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_BYPASS>;
|
||||||
|
clock-names = "pixel", "bypass";
|
||||||
|
power-domains = <&pd IMX_SC_R_LVDS_0>;
|
||||||
|
|
||||||
|
channel@0 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
reg = <0>;
|
||||||
|
phys = <&mipi_lvds_0_phy>;
|
||||||
|
phy-names = "lvds_phy";
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
|
mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi: endpoint {
|
||||||
|
remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
channel@1 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
reg = <1>;
|
||||||
|
phys = <&mipi_lvds_0_phy>;
|
||||||
|
phy-names = "lvds_phy";
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
|
mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi: endpoint {
|
||||||
|
remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
Loading…
Reference in New Issue