174 lines
4.4 KiB
YAML
174 lines
4.4 KiB
YAML
|
# 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>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|