[PATCH RESEND 03/17] dt-bindings: display: spacemit: add K3 Innosilicon DP/eDP controller

From: Cody Kang via B4 Relay

Date: Sat Jul 25 2026 - 00:52:03 EST


From: Cody Kang <codykang.hk@xxxxxxxxx>

Both K3 instances are the same IP and share one compatible; which one
behaves as eDP is decided by what its downstream port is wired to, not by
which register window it sits in, so the binding does not distinguish them.

Signed-off-by: Cody Kang <codykang.hk@xxxxxxxxx>
---
.../display/spacemit/spacemit,k3-inno-dp.yaml | 140 +++++++++++++++++++++
1 file changed, 140 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/spacemit/spacemit,k3-inno-dp.yaml b/Documentation/devicetree/bindings/display/spacemit/spacemit,k3-inno-dp.yaml
new file mode 100644
index 000000000000..865ea310daaf
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/spacemit/spacemit,k3-inno-dp.yaml
@@ -0,0 +1,140 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/spacemit/spacemit,k3-inno-dp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SpacemiT K3 Innosilicon DisplayPort / embedded DisplayPort Controller
+
+maintainers:
+ - Cody Kang <codykang.hk@xxxxxxxxx>
+
+description:
+ Innosilicon DisplayPort transmit controller integrated in the SpacemiT K3
+ SoC. The K3 has two instances of the same block sharing one compatible;
+ each acts as embedded or external DisplayPort depending on whether its
+ output port drives a panel or a connector.
+
+properties:
+ compatible:
+ const: spacemit,k3-inno-dp
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+ description: Link and hot-plug events.
+
+ clocks:
+ items:
+ - description: Pixel clock for the controller.
+ - description:
+ Pixel clock generated by the DP PHY PLL; the pixel clock above is
+ parented onto it in use.
+
+ clock-names:
+ items:
+ - const: pxclk
+ - const: pll
+
+ resets:
+ maxItems: 1
+ description: Controller-wide reset signal.
+
+ phys:
+ maxItems: 1
+ description: Phandle to the K3 Innosilicon DP PHY.
+
+ phy-names:
+ items:
+ - const: dp
+
+ ports:
+ $ref: /schemas/graph.yaml#/properties/ports
+
+ properties:
+ port@0:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Video input from the DPU.
+
+ port@1:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Output to the panel or to the DisplayPort connector.
+
+ required:
+ - port@0
+
+ aux-bus:
+ $ref: /schemas/display/dp-aux-bus.yaml#
+ description:
+ The DisplayPort AUX bus. Present when the output drives an embedded
+ panel, which is described as a child of this node and identifies itself
+ over AUX. Absent when the output is a connector.
+
+ phy:
+ $ref: /schemas/phy/spacemit,k3-inno-dp-phy.yaml#
+ description:
+ The DisplayPort PHY. Its registers live inside this controller's
+ register window, so it is described here as a child node.
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - clock-names
+ - resets
+ - phys
+ - phy-names
+ - ports
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/spacemit,k3-clocks.h>
+ #include <dt-bindings/reset/spacemit,k3-resets.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ soc {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ edp@cac84000 {
+ compatible = "spacemit,k3-inno-dp";
+ reg = <0x0 0xcac84000 0x0 0x4000>;
+ interrupts = <132 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&syscon_apmu CLK_APMU_EDP0_PXCLK>, <&edp0_phy>;
+ clock-names = "pxclk", "pll";
+ resets = <&syscon_apmu RESET_APMU_EDP0>;
+ phys = <&edp0_phy>;
+ phy-names = "dp";
+
+ edp0_phy: phy {
+ compatible = "spacemit,k3-inno-dp-phy";
+ #phy-cells = <0>;
+ #clock-cells = <0>;
+ clock-output-names = "edp0_pll_pxclk";
+ };
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ endpoint {
+ remote-endpoint = <&dpu0_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ endpoint {
+ remote-endpoint = <&panel_in>;
+ };
+ };
+ };
+ };
+ };

--
2.43.0