2020-03-03 05:29:00

by Jitao Shi

[permalink] [raw]
Subject: [PATCH v12 0/6] mt8183 dpi supports dual edge and pin mode swap

Change since v11:
- fine tune mediatek,dpi.yaml.
- add Acked-by: Rob Herring <[email protected]>.

Change since v10:
- convert the Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
to yaml format.
- read the pclk-sample in endpoint.

Changes since v9:
- rename pinctrl-names = "gpiomode", "dpimode" to "active", "idle".
- fix some typo.

Changes since v8:
- drop pclk-sample redefine in mediatek,dpi.txt
- only get the gpiomode and dpimode when dpi->pinctrl is successful.

Changes since v7:
- separate dt-bindings to independent patches.
- move dpi dual edge to one patch.

Changes since v6:
- change dual_edge to pclk-sample
- remove dpi_pin_mode_swap and

Changes since v5:
- fine tune the dt-bindings commit message.

Changes since v4:
- move pin mode control and dual edge control to deveice tree.
- update dt-bindings document for pin mode swap and dual edge control.

Changes since v3:
- add dpi pin mode control when dpi on or off.
- update dpi dual edge comment.

Changes since v2:
- update dt-bindings document for mt8183 dpi.
- separate dual edge modfication as independent patch.

Jitao Shi (6):
dt-bindings: media: add pclk-sample dual edge property
dt-bindings: display: mediatek: control dpi pins mode to avoid leakage
dt-bindings: display: mediatek: dpi sample data in dual edge support
dt-bindings: display: mediatek: convert the document format from txt
to yaml
drm/mediatek: dpi sample mode support
drm/mediatek: set dpi pin mode to gpio low to avoid leakage current

.../display/mediatek/mediatek,dpi.txt | 36 --------
.../display/mediatek/mediatek,dpi.yaml | 92 +++++++++++++++++++
.../bindings/media/video-interfaces.txt | 4 +-
drivers/gpu/drm/mediatek/mtk_dpi.c | 58 +++++++++++-
4 files changed, 150 insertions(+), 40 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
create mode 100644 Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml

--
2.21.0


2020-03-03 05:29:28

by Jitao Shi

[permalink] [raw]
Subject: [PATCH v12 2/6] dt-bindings: display: mediatek: control dpi pins mode to avoid leakage

Add property "pinctrl-names" to swap pin mode between gpio and dpi mode. Set
the dpi pins to gpio mode and output-low to avoid leakage current when dpi
disabled.

Signed-off-by: Jitao Shi <[email protected]>
---
.../devicetree/bindings/display/mediatek/mediatek,dpi.txt | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
index 58914cf681b8..77ca32a32399 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
@@ -17,6 +17,10 @@ Required properties:
Documentation/devicetree/bindings/graph.txt. This port should be connected
to the input port of an attached HDMI or LVDS encoder chip.

+Optional properties:
+- pinctrl-names: Contain "gpiomode" and "dpimode".
+ pinctrl-names see Documentation/devicetree/bindings/pinctrlpinctrl-bindings.txt
+
Example:

dpi0: dpi@1401d000 {
@@ -27,6 +31,9 @@ dpi0: dpi@1401d000 {
<&mmsys CLK_MM_DPI_ENGINE>,
<&apmixedsys CLK_APMIXED_TVDPLL>;
clock-names = "pixel", "engine", "pll";
+ pinctrl-names = "active", "idle";
+ pinctrl-0 = <&dpi_pin_func>;
+ pinctrl-1 = <&dpi_pin_idle>;

port {
dpi0_out: endpoint {
--
2.21.0

2020-03-03 05:29:49

by Jitao Shi

[permalink] [raw]
Subject: [PATCH v12 5/6] drm/mediatek: dpi sample mode support

DPI can sample on falling, rising or both edge.
When DPI sample the data both rising and falling edge.
It can reduce half data io pins.

Reviewed-by: CK Hu <[email protected]>
Signed-off-by: Jitao Shi <[email protected]>
---
drivers/gpu/drm/mediatek/mtk_dpi.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
index 087f5ce732e1..db3272f7a4c4 100644
--- a/drivers/gpu/drm/mediatek/mtk_dpi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
@@ -75,6 +75,7 @@ struct mtk_dpi {
enum mtk_dpi_out_bit_num bit_num;
enum mtk_dpi_out_channel_swap channel_swap;
int refcount;
+ u32 pclk_sample;
};

static inline struct mtk_dpi *mtk_dpi_from_encoder(struct drm_encoder *e)
@@ -348,6 +349,13 @@ static void mtk_dpi_config_disable_edge(struct mtk_dpi *dpi)
mtk_dpi_mask(dpi, dpi->conf->reg_h_fre_con, 0, EDGE_SEL_EN);
}

+static void mtk_dpi_enable_pclk_sample_dual_edge(struct mtk_dpi *dpi)
+{
+ mtk_dpi_mask(dpi, DPI_DDR_SETTING, DDR_EN | DDR_4PHASE,
+ DDR_EN | DDR_4PHASE);
+ mtk_dpi_mask(dpi, DPI_OUTPUT_SETTING, EDGE_SEL, EDGE_SEL);
+}
+
static void mtk_dpi_config_color_format(struct mtk_dpi *dpi,
enum mtk_dpi_out_color_format format)
{
@@ -439,7 +447,8 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi,
pll_rate = clk_get_rate(dpi->tvd_clk);

vm.pixelclock = pll_rate / factor;
- clk_set_rate(dpi->pixel_clk, vm.pixelclock);
+ clk_set_rate(dpi->pixel_clk,
+ vm.pixelclock * (dpi->pclk_sample > 1 ? 2 : 1));
vm.pixelclock = clk_get_rate(dpi->pixel_clk);

dev_dbg(dpi->dev, "Got PLL %lu Hz, pixel clock %lu Hz\n",
@@ -450,7 +459,8 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi,
limit.y_bottom = 0x0010;
limit.y_top = 0x0FE0;

- dpi_pol.ck_pol = MTK_DPI_POLARITY_FALLING;
+ dpi_pol.ck_pol = dpi->pclk_sample == 1 ?
+ MTK_DPI_POLARITY_RISING : MTK_DPI_POLARITY_FALLING;
dpi_pol.de_pol = MTK_DPI_POLARITY_RISING;
dpi_pol.hsync_pol = vm.flags & DISPLAY_FLAGS_HSYNC_HIGH ?
MTK_DPI_POLARITY_FALLING : MTK_DPI_POLARITY_RISING;
@@ -504,6 +514,8 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi,
mtk_dpi_config_color_format(dpi, dpi->color_format);
mtk_dpi_config_2n_h_fre(dpi);
mtk_dpi_config_disable_edge(dpi);
+ if (dpi->pclk_sample > 1)
+ mtk_dpi_enable_pclk_sample_dual_edge(dpi);
mtk_dpi_sw_reset(dpi, false);

return 0;
@@ -704,6 +716,8 @@ static int mtk_dpi_probe(struct platform_device *pdev)

dpi->dev = dev;
dpi->conf = (struct mtk_dpi_conf *)of_device_get_match_data(dev);
+ of_property_read_u32_index(dev->of_node, "pclk-sample", 1,
+ &dpi->pclk_sample);

mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
dpi->regs = devm_ioremap_resource(dev, mem);
--
2.21.0

2020-03-03 05:30:18

by Jitao Shi

[permalink] [raw]
Subject: [PATCH v12 6/6] drm/mediatek: set dpi pin mode to gpio low to avoid leakage current

Config dpi pins mode to output and pull low when dpi is disabled.
Aovid leakage current from some dpi pins (Hsync Vsync DE ... ).

Signed-off-by: Jitao Shi <[email protected]>
---
drivers/gpu/drm/mediatek/mtk_dpi.c | 44 ++++++++++++++++++++++++++++--
1 file changed, 42 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c b/drivers/gpu/drm/mediatek/mtk_dpi.c
index db3272f7a4c4..b6359e979588 100644
--- a/drivers/gpu/drm/mediatek/mtk_dpi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
@@ -10,7 +10,9 @@
#include <linux/kernel.h>
#include <linux/of.h>
#include <linux/of_device.h>
+#include <linux/of_gpio.h>
#include <linux/of_graph.h>
+#include <linux/pinctrl/consumer.h>
#include <linux/platform_device.h>
#include <linux/types.h>

@@ -74,6 +76,9 @@ struct mtk_dpi {
enum mtk_dpi_out_yc_map yc_map;
enum mtk_dpi_out_bit_num bit_num;
enum mtk_dpi_out_channel_swap channel_swap;
+ struct pinctrl *pinctrl;
+ struct pinctrl_state *pins_gpio;
+ struct pinctrl_state *pins_dpi;
int refcount;
u32 pclk_sample;
};
@@ -387,6 +392,9 @@ static void mtk_dpi_power_off(struct mtk_dpi *dpi)
if (--dpi->refcount != 0)
return;

+ if (dpi->pinctrl && dpi->pins_gpio)
+ pinctrl_select_state(dpi->pinctrl, dpi->pins_gpio);
+
mtk_dpi_disable(dpi);
clk_disable_unprepare(dpi->pixel_clk);
clk_disable_unprepare(dpi->engine_clk);
@@ -411,6 +419,9 @@ static int mtk_dpi_power_on(struct mtk_dpi *dpi)
goto err_pixel;
}

+ if (dpi->pinctrl && dpi->pins_dpi)
+ pinctrl_select_state(dpi->pinctrl, dpi->pins_dpi);
+
mtk_dpi_enable(dpi);
return 0;

@@ -705,6 +716,7 @@ static const struct mtk_dpi_conf mt8183_conf = {
static int mtk_dpi_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
+ struct device_node *ep;
struct mtk_dpi *dpi;
struct resource *mem;
int comp_id;
@@ -716,9 +728,37 @@ static int mtk_dpi_probe(struct platform_device *pdev)

dpi->dev = dev;
dpi->conf = (struct mtk_dpi_conf *)of_device_get_match_data(dev);
- of_property_read_u32_index(dev->of_node, "pclk-sample", 1,
- &dpi->pclk_sample);

+ ep = of_graph_get_endpoint_by_regs(dev->of_node, 0, 0);
+ if (!ep) {
+ dev_err(dev, "Failed get the endpoint port\n");
+ return -EINVAL;
+ }
+
+ /* Get the sampling edge from the endpoint. */
+ of_property_read_u32(ep, "pclk-sample", &dpi->pclk_sample);
+ of_node_put(ep);
+
+ dpi->pinctrl = devm_pinctrl_get(&pdev->dev);
+ if (IS_ERR(dpi->pinctrl)) {
+ dpi->pinctrl = NULL;
+ dev_dbg(&pdev->dev, "Cannot find pinctrl!\n");
+ }
+ if (dpi->pinctrl) {
+ dpi->pins_gpio = pinctrl_lookup_state(dpi->pinctrl, "sleep");
+ if (IS_ERR(dpi->pins_gpio)) {
+ dpi->pins_gpio = NULL;
+ dev_dbg(&pdev->dev, "Cannot find pinctrl idle!\n");
+ }
+ if (dpi->pins_gpio)
+ pinctrl_select_state(dpi->pinctrl, dpi->pins_gpio);
+
+ dpi->pins_dpi = pinctrl_lookup_state(dpi->pinctrl, "default");
+ if (IS_ERR(dpi->pins_dpi)) {
+ dpi->pins_dpi = NULL;
+ dev_dbg(&pdev->dev, "Cannot find pinctrl active!\n");
+ }
+ }
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
dpi->regs = devm_ioremap_resource(dev, mem);
if (IS_ERR(dpi->regs)) {
--
2.21.0

2020-03-03 05:31:39

by Jitao Shi

[permalink] [raw]
Subject: [PATCH v12 1/6] dt-bindings: media: add pclk-sample dual edge property

Some chips's sample mode are rising, falling and dual edge (both
falling and rising edge).
Extern the pclk-sample property to support dual edge.

Acked-by: Rob Herring <[email protected]>
Reviewed-by: CK Hu <[email protected]>
Signed-off-by: Jitao Shi <[email protected]>
---
Documentation/devicetree/bindings/media/video-interfaces.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
index f884ada0bffc..da9ad24935db 100644
--- a/Documentation/devicetree/bindings/media/video-interfaces.txt
+++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
@@ -118,8 +118,8 @@ Optional endpoint properties
- data-enable-active: similar to HSYNC and VSYNC, specifies the data enable
signal polarity.
- field-even-active: field signal level during the even field data transmission.
-- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock
- signal.
+- pclk-sample: sample data on rising (1), falling (0) or both rising and
+ falling (2) edge of the pixel clock signal.
- sync-on-green-active: active state of Sync-on-green (SoG) signal, 0/1 for
LOW/HIGH respectively.
- data-lanes: an array of physical data lane indexes. Position of an entry
--
2.21.0

2020-03-03 05:39:43

by Jitao Shi

[permalink] [raw]
Subject: [PATCH v12 4/6] dt-bindings: display: mediatek: convert the document format from txt to yaml

Signed-off-by: Jitao Shi <[email protected]>
---
.../display/mediatek/mediatek,dpi.txt | 45 ---------
.../display/mediatek/mediatek,dpi.yaml | 92 +++++++++++++++++++
2 files changed, 92 insertions(+), 45 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
create mode 100644 Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml

diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
deleted file mode 100644
index 4eeead1d39db..000000000000
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-Mediatek DPI Device
-===================
-
-The Mediatek DPI function block is a sink of the display subsystem and
-provides 8-bit RGB/YUV444 or 8/10/10-bit YUV422 pixel data on a parallel
-output bus.
-
-Required properties:
-- compatible: "mediatek,<chip>-dpi"
- the supported chips are mt2701 , mt8173 and mt8183.
-- reg: Physical base address and length of the controller's registers
-- interrupts: The interrupt signal from the function block.
-- clocks: device clocks
- See Documentation/devicetree/bindings/clock/clock-bindings.txt for details.
-- clock-names: must contain "pixel", "engine", and "pll"
-- port: Output port node with endpoint definitions as described in
- Documentation/devicetree/bindings/graph.txt. This port should be connected
- to the input port of an attached HDMI or LVDS encoder chip.
-
-Optional properties:
-- pinctrl-names: Contain "gpiomode" and "dpimode".
- pinctrl-names see Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
-- pclk-sample: refer Documentation/devicetree/bindings/media/video-interfaces.txt.
-
-Example:
-
-dpi0: dpi@1401d000 {
- compatible = "mediatek,mt8173-dpi";
- reg = <0 0x1401d000 0 0x1000>;
- interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_LOW>;
- clocks = <&mmsys CLK_MM_DPI_PIXEL>,
- <&mmsys CLK_MM_DPI_ENGINE>,
- <&apmixedsys CLK_APMIXED_TVDPLL>;
- clock-names = "pixel", "engine", "pll";
- pinctrl-names = "active", "idle";
- pinctrl-0 = <&dpi_pin_func>;
- pinctrl-1 = <&dpi_pin_idle>;
-
- port {
- dpi0_out: endpoint {
- pclk-sample = <0>;
- remote-endpoint = <&hdmi0_in>;
- };
- };
-};
diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml
new file mode 100644
index 000000000000..eb2b0cb5eb5a
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml
@@ -0,0 +1,92 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/mediatek,dpi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: mediatek DPI Controller Device Tree Bindings
+
+maintainers:
+ - CK Hu <[email protected]>
+ - Jitao shi <[email protected]>
+
+description: |
+ The Mediatek DPI function block is a sink of the display subsystem and
+ provides 8-bit RGB/YUV444 or 8/10/10-bit YUV422 pixel data on a parallel
+ output bus.
+
+properties:
+ compatible:
+ enum:
+ - mediatek,mt2701-dpi
+ - mediatek,mt8173-dpi
+ - mediatek,mt8183-dpi
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: Pixel Clock
+ - description: Engine Clock
+ - description: DPI PLL
+
+ clock-names:
+ items:
+ - const: pixel
+ - const: engine
+ - const: pll
+
+ pinctrl-names:
+ items:
+ - const: default
+ - const: sleep
+
+ port:
+ type: object
+ description:
+ Output port node with endpoint definitions as described in
+ Documentation/devicetree/bindings/graph.txt. This port should be connected
+ to the input port of an attached HDMI or LVDS encoder chip.
+
+ properties:
+ pclk-sample:
+ description: refer Documentation/devicetree/bindings/media/video-interfaces.txt.
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - clock-names
+ - port
+
+additionalProperties: false
+
+examples:
+ - |
+ dpi0: dpi@1401d000 {
+ compatible = "mediatek,mt8173-dpi";
+ reg = <0 0x1401d000 0 0x1000>;
+ interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_LOW>;
+ clocks = <&mmsys CLK_MM_DPI_PIXEL>,
+ <&mmsys CLK_MM_DPI_ENGINE>,
+ <&apmixedsys CLK_APMIXED_TVDPLL>;
+ clock-names = "pixel", "engine", "pll";
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&dpi_pin_func>;
+ pinctrl-1 = <&dpi_pin_idle>;
+
+ port {
+ reg = <0>;
+ dpi0_out: endpoint {
+ pclk-sample = <0>;
+ remote-endpoint = <&hdmi0_in>;
+ };
+ };
+ };
+
+...
--
2.21.0

2020-03-04 15:01:40

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v12 2/6] dt-bindings: display: mediatek: control dpi pins mode to avoid leakage

On Tue, Mar 03, 2020 at 01:27:18PM +0800, Jitao Shi wrote:
> Add property "pinctrl-names" to swap pin mode between gpio and dpi mode. Set
> the dpi pins to gpio mode and output-low to avoid leakage current when dpi
> disabled.
>
> Signed-off-by: Jitao Shi <[email protected]>
> ---
> .../devicetree/bindings/display/mediatek/mediatek,dpi.txt | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
> index 58914cf681b8..77ca32a32399 100644
> --- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
> +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
> @@ -17,6 +17,10 @@ Required properties:
> Documentation/devicetree/bindings/graph.txt. This port should be connected
> to the input port of an attached HDMI or LVDS encoder chip.
>
> +Optional properties:
> +- pinctrl-names: Contain "gpiomode" and "dpimode".

Doesn't match the example.

> + pinctrl-names see Documentation/devicetree/bindings/pinctrlpinctrl-bindings.txt
> +
> Example:
>
> dpi0: dpi@1401d000 {
> @@ -27,6 +31,9 @@ dpi0: dpi@1401d000 {
> <&mmsys CLK_MM_DPI_ENGINE>,
> <&apmixedsys CLK_APMIXED_TVDPLL>;
> clock-names = "pixel", "engine", "pll";
> + pinctrl-names = "active", "idle";
> + pinctrl-0 = <&dpi_pin_func>;
> + pinctrl-1 = <&dpi_pin_idle>;
>
> port {
> dpi0_out: endpoint {
> --
> 2.21.0

2020-03-04 16:16:03

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v12 4/6] dt-bindings: display: mediatek: convert the document format from txt to yaml

On Tue, Mar 03, 2020 at 01:27:20PM +0800, Jitao Shi wrote:
> Signed-off-by: Jitao Shi <[email protected]>
> ---
> .../display/mediatek/mediatek,dpi.txt | 45 ---------
> .../display/mediatek/mediatek,dpi.yaml | 92 +++++++++++++++++++
> 2 files changed, 92 insertions(+), 45 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.txt
> create mode 100644 Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml

You need to run 'make dt_binding_check' on this and fix the errors.

[...]

> diff --git a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml
> new file mode 100644
> index 000000000000..eb2b0cb5eb5a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml
> @@ -0,0 +1,92 @@
> +# SPDX-License-Identifier: GPL-2.0
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/mediatek,dpi.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: mediatek DPI Controller Device Tree Bindings
> +
> +maintainers:
> + - CK Hu <[email protected]>
> + - Jitao shi <[email protected]>
> +
> +description: |
> + The Mediatek DPI function block is a sink of the display subsystem and
> + provides 8-bit RGB/YUV444 or 8/10/10-bit YUV422 pixel data on a parallel
> + output bus.
> +
> +properties:
> + compatible:
> + enum:
> + - mediatek,mt2701-dpi
> + - mediatek,mt8173-dpi
> + - mediatek,mt8183-dpi
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: Pixel Clock
> + - description: Engine Clock
> + - description: DPI PLL
> +
> + clock-names:
> + items:
> + - const: pixel
> + - const: engine
> + - const: pll
> +
> + pinctrl-names:
> + items:
> + - const: default
> + - const: sleep

Doesn't match what you just added to the binding...

> +
> + port:
> + type: object
> + description:
> + Output port node with endpoint definitions as described in
> + Documentation/devicetree/bindings/graph.txt. This port should be connected
> + to the input port of an attached HDMI or LVDS encoder chip.
> +
> + properties:
> + pclk-sample:
> + description: refer Documentation/devicetree/bindings/media/video-interfaces.txt.

This is wrong in multiple ways. 'description' is missing indentation, so
you are defining 'description' to be a property.

And 'pclk-sample' is not a property of 'port' node, but 'endpoint'.

> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - clocks
> + - clock-names
> + - port
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + dpi0: dpi@1401d000 {
> + compatible = "mediatek,mt8173-dpi";
> + reg = <0 0x1401d000 0 0x1000>;
> + interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_LOW>;
> + clocks = <&mmsys CLK_MM_DPI_PIXEL>,
> + <&mmsys CLK_MM_DPI_ENGINE>,
> + <&apmixedsys CLK_APMIXED_TVDPLL>;

Examples are built now and you need to add includes for these defines.

> + clock-names = "pixel", "engine", "pll";
> + pinctrl-names = "default", "sleep";
> + pinctrl-0 = <&dpi_pin_func>;
> + pinctrl-1 = <&dpi_pin_idle>;
> +
> + port {
> + reg = <0>;

Drop 'reg'.

> + dpi0_out: endpoint {
> + pclk-sample = <0>;
> + remote-endpoint = <&hdmi0_in>;
> + };
> + };
> + };
> +
> +...
> --
> 2.21.0