From nobody Sat Sep 26 08:02:12 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5CF3845DF41; Thu, 3 Sep 2026 12:10:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437424; cv=none; b=KvKepc/J5AUcMUU1VxrInz7Vb8yKgdTdqFFbfr5xfWLwCUvOCsurB9TIo2nT0CC6CiS7hL6+KSym3+vGn6DTyHxbX2Ucel0mSrkAOOZGKg39/CdB9NatIjKwhu8xojpoFXa+RO2K3mr+BT8Ajig2nAXKGu//flqdFKCbFnfPb+A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437424; c=relaxed/simple; bh=LpDGc0cDa9j4l/8e1hHJ2+VyrUsGhN9+cxpOs8tl3JM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=utlww89qucuF2v1M21sHbgFQoH+vKIGe4YKBUZdi3tnUXr0g5prhXbv6fJFmTMKNtRqG67BOkzdO4S405ue8/JrkjA4zyjfDl/s26QB+GZ/PZMu5NGbDRN7W1kiH21iKIrr+RqmK5VDKWqCYrytmyd+CHeOSN9JVb8qUjK3SrdM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=oABOk8W2; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="oABOk8W2" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B677F2590; Thu, 3 Sep 2026 14:08:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1788437328; bh=LpDGc0cDa9j4l/8e1hHJ2+VyrUsGhN9+cxpOs8tl3JM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=oABOk8W2ftL+XqURBaeUudsIc0JlQ+2kTMvVaAg0h6xIJLCw/2c0bva71cvomKop+ Lt3ZOoW4RLERssjQuHfIZcPUDDhbugDh7OOKVhdRvYIIkaIUxwbms/J2sMU7aUu2Df 4KrVuuQS0ZzJKhQpyVGx9mDF7BSjMAjHlbjq7GoA= From: Tomi Valkeinen Date: Thu, 03 Sep 2026 15:09:51 +0300 Subject: [PATCH 01/10] dt-bindings: display: ti: Move ti,am62l-dss binding to a new binding file Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260903-tidss-pre-beagley-v1-1-93928baa8b12@ideasonboard.com> References: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> In-Reply-To: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> To: Devarsh Thakkar , Swamil Jain , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=10289; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=LpDGc0cDa9j4l/8e1hHJ2+VyrUsGhN9+cxpOs8tl3JM=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBqmWOm+EJXSB89xBNXvlOBpxuT4HN0OHf9QfSCB i3no284TwWJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCapljpgAKCRD6PaqMvJYe 9UfmEACjOdDn0FMvrs/GQIM8z6ZtIaff8PwFH3yRahoz7jRGhMzpuThsLwjekX08T7QUeKJgxZG PPZs8t2DkPj+m9FV6rtT7c+SAJkbedxX17nU957CoHiBwOuG5u1woxI3/UeIb5UVqS4+wYR5ot0 pgjdSev7+iObOdX5gNkNS60OE0VmOy6EAf4UblAKX53HSX7DnhDrbTNrULWkItPJmg2U8UEMUXD pRKZxwCEXw7kPwbdMn/bIBJO3jAhfx0Rzt09SkclszZSyDe3lAY6c5yUNiASnfvLuLI30e+8XZ/ bfYuGpm71NDlx1D6JlwZxidjmA1shU7IGibQR1PvZeLl7kFSRHOg0RNRUJQG6KOpQqswDYTmJMc tVf7TNgJRPlvXmXovqKrtKJH92wreDalUsWEBQ4nyti7LrjNICtpXCqabyaMcc71TnTEfsKkTIt nJP3HQL49wPhal00HiU2EQdl6xOCM6Grv4zODDywzoPoKTNT0hEw+KpUK1lTE1sMLE4CAL5fQYj okYn0CQcpjq0d0UjglbtWKSqkp612NfWGQXrtPimtF/X/Z7xV41QNopB8oCoW7irSHWDAIHIXUI 2D92K63lpsrpU5x3IK1DXYu0VJ38pE3b6YCkzCq+87IFo67f06PEHAcQsYnu0xyfAdMB7cCF5FV Tji61o0H0qDDl9A== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 We currently have two binding files for different TI K3 DSS versions: ti,j721e-dss.yaml which contains bindings for the "full" DSS version, with four planes and outputs, and ti,am65x-dss.yaml which used to contain bindings for the "lite" DSS version, with two planes and outputs. ti,am62l-dss binding was added recently to the ti,am65x-dss.yaml file, which only has a single plane and a single output. To keep with the above "binding file per DSS model" style, and to simplify the ti,am65x-dss.yaml file, let's move the ti,am62l-dss to a separate, new file. Reviewed-by: Rob Herring (Arm) Signed-off-by: Tomi Valkeinen --- .../bindings/display/ti/ti,am62l-dss.yaml | 136 +++++++++++++++++= ++++ .../bindings/display/ti/ti,am65x-dss.yaml | 94 +++----------- MAINTAINERS | 1 + 3 files changed, 156 insertions(+), 75 deletions(-) diff --git a/Documentation/devicetree/bindings/display/ti/ti,am62l-dss.yaml= b/Documentation/devicetree/bindings/display/ti/ti,am62l-dss.yaml new file mode 100644 index 000000000000..ce6185dca18d --- /dev/null +++ b/Documentation/devicetree/bindings/display/ti/ti,am62l-dss.yaml @@ -0,0 +1,136 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +# Copyright 2026 Texas Instruments Incorporated +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/ti/ti,am62l-dss.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Texas Instruments AM62L Display Subsystem + +maintainers: + - Tomi Valkeinen + +description: | + The AM62L display subsystem is a cut-down version of the TI Keystone + Display SubSystem. It has a single output port which supports DPI + format and a single video "lite plane" which does not support scaling. + The output port is routed to the SoC boundary via the DPI interface, + and the same DPI signals are also routed internally to the DSI Tx + controller present within the SoC. Due to clocking limitations only + one of the interfaces (DSI or DPI) can be used at a time. + +properties: + compatible: + const: ti,am62l-dss + + reg: + description: + Addresses to each DSS memory region described in the SoC's TRM. + items: + - description: common DSS register area + - description: VIDL1 light video plane + - description: OVR1 overlay manager for vp1 + - description: VP1 video port 1 + - description: common1 DSS register area + + reg-names: + items: + - const: common + - const: vidl1 + - const: ovr1 + - const: vp1 + - const: common1 + + clocks: + items: + - description: fck DSS functional clock + - description: vp1 Video Port 1 pixel clock + + clock-names: + items: + - const: fck + - const: vp1 + + assigned-clocks: + minItems: 1 + maxItems: 2 + + assigned-clock-parents: + minItems: 1 + maxItems: 2 + + interrupts: + maxItems: 1 + + power-domains: + maxItems: 1 + description: phandle to the associated power domain + + dma-coherent: true + + ports: + $ref: /schemas/graph.yaml#/properties/ports + + properties: + port@0: + $ref: /schemas/graph.yaml#/properties/port + description: + The DSS DPI output port node from video port 1, which may be + connected to the external DPI pins or to the internal DSI Tx + controller. + + required: + - port@0 + + max-memory-bandwidth: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Input memory (from main memory to dispc) bandwidth limit in + bytes per second + +required: + - compatible + - reg + - reg-names + - clocks + - clock-names + - interrupts + - ports + +additionalProperties: false + +examples: + - | + #include + #include + + bus { + #address-cells =3D <2>; + #size-cells =3D <2>; + + dss: dss@30200000 { + compatible =3D "ti,am62l-dss"; + reg =3D <0x00 0x30200000 0x00 0x1000>, /* common */ + <0x00 0x30202000 0x00 0x1000>, /* vidl1 */ + <0x00 0x30207000 0x00 0x1000>, /* ovr1 */ + <0x00 0x3020a000 0x00 0x1000>, /* vp1 */ + <0x00 0x30201000 0x00 0x1000>; /* common1 */ + reg-names =3D "common", "vidl1", "ovr1", "vp1", "common1"; + power-domains =3D <&scmi_pds 39>; + clocks =3D <&scmi_clk 162>, + <&scmi_clk 161>; + clock-names =3D "fck", "vp1"; + interrupts =3D ; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + port@0 { + reg =3D <0>; + dpi0_out: endpoint { + remote-endpoint =3D <&dsi_in>; + }; + }; + }; + }; + }; diff --git a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml= b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml index d1e530e12604..4e9e441308cc 100644 --- a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml +++ b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml @@ -18,68 +18,45 @@ description: | internally routed to 2 OLDI TXes. The second video port supports DPI format. The first plane is full video plane with all features and the second is a "lite plane" without scaling support. - The AM62L display subsystem has a single output port which supports DPI - format but it only supports single video "lite plane" which does not sup= port - scaling. The output port is routed to SoC boundary via DPI interface and= same - DPI signals are also routed internally to DSI Tx controller present with= in the - SoC. Due to clocking limitations only one of the interface i.e. either D= SI or - DPI can be used at once. =20 properties: compatible: enum: - ti,am625-dss - ti,am62a7-dss - - ti,am62l-dss - ti,am65x-dss =20 reg: description: Addresses to each DSS memory region described in the SoC's TRM. - oneOf: - - items: - - description: common DSS register area - - description: VIDL1 light video plane - - description: VID video plane - - description: OVR1 overlay manager for vp1 - - description: OVR2 overlay manager for vp2 - - description: VP1 video port 1 - - description: VP2 video port 2 - - description: common1 DSS register area - - items: - - description: common DSS register area - - description: VIDL1 light video plane - - description: OVR1 overlay manager for vp1 - - description: VP1 video port 1 - - description: common1 DSS register area + items: + - description: common DSS register area + - description: VIDL1 light video plane + - description: VID video plane + - description: OVR1 overlay manager for vp1 + - description: OVR2 overlay manager for vp2 + - description: VP1 video port 1 + - description: VP2 video port 2 + - description: common1 DSS register area =20 reg-names: - oneOf: - - items: - - const: common - - const: vidl1 - - const: vid - - const: ovr1 - - const: ovr2 - - const: vp1 - - const: vp2 - - const: common1 - - items: - - const: common - - const: vidl1 - - const: ovr1 - - const: vp1 - - const: common1 + items: + - const: common + - const: vidl1 + - const: vid + - const: ovr1 + - const: ovr2 + - const: vp1 + - const: vp2 + - const: common1 =20 clocks: - minItems: 2 items: - description: fck DSS functional clock - description: vp1 Video Port 1 pixel clock - description: vp2 Video Port 2 pixel clock =20 clock-names: - minItems: 2 items: - const: fck - const: vp1 @@ -113,8 +90,6 @@ properties: For AM625 DSS, the internal DPI output port node from video port 1. For AM62A7 DSS, the port is tied off inside the SoC. - For AM62L DSS, the DSS DPI output port node from video port 1 - or DSI Tx controller node connected to video port 1. properties: endpoint@0: $ref: /schemas/graph.yaml#/properties/endpoint @@ -189,38 +164,7 @@ allOf: properties: compatible: contains: - const: ti,am62l-dss - then: - properties: - ports: - properties: - port@1: false - reg: - maxItems: 5 - reg-names: - maxItems: 5 - clocks: - maxItems: 2 - clock-names: - maxItems: 2 - else: - properties: - reg: - minItems: 8 - reg-names: - minItems: 8 - clocks: - minItems: 3 - clock-names: - minItems: 3 - - - if: - properties: - compatible: - contains: - enum: - - ti,am62l-dss - - ti,am65x-dss + const: ti,am65x-dss then: properties: oldi-transmitters: false diff --git a/MAINTAINERS b/MAINTAINERS index 2e854d686da3..7e64f5270f4d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8971,6 +8971,7 @@ L: dri-devel@lists.freedesktop.org S: Maintained T: git https://gitlab.freedesktop.org/drm/misc/kernel.git F: Documentation/devicetree/bindings/display/ti/ti,am625-oldi.yaml +F: Documentation/devicetree/bindings/display/ti/ti,am62l-dss.yaml F: Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml F: Documentation/devicetree/bindings/display/ti/ti,j721e-dss.yaml F: Documentation/devicetree/bindings/display/ti/ti,k2g-dss.yaml --=20 2.43.0 From nobody Sat Sep 26 08:02:12 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E9EF94A1DF3; Thu, 3 Sep 2026 12:10:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437427; cv=none; b=j2NaOK1nDxXUiyFRV8S61wsBIhItrLa+fRR3kxeeceOW+hD/lC9zVPtw4A1I/woaehZEa582yOo06yB1BvFOA7G1kBkfcaQA6N8kz7CdkCO+R6Wga9wvgrHgLPrc2tyLt1E+BLh72K6tcCuEn/xQjycTi/qq3YJjEhqr8YasYoQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437427; c=relaxed/simple; bh=Hgxy6FdJQ7O+fQOvNMrCET1qN+6z3N1fi25yF/BObbw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hOeEgUYRMp84gzw8hQla5UDAaO5LWlQ/UI0wBSaTAMDI+Msf3Vb/v0/LgV0G+4tQ72wICDnvZI7WJJP7qre+SY/gzMouwQf8kWqdCINxbTT1k9VdgjSa4te343yOxyNqglgtpdzjG8P9ge13SZO7TD8R7ocVGBtnaM0n6MvRTpA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=L2BW4jfG; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="L2BW4jfG" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B898726CF; Thu, 3 Sep 2026 14:08:48 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1788437329; bh=Hgxy6FdJQ7O+fQOvNMrCET1qN+6z3N1fi25yF/BObbw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=L2BW4jfG6ehyByQ/puXf2LkM84vXlDnTj2OgRhdtYlqNuwAKb3tMeEQoJ4zEJNhI4 Hmtq6yfkWOUosdMr3Pq7YauB2Et2I1Y1OkljO48wW3kBxEzIfmC4XCYwj9vEtnCdzx zWWMzehagattrIpeUNB0JBPUutcD1ZF3YDxU08xo= From: Tomi Valkeinen Date: Thu, 03 Sep 2026 15:09:52 +0300 Subject: [PATCH 02/10] dt-bindings: display: ti,am65x-dss: Simplify binding Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260903-tidss-pre-beagley-v1-2-93928baa8b12@ideasonboard.com> References: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> In-Reply-To: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> To: Devarsh Thakkar , Swamil Jain , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4126; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=Hgxy6FdJQ7O+fQOvNMrCET1qN+6z3N1fi25yF/BObbw=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBqmWOmgvHMB0dpjEpjYIIxN6urd4JR9rEl2ePSV 7OhdGTOynmJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCapljpgAKCRD6PaqMvJYe 9UaXD/0YZorUlbWtKjTQnoq87guoPLQEbZFArIocQ/6J54TbeQPPEgntP72kJeYsP1Pa/5XYYZv fl4eglcaX0MsAISveep+C83LEZlGEGW8BuvlNTtCNPnGh9a0i9k+0g2/dEQC5Yzww9i4+b+fqnB A5tQZCQoWxmDe8/IP9pIFT8d3TJz49VqQhWFYJSnyJNLxdkYdEwgRRIgmep2y3G5QHjiRUZ8aQr /dKlvplYGWX7JqWxn4HqoTuk0Fbxt64pDFl2nOO+2KvOBkcz5zNM2/XrGCDld1XyaRSbYH2AVs3 qNOfxLvHUhQrkurJ6J02z45H/R39FQ1z37ahHqQEPCoh7XOeS/4JSsGqZD24xkLCprznkBd6Zi7 WqBXnEDMkmh9T/u9ii6nZzTiCeX+w+hKekj99/AUTJBQ87JaemXZbB1GTYhZLuNvCvA9/h90HIW D6mHzK3jn5nqkRw8D1hx8NYWdcynoLVSgqBdTW9eq1pGGFARyr9+3l5dtrUouEFRvt69rIyFAP8 Yujv7VmNzKWKUE3JzrxDG/jSDNYwf1h4GmDWqv6jBvFE3NlMJLB/kbiab7+I/58bpsOgjRwvIGV fboAzJHx35LIfAwcRDz/NTBzhkxsmL9IjI5XguKC1Q4JVrLFu3LRInUAtE5lMN0N07af1HuAL5R a/hCGxJLD5VeHwQ== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 In principle the DT binding for the DSS IP should mainly cover the DSS IP. The current binding also covers the SoC integration topics outside the DSS, mainly via the endpoint related rules and descriptions. A more recent SoC, AM62P, has two instances of the DSS IP, and while both DSS IPs are identical, they are integrated slightly differently (e.g. which DSS output goes to an in-SoC DSI bridge, which goes to DPI pins, etc.). To make the bindings usable for both DSS instances, relax the binding slightly: remove the explicit endpoint rules, and generalize the descriptions. Reviewed-by: Rob Herring (Arm) Signed-off-by: Tomi Valkeinen --- .../bindings/display/ti/ti,am65x-dss.yaml | 55 ++++++++----------= ---- 1 file changed, 20 insertions(+), 35 deletions(-) diff --git a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml= b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml index 4e9e441308cc..db7d3d216b64 100644 --- a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml +++ b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml @@ -12,12 +12,21 @@ maintainers: - Tomi Valkeinen =20 description: | - The AM625 and AM65x TI Keystone Display SubSystem has two output - ports and two video planes. In AM65x DSS, the first video port - supports 1 OLDI TX and in AM625 DSS, the first video port output is - internally routed to 2 OLDI TXes. The second video port supports DPI - format. The first plane is full video plane with all features and the - second is a "lite plane" without scaling support. + The Display Subsystem (DSS) used in e.g. AM65x and AM625 SoCs has two ou= tput + video ports (VP) and two video planes. The integration varies from SoC t= o SoC, + affecting the routing of the video ports. + + The first plane is full video plane with all features and the second is a + "lite plane" without scaling support. + + On AM65x, the first VP has an integrated OLDI TX, thus the first output = port + is OLDI output. The second VP is routed to external MIPI DPI pins. + + On AM625, the first VP is connected to two OLDI TX instances, and the se= cond + VP is routed to external MIPI DPI pins. + + On AM62A7, the first VP is tied off in the SoC, and the second VP is rou= ted to + external MIPI DPI pins. =20 properties: compatible: @@ -85,34 +94,15 @@ properties: properties: port@0: $ref: /schemas/graph.yaml#/properties/port - description: - For AM65x DSS, the OLDI output port node from video port 1. - For AM625 DSS, the internal DPI output port node from video - port 1. - For AM62A7 DSS, the port is tied off inside the SoC. - properties: - endpoint@0: - $ref: /schemas/graph.yaml#/properties/endpoint - description: - For AM625 DSS, VP Connection to OLDI0. - For AM65X DSS, OLDI output from the SoC. - - endpoint@1: - $ref: /schemas/graph.yaml#/properties/endpoint - description: - For AM625 DSS, VP Connection to OLDI1. - - anyOf: - - required: - - endpoint - - required: - - endpoint@0 - - endpoint@1 + description: | + AM65x: OLDI output from video port 1 + AM62A7: Not available, tied off inside the SoC + Other SoCs: Parallel video from video port 1 =20 port@1: $ref: /schemas/graph.yaml#/properties/port description: - The DSS DPI output port node from video port 2 + Parallel video from video port 2 =20 ti,am65x-oldi-io-ctrl: $ref: /schemas/types.yaml#/definitions/phandle @@ -168,11 +158,6 @@ allOf: then: properties: oldi-transmitters: false - ports: - properties: - port@0: - properties: - endpoint@1: false =20 required: - compatible --=20 2.43.0 From nobody Sat Sep 26 08:02:12 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6C0D14189DE; Thu, 3 Sep 2026 12:10:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437428; cv=none; b=qxF2Lt/OCXvVPzw1+Xbe4xSYzEmSFzIeqJRmP+Qn/3VuT36Jkq4S1u/t7d6hcFQ6DEJmem+XM2yXe9Jtz2F+qP45sApDycxh3nfLcGFov1TKMfuPpPrwZsNV2wk4Vqk8oEtNh0Dh0zsiUyfYCBIf/Zuu46wxCZFS3k7EV3Q5vqA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437428; c=relaxed/simple; bh=DZTpN/Kyhf4bRkFzUAQGO14hUtawOjNVMmq4AUheIMo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ChWNpCow77usTzTu4myxT9WgOdIo5/KBe6P10DXxKubNzTmuNB+6z62TogH9b8MxCp89xE3EXQ9YJbDUTXKT3O70b6n7w5ZpaQpX7/4fEK6u0qmFcdNqGwHk+zhgseTCJqGnvaDzRfYrCmJHpyMKi0YAoBfU41/5/qXwo4PtENQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=gtBKyLFP; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="gtBKyLFP" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B61DF26D7; Thu, 3 Sep 2026 14:08:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1788437330; bh=DZTpN/Kyhf4bRkFzUAQGO14hUtawOjNVMmq4AUheIMo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gtBKyLFPHlGCYwkRafUb3up9btSAP4wM6Lt8d1P7qlHZuOKsU7vArxvwgxO3KjzMa j0yhXGsugiXuent58IH8kjgd0EyWt+RuO7wqmk9ScRFDE4l3DZi7sfQBP2TTzSBa2u 6FHqvLXNErKDG/shqBRJk9bB5pn+2D61yDddBt54= From: Tomi Valkeinen Date: Thu, 03 Sep 2026 15:09:53 +0300 Subject: [PATCH 03/10] dt-bindings: display: ti,am625-oldi: Add optional power-domain for OLDI Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260903-tidss-pre-beagley-v1-3-93928baa8b12@ideasonboard.com> References: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> In-Reply-To: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> To: Devarsh Thakkar , Swamil Jain , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen , Krzysztof Kozlowski X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1009; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=DZTpN/Kyhf4bRkFzUAQGO14hUtawOjNVMmq4AUheIMo=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBqmWOnmJTYMj0YgBALTZI/eS9kKNKF/Lk2QJVe4 THoGDNqDGeJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCapljpwAKCRD6PaqMvJYe 9a/uD/0U0fOvjSmcdjugqX7cCrroNsuwn1IIfFzxQLKkNJ/LezBqxszDHYa/DJVi140JF9AiDtH WTC8AKy8SCfFGEtE+iZpIzYyF45Miq0//NjoAabvcj3OQRGBtauXZL+c/JjKotMdk93nDRK9EGB EOlbN1v4Lo7b0HP/72SV7yitlJKsQSOSGUZNEMWAXeSOPd+wN+8ln04mNVuRMgwRyBWiKuYKGam Fj8EX2MVtPn6y8jjKCrTpD9JxBbYDrv+kTVgfp7hHTcYRZ3ymqoBOUMVeqi1LlU2EOkaG3427qz HlpgZb8GBSKI9ryawL/HwisP40Oa8sTKmt9cbpNN0t61qfnWBU6tU6KTLygbXn8RY2DfgexQMw2 kFdZUMxOMKoBVOaQdbh4wCnS4SJx3vw8MDE8qSNlOxKvPAe0kCA1lpSYWaChhNroyBnUEPxjKrm aGdJko0au3au0E5K7ZjFvIBEozpxnKUlA3xIG2NHUAYgVKsqoJpIyUUGeyZ0FxR23SDWp3BT0vo OSw+/KrNq9qmI9/GSewHfucs8jp3AAMWFb8r+KBUo6Daw0++kmn3sm1VtBoOxI3Ski8/ZGfWpc8 seM84NuMNB4DRA8xpnfqq/iVKVX3SSxdcaz3+HrEfKysgPIqTjvY5oGvVkXhAT2t2yOjY0SQhA8 vS0XMIbjsul8PZw== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 On some SoCs the OLDI blocks belong to the same power-domain as the main DSS block, but on some more recent SoCs the OLDI blocks have a controllable power-domain. Add the power-domain to the DT binding. Acked-by: Krzysztof Kozlowski Signed-off-by: Tomi Valkeinen --- Documentation/devicetree/bindings/display/ti/ti,am625-oldi.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/devicetree/bindings/display/ti/ti,am625-oldi.yam= l b/Documentation/devicetree/bindings/display/ti/ti,am625-oldi.yaml index 8203ec5e5bb3..5dbf1f76dd3f 100644 --- a/Documentation/devicetree/bindings/display/ti/ti,am625-oldi.yaml +++ b/Documentation/devicetree/bindings/display/ti/ti,am625-oldi.yaml @@ -29,6 +29,9 @@ properties: clock-names: const: serial =20 + power-domains: + maxItems: 1 + ti,companion-oldi: $ref: /schemas/types.yaml#/definitions/phandle description: --=20 2.43.0 From nobody Sat Sep 26 08:02:12 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CD8714A263C; Thu, 3 Sep 2026 12:10:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437431; cv=none; b=DuPuIYQPh9sWw3MbOPV9RXfU9YFF5QQbuNXRyNG8MQr2Gl7oopSiJ9nDQci41RulKpN6uqL5x+/kkAvWmCrjNm5CWqx4e+KC7SD02d7i+K2nFAUOfL9nzVaugOYkfypDSYkoc4FRpgu4AQ/Ob5MFFTYNOQH/Cmr1RNxBACdj5M8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437431; c=relaxed/simple; bh=UBQwu7EkiRyHayJZV5qVkvS/RwjElam8/bIbMRrRAvU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k17GXg+GaZccRCkjsTBqmNyuysK1XwJ7K1sjyze1P5AXB6IPmJHdED0mctpJOYkIMySWaHbQkJIAw8E39cHRWOAZ/BYVyjjMUpanWqnJlttThOejwF0HCkHZoBnvzcC6UGRuhn8fkP3o8FbMstLC0aZ/nnh06ElsQ7bq7erIGeI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=r1Lx73P5; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="r1Lx73P5" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C2E442704; Thu, 3 Sep 2026 14:08:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1788437331; bh=UBQwu7EkiRyHayJZV5qVkvS/RwjElam8/bIbMRrRAvU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=r1Lx73P5L/JpFPfqrnTJtvidZ8nW9GWqbIlhfzv9SBcFcoCa1mH+PwJsHUOsRpzn0 5ElgUerTPodREuN2iZkVJk4bfBG9a5K241Aj1VZOPaluMMaG6SoaKA4zLo6Rb8t5Ol pM4vKHBlP1bCbNl2DHLR1YifmjiVjA68gwfnDDGQ= From: Tomi Valkeinen Date: Thu, 03 Sep 2026 15:09:54 +0300 Subject: [PATCH 04/10] drm/tidss: Remove extra pm_runtime_mark_last_busy Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260903-tidss-pre-beagley-v1-4-93928baa8b12@ideasonboard.com> References: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> In-Reply-To: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> To: Devarsh Thakkar , Swamil Jain , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=797; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=UBQwu7EkiRyHayJZV5qVkvS/RwjElam8/bIbMRrRAvU=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBqmWOnZ1U4kjcF0QjKkh5qSqRtbscA5mRPgtZfk 5Z8JFMQMOWJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCapljpwAKCRD6PaqMvJYe 9SQhD/wORDCV0Jyc3U94bzIlSY7YITgBId6KPfMs6+w/vb3gl7JMF6vdiW3rbl05AGNYmXzwRvZ JHuQEE3Wn/+l0Eddl+xe3BS0gN9mCSsCTfZNzl+njWP49Q7gRsnjLx7z1hx5DEuGJJ/HChpb8QT 2UrqG3+xI2xWLdsR+D9+mTnWQULoQpz+wihK4BpV1fai6ouDVYAAz9mMmbPNtNHtA69EaYRb0+Y Lp+3Ej/gF3B7wuiA8olEcKvn2QrW66ww/IFXtndjIe6jjrJ3a1M2JlgFGgHHr8U+gGqBVrPn0w6 /HYw7ErG6xHoR0ksvBCmj2DDI6Rm5mJDI5IS7mScVwTM/CDJIS7koIrwEQXWaUfnX1n/KI20AiX HV94Teltne/hurR9L0Whp8BsREjbpIfYijbs7zzNs3HFhYJHuTB/Xde5YLSbGGZKOaiH7Q35DWL hTjw73IBU8YUFXqGqEeN2PsgIDBhkMgyBFaPdVd+U1gQDZKjIylMqEXqwJMDz8KpSqfBUvP6Mva ChrwC/6G0hLCqGuW7F9RAeqsMCmNbgJGJQ9Ux+U6p1gR8Y1ZUaDMPOx3vaAxGUQHAgOxCcXWCd1 QK35yliR/4uTS88yCN921rbL49tYQxl+ty+2ErqDuQwVWRHFjVlB7fzRHGPbvur2aWvmW7GkHwX N5EXOBS4U0cDluQ== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 pm_runtime_put_autosuspend() calls pm_runtime_mark_last_busy(), so no need to call pm_runtime_mark_last_busy() explicitly in the driver. Tested-by: Swamil Jain Reviewed-by: Swamil Jain Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/tidss/tidss_drv.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tids= s_drv.c index 1c8cc18bc53c..5cb3e746aeb3 100644 --- a/drivers/gpu/drm/tidss/tidss_drv.c +++ b/drivers/gpu/drm/tidss/tidss_drv.c @@ -42,8 +42,6 @@ void tidss_runtime_put(struct tidss_device *tidss) { int r; =20 - pm_runtime_mark_last_busy(tidss->dev); - r =3D pm_runtime_put_autosuspend(tidss->dev); WARN_ON(r < 0); } --=20 2.43.0 From nobody Sat Sep 26 08:02:12 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A73A64A2635; Thu, 3 Sep 2026 12:10:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437431; cv=none; b=SMAT0m39nF0149JjZ9RivtQ8of3MIHryxBskmzJbJFAIXT9DYN7ScVE68g7oE5buFLpRKtzMZeay5mDOzW2vk96/b4YFZbCkvsCe1JYfIL3EI1iX22shU79sjte8K8UjMxFBem9627Yw4vO5ypnjjHq35RXy2pavPRO6krR25LY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437431; c=relaxed/simple; bh=UvHdagbTwCCe3LWLChhWVp46JCYRvLJb6Ptg6//6bMw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Lh/0TXWSfpH+G9GyYXyOGxbKY2i/MDkStdbXtZxuIKbT5StRjMMSI3t0w57vuZe5fo1FRxP5/RJN+nfjKf220Td9klniSXCNgatfuQmcK2UJEGIDCSs1Ivjy3p7JUx/L5BlF+t8eF5A1nNccmlg+teq7fw6EJOKUXYJadoCq0K0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=ZB1utidK; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="ZB1utidK" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C17E7280D; Thu, 3 Sep 2026 14:08:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1788437332; bh=UvHdagbTwCCe3LWLChhWVp46JCYRvLJb6Ptg6//6bMw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=ZB1utidKsV2TmqnhswUpSXMuZxuzfR2SQ9ImBeg3qIeHn2byrNnYEGJpGBkL6No0z Oc7qjdrVAXI4BCE61gKso/H/K9vg432yE749m7L6p+ac/UrlhITjidiQU6N0AvgQ7c IDZ9i9D1h65i4z0E4MLkaAb7Qsxgdfwyy70XRBUs= From: Tomi Valkeinen Date: Thu, 03 Sep 2026 15:09:55 +0300 Subject: [PATCH 05/10] drm/tidss: oldi: Remove define for unused register OLDI_LB_CTRL Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260903-tidss-pre-beagley-v1-5-93928baa8b12@ideasonboard.com> References: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> In-Reply-To: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> To: Devarsh Thakkar , Swamil Jain , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=780; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=UvHdagbTwCCe3LWLChhWVp46JCYRvLJb6Ptg6//6bMw=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBqmWOnQQE2GB842vtnlyKLRE1xvbDux8h6KHfdm ZGW+Q3hMHKJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCapljpwAKCRD6PaqMvJYe 9QlMD/4qgYBtFeE9l98mB6BooNKopOctD3+GCQ7Cnbg+hgKgjoAl3fMJ7XkgoQqgF48UZsT5uiv Wkj6GxOE6UCgW55KPPLxZx+id1CeF7yohnuoMMadG3LbCxSo3eyvg+2AImrVXxSWlig/uW3Dn8p VwECHTS0nzNsbGupisrzTjixJx6DSS+R8R0bmzfcX6h0Hm5TKl8Bl2KshhiHyfBAVn5VgZGHodF UyqqjVSANCwljtedRDdVQtZrxNQcrXnPUv5AlCwEulZFf6oIhoQ+4rgp2iFBG7KJQ4G7WZqCPRI 5FoOWRY9uNhuHaOXTw51TW2vp2HDENazARJrvZGYitsBkesTrYOypOf8r2DXbkq4Pjz9L7TJyV8 ULVR9mSynz82Z8DPAX1vSte4I8mHG2+Q4XOYB5fKyxY6zUpBFMZ0THD4JiLZDZOxZNlOoNe2WqY bIzpoIt6exZ2QkJyEYd1ozEk+yKdgtQ3OOjOfkA66uzw1hNm9es/2RoGyykeDClTPHXLAGn1na1 6Mtn78gM3of/5t5/AKMgYCcQoyyrWsaye8MQNeP5/Lc+AoJS6PR8T9y83VXeBj/bKZ/WtbrlKKw fz3DANnt/+dH+74eEzLh+FvV2dYTC56iE42A5ZB7tARyoqle2o4G2fGP7VOVTnb+YlaF9dLhEfv SGcP7zo3zwY4BVA== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 OLDI_LB_CTRL define is not used, and doesn't seem to exist at least on some SoCs. Let's remove the define. Tested-by: Swamil Jain Reviewed-by: Swamil Jain Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/tidss/tidss_oldi.h | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/gpu/drm/tidss/tidss_oldi.h b/drivers/gpu/drm/tidss/tid= ss_oldi.h index 8cd535c5ee65..a361e6dbfce3 100644 --- a/drivers/gpu/drm/tidss/tidss_oldi.h +++ b/drivers/gpu/drm/tidss/tidss_oldi.h @@ -20,7 +20,6 @@ struct tidss_oldi; =20 /* Register offsets */ #define OLDI_PD_CTRL 0x100 -#define OLDI_LB_CTRL 0x104 =20 /* Power control bits */ #define OLDI_PWRDOWN_TX(n) BIT(n) --=20 2.43.0 From nobody Sat Sep 26 08:02:12 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 02B584A1DF3; Thu, 3 Sep 2026 12:10:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437436; cv=none; b=Mx9U2jur/g814IJYRYgwn7qpUuISaoy1urr2ZPs9vUQjoisKsvjtO7+AuTSM8fXiBSvMeTYsuu8O3C6q4yjGq5GbgMewH12lwnY/A2qlgqUacw70QhOxgCZAmmOEwy6+kSb04ez2A5hwUpW/2RNwgq/+Utam7eo7XyMMmPrf0fE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437436; c=relaxed/simple; bh=2T++4iJ+cQPxm9MFchu48l1xyIaT/Ek/MR7tM7WbqYU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GLSAhHPgfHLifZYiV42+NfaMGVaUPV0cSDLA+N/FgJnJB0VUrqJbl6Ogjmsyi7Wz5sV2VbRJnBXzKpM+B9MRwuNufFBQz0o7YughvAv0kx3QboMs40lgpdZGQ6p+xy2ziWHQ/c09WxJh3v8eT0BnXdz25dr/kit8GCUmG+hxnKI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=YiTEdbGG; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="YiTEdbGG" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id BE76A2822; Thu, 3 Sep 2026 14:08:52 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1788437333; bh=2T++4iJ+cQPxm9MFchu48l1xyIaT/Ek/MR7tM7WbqYU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YiTEdbGGjHthqdP5orqPYGkJMf4PwWdpHMOrbkM6GLqp1Ni4mvdxx8QFwGz4oDpJi iEeKNQO3UgcOiMgGaDHidqTEM837NZ2TSNE7vqQ+3zyx/+JaL+oNND1AqzE64gXvAd vt3+/PXRRJgRyMa/py0uqChZetCyuB3omIDPrC/g= From: Tomi Valkeinen Date: Thu, 03 Sep 2026 15:09:56 +0300 Subject: [PATCH 06/10] drm/tidss: Add mechanism to detect DPI output Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260903-tidss-pre-beagley-v1-6-93928baa8b12@ideasonboard.com> References: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> In-Reply-To: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> To: Devarsh Thakkar , Swamil Jain , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=9039; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=2T++4iJ+cQPxm9MFchu48l1xyIaT/Ek/MR7tM7WbqYU=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBqmWOoEFkSs/w6a0ZjeFYNNkAnTx7ZBvC86s3Jk dh8NWUJbvOJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCapljqAAKCRD6PaqMvJYe 9fiiEACAlgduW61/5X5sEfSx6zY9C69iMjygeD9Ch/ZMWZu5TlgODHoQmCY//FYyc8F7KfixFQN Ztyg5mGH8suCKOkNlhioSbBZfzcxREOo/bOyc38BSFttG0kPa3771adZ7tjGHM26ZCu+XZ+DI0C arqByCOl3XpoIoJnumWOv8XoteLuJbow5W6Lj8eyu4mUsdijhuvPDGN4aFgYYeuEA5+RLi4T+zG kMpDLnPkc/k/2+L0LsLWos0WzGAlhfPylTb53YfoX+u2tJZ3Oys7uXOiWm7+LO2pR9qvUlS0hdH K0l3IxOnBF+EfSo+avcRuC7cn1xZ+5xqnTOCpyYj+2OOp/HcrXjgST1gWDuVkl6FOkQj3dlxQnn V8YaeOrLS+ZdHNZ9jlOkX+TWRClj3Dkzm6pIxz0K6M5c1FVbCm8ifQjYgO82wMZwO6oArgWWPyI Sa8iinFNlZ36xmqVevIdBYm3g128lhPcAgNXSz7KyRit8aHrYa1jlDuSqwSuMBz0k1dOTpsZc15 AaHkMn0ucuDATNMBW3hBUwEiLli8SpLi5irIZ8pgi13iSrKQ+UcJVoI7iLYOsIMKfMuwmROXBjk vNn1N13vHYGke6wjsZzSoFdTAy6uBNTAKe6YvBYOjgpW9+xMX9HhQMmh0J3C5Xa/Uemp/JX0z3J I+/idBsq6Ec69mQ== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 There are situations where the driver needs to know if the output is going to the DPI output or not. There is no trivial way to get this information, as there is no "DPI bridge". We can only find this out in reverse: check if the output is NOT DPI, and if that is negative, then it must be DPI. At the moment we have two non-DPI outputs: DSI and OLDI. DSI always has "ti,j721e-dsi" DSI bridge connected to the DSI, so we can use that for checking. OLDI doesn't have a compatible property, but we can check if the DT node has "oldi-transmitters" node as a parent, and the dss node itself as a grand-parent. There's also a special case for OLDI, the AM62x OLDI, which uses an older design that requires a special case in the detection. If the output is not connected to either of the above, it must be DPI. Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/tidss/tidss_crtc.c | 10 ++++-- drivers/gpu/drm/tidss/tidss_crtc.h | 4 ++- drivers/gpu/drm/tidss/tidss_dispc.c | 5 ++- drivers/gpu/drm/tidss/tidss_dispc.h | 3 +- drivers/gpu/drm/tidss/tidss_kms.c | 70 +++++++++++++++++++++++++++++++++= +++- 5 files changed, 85 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_crtc.c b/drivers/gpu/drm/tidss/tid= ss_crtc.c index 400329aa2200..ae9c66831b6c 100644 --- a/drivers/gpu/drm/tidss/tidss_crtc.c +++ b/drivers/gpu/drm/tidss/tidss_crtc.c @@ -192,7 +192,8 @@ static void tidss_crtc_atomic_flush(struct drm_crtc *cr= tc, return; =20 /* Write vp properties to HW if needed. */ - dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, false); + dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, false, + tcrtc->dpi_output); =20 /* Update plane positions if needed. */ tidss_crtc_position_planes(tidss, crtc, old_crtc_state, false); @@ -235,7 +236,8 @@ static void tidss_crtc_atomic_enable(struct drm_crtc *c= rtc, if (r !=3D 0) return; =20 - dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, true); + dispc_vp_setup(tidss->dispc, tcrtc->hw_videoport, crtc->state, true, + tcrtc->dpi_output); tidss_crtc_position_planes(tidss, crtc, old_state, true); =20 /* Turn vertical blanking interrupt reporting on. */ @@ -414,7 +416,8 @@ static const struct drm_crtc_funcs tidss_crtc_funcs =3D= { =20 struct tidss_crtc *tidss_crtc_create(struct tidss_device *tidss, u32 hw_videoport, - struct drm_plane *primary) + struct drm_plane *primary, + bool dpi_output) { struct tidss_crtc *tcrtc; struct drm_crtc *crtc; @@ -427,6 +430,7 @@ struct tidss_crtc *tidss_crtc_create(struct tidss_devic= e *tidss, return ERR_PTR(-ENOMEM); =20 tcrtc->hw_videoport =3D hw_videoport; + tcrtc->dpi_output =3D dpi_output; init_completion(&tcrtc->framedone_completion); =20 crtc =3D &tcrtc->crtc; diff --git a/drivers/gpu/drm/tidss/tidss_crtc.h b/drivers/gpu/drm/tidss/tid= ss_crtc.h index 040d1205496b..65df220698f6 100644 --- a/drivers/gpu/drm/tidss/tidss_crtc.h +++ b/drivers/gpu/drm/tidss/tidss_crtc.h @@ -20,6 +20,7 @@ struct tidss_crtc { struct drm_crtc crtc; =20 u32 hw_videoport; + bool dpi_output; =20 struct drm_pending_vblank_event *event; =20 @@ -44,5 +45,6 @@ void tidss_crtc_error_irq(struct drm_crtc *crtc, u64 irqs= tatus); =20 struct tidss_crtc *tidss_crtc_create(struct tidss_device *tidss, u32 hw_videoport, - struct drm_plane *primary); + struct drm_plane *primary, + bool dpi_output); #endif diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c b/drivers/gpu/drm/tidss/ti= dss_dispc.c index 58d5eb033bdb..c21ac3f51720 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.c +++ b/drivers/gpu/drm/tidss/tidss_dispc.c @@ -448,6 +448,7 @@ static const u16 *dispc_common_regmap; =20 struct dss_vp_data { u32 *gamma_table; + bool dpi_output; }; =20 struct dispc_device { @@ -2770,8 +2771,10 @@ static void dispc_vp_set_color_mgmt(struct dispc_dev= ice *dispc, } =20 void dispc_vp_setup(struct dispc_device *dispc, u32 hw_videoport, - const struct drm_crtc_state *state, bool newmodeset) + const struct drm_crtc_state *state, bool newmodeset, + bool dpi_output) { + dispc->vp_data[hw_videoport].dpi_output =3D dpi_output; dispc_vp_set_default_color(dispc, hw_videoport, 0); dispc_vp_set_color_mgmt(dispc, hw_videoport, state, newmodeset); } diff --git a/drivers/gpu/drm/tidss/tidss_dispc.h b/drivers/gpu/drm/tidss/ti= dss_dispc.h index 739d211d0018..6f53d554259c 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.h +++ b/drivers/gpu/drm/tidss/tidss_dispc.h @@ -131,7 +131,8 @@ void dispc_vp_disable_clk(struct dispc_device *dispc, u= 32 hw_videoport); int dispc_vp_set_clk_rate(struct dispc_device *dispc, u32 hw_videoport, unsigned long rate); void dispc_vp_setup(struct dispc_device *dispc, u32 hw_videoport, - const struct drm_crtc_state *state, bool newmodeset); + const struct drm_crtc_state *state, bool newmodeset, + bool dpi_output); =20 int dispc_runtime_suspend(struct dispc_device *dispc); int dispc_runtime_resume(struct dispc_device *dispc); diff --git a/drivers/gpu/drm/tidss/tidss_kms.c b/drivers/gpu/drm/tidss/tids= s_kms.c index 70c14c3be10d..eefe2221bdde 100644 --- a/drivers/gpu/drm/tidss/tidss_kms.c +++ b/drivers/gpu/drm/tidss/tidss_kms.c @@ -122,6 +122,68 @@ static const struct drm_mode_config_funcs mode_config_= funcs =3D { .atomic_commit =3D drm_atomic_helper_commit, }; =20 +static const char * const tidss_internal_bridge_compatibles[] =3D { + "ti,j721e-dsi", +}; + +/* + * Detect whether the bridge is internal to the SoC or not. + * We detect this via two means: + * - If the bridge's of_node has a compatible, compare to known internal v= alues. + * - If the bridge is a grand-child of DSS, and has "oldi-transmitters" pa= rent. + */ +static bool tidss_is_bridge_internal(struct tidss_device *tidss, + struct drm_bridge *bridge) +{ + struct device_node *parent, *grand_parent; + bool is_internal; + + if (WARN_ON(!bridge->of_node)) + return false; + + for (unsigned int i =3D 0; + i < ARRAY_SIZE(tidss_internal_bridge_compatibles); ++i) { + if (of_device_is_compatible(bridge->of_node, + tidss_internal_bridge_compatibles[i])) + return true; + } + + parent =3D of_get_parent(bridge->of_node); + grand_parent =3D of_get_parent(parent); + + is_internal =3D parent && grand_parent && + tidss->dev->of_node =3D=3D grand_parent && + of_node_name_eq(parent, "oldi-transmitters"); + + of_node_put(grand_parent); + of_node_put(parent); + + return is_internal; +} + +/* + * Detect whether the videoport's output goes to the DPI output or not. Th= ere is + * no "DPI bridge", so we have to find this out in reverse: check if the o= utput + * is NOT DPI, and if that is negative, then it must be DPI. + */ +static bool tidss_is_dpi_output(struct tidss_device *tidss, u32 hw_videopo= rt, + struct drm_bridge *bridge) +{ + /* + * On AM65x the OLDI TX is modeled as a part of the DSS itself, on VP0. + * On other SoCs OLDI TX is a separate bridge. As there is no DT node + * for the OLDI TX on AM65x, we cannot detect this from the DT data, and + * have to special-case it here. + */ + if (tidss->feat->subrev =3D=3D DISPC_AM65X && hw_videoport =3D=3D 0) + return false; + + if (!bridge) + return true; + + return !tidss_is_bridge_internal(tidss, bridge); +} + static int tidss_dispc_modeset_init(struct tidss_device *tidss) { struct device *dev =3D tidss->dev; @@ -133,6 +195,7 @@ static int tidss_dispc_modeset_init(struct tidss_device= *tidss) u32 hw_videoport; struct drm_bridge *bridge; u32 enc_type; + bool dpi_output; }; =20 const struct dispc_features *feat =3D tidss->feat; @@ -149,6 +212,7 @@ static int tidss_dispc_modeset_init(struct tidss_device= *tidss) struct drm_panel *panel; struct drm_bridge *bridge; u32 enc_type =3D DRM_MODE_ENCODER_NONE; + bool dpi_output; int ret; =20 ret =3D drm_of_find_panel_or_bridge(dev->of_node, i, 0, @@ -160,6 +224,8 @@ static int tidss_dispc_modeset_init(struct tidss_device= *tidss) return dev_err_probe(dev, ret, "port %d probe failed\n", i); } =20 + dpi_output =3D tidss_is_dpi_output(tidss, i, bridge); + if (panel) { u32 conn_type; int ret; @@ -205,6 +271,7 @@ static int tidss_dispc_modeset_init(struct tidss_device= *tidss) pipes[num_pipes].hw_videoport =3D i; pipes[num_pipes].bridge =3D bridge; pipes[num_pipes].enc_type =3D enc_type; + pipes[num_pipes].dpi_output =3D dpi_output; num_pipes++; } =20 @@ -230,7 +297,8 @@ static int tidss_dispc_modeset_init(struct tidss_device= *tidss) tidss->planes[tidss->num_planes++] =3D &tplane->plane; =20 tcrtc =3D tidss_crtc_create(tidss, pipes[i].hw_videoport, - &tplane->plane); + &tplane->plane, + pipes[i].dpi_output); if (IS_ERR(tcrtc)) { dev_err(tidss->dev, "crtc create failed\n"); return PTR_ERR(tcrtc); --=20 2.43.0 From nobody Sat Sep 26 08:02:12 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 798D64A2E3B; Thu, 3 Sep 2026 12:10:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437436; cv=none; b=ap7PfJprU1aBHFuOfU1UBqqkkxbBvL+Dj01fmDNbjIMmfKAcMJmJZbROxDcCVRqhPc1xNtohNjMAjwlKWGq9Aq9ai/++fjyQVFL+jV7XmNXRW4WfTgDp5kZf8K2M1d/GIpitnl+TahXtpVUGURTQ5hpb9xADjwg4i7fPK0CBbM0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437436; c=relaxed/simple; bh=TgaWdc2v14syQKTjd0P+G00v2RLl1wdAxEUGkvtCiXc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qiDvRcJxQTmL+h8oEtkVaa0yO6UMm52Q6RJG92D7KLrjc5DSPEvz8JW55kPIjHa+2pKUIVsdBFX8Cum36Hxpj+nI3C7ORCoit6MqGiK3/iWTBNZAFpRx1eOzwlHtYhOKC3qDAV4fGG3IOxqmo1dkgckmGOUiU0WIE0PwoEnoZT8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=er0/TQg8; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="er0/TQg8" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id BB01E2814; Thu, 3 Sep 2026 14:08:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1788437334; bh=TgaWdc2v14syQKTjd0P+G00v2RLl1wdAxEUGkvtCiXc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=er0/TQg86FDr7WZxXHtPjHYpR9s/ObtBUZ3WT/1pwQF8Ne+XDC6fZrme4a+D0+wXF 76pHKNSs6cF0XIEQYQIy5kAzZQmrgsV77CVqQJUj/J7S1iKKpAx2RGYbEWjMkcPUqz WKVX76JS6+UpRuEIoeyiORPpQzsb+ynI7OF3KY/A= From: Tomi Valkeinen Date: Thu, 03 Sep 2026 15:09:57 +0300 Subject: [PATCH 07/10] drm/tidss: Add support for DPIENABLE bit Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260903-tidss-pre-beagley-v1-7-93928baa8b12@ideasonboard.com> References: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> In-Reply-To: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> To: Devarsh Thakkar , Swamil Jain , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=4387; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=TgaWdc2v14syQKTjd0P+G00v2RLl1wdAxEUGkvtCiXc=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBqmWOojsM7Rr8jvQpvQ/LJr6PFpUfPukaw+TSEg MmpHK0RXheJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCapljqAAKCRD6PaqMvJYe 9SBRD/4nOd5hscQqQLxM+TwYjW7H5HYCEKiCG7SF+R1G2EfRdrpmijRb3DjHkzqy8WK4GMRqKX8 247p0MvdRELWT6RiWWCRKKawnc3l2TdMbH4XMe5FhxVrrehEpuUmOD2SpDVgyvNXXDmfNkcoB+t LfkSk5FAza5e4xOmvqaWXnr5LRpCV5S3Nh6KqD5+zT4X9PnCxZht2GY2Xf+s/Wd9AALzEd4WTj7 dceAHgFaaD1bPsB1EexJ+IY0/zQVRiBhhDoehZWyJsRBscL2i20C/uYhl4z4UC6G9SmUn75EVuD SBLZU03O0219jFHiYScvAcRaJ7kGGiVd5K2My3fDmJs+Uc4mvkfAoDwM8kv6xF/pTDR7AgWOZsf CGh+omVOO8Cia16A0yGjPn6ZHMZekFwZ/EUFxRFm0J96YKNMARTqYL6EH2X7WF9uUvRNMzsg/5R oTgCCZ5Hc0laR9hc4upc//GPgS+XjwRaErq3SelxdvAdPm4avkMtYM2/NE2nGNqeLNXlX3UkBQ3 MmoN8Zm1L2L09UMuTOd4FZd1HCGoJq4VJeYnRHWjf8zvdyVXB945H9vtFfE9FPmiPhAr5eVx+De Ap2FtoRQHxPBKjDAkkxsy27q3fU0cvgYLFIqD4jWpCEOADqjImppd7nrQsDV5l3UwpoRkx/MU8R BvQXSLsZ8T4yNdA== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 Many (or even all?) K3 SoCs have DSS VP_CONTROL.DPIENABLE bit described in their documentation. This bit controls whether the DPI block is enabled, and is set to 1 by default (i.e. DPI is enabled at HW reset). However, in almost all SoCs the setting does not actually do anything, and at the moment the bit is not managed by the driver. The exception is AM62L, which does have DPIENABLE connected, and disabling the DPI block when it is not in use provides power savings. Let's add a new feature flag for this, 'has_vp_control_dpienable', and implement the support. Disable DPIENABLE for all videoports at resume time, so that it is 0 by default. Specifically enable and disable it in dispc_vp_prepare() and dispc_vp_unprepare() for DPI output. Tested-by: Swamil Jain Reviewed-by: Devarsh Thakkar Reviewed-by: Swamil Jain Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/tidss/tidss_dispc.c | 23 +++++++++++++++++++++-- drivers/gpu/drm/tidss/tidss_dispc.h | 2 ++ drivers/gpu/drm/tidss/tidss_dispc_regs.h | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c b/drivers/gpu/drm/tidss/ti= dss_dispc.c index c21ac3f51720..7efcdf7679ac 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.c +++ b/drivers/gpu/drm/tidss/tidss_dispc.c @@ -442,6 +442,8 @@ const struct dispc_features dispc_am62l_feats =3D { }, =20 .vid_order =3D {0}, + + .has_vp_control_dpienable =3D true, }; =20 static const u16 *dispc_common_regmap; @@ -1201,6 +1203,11 @@ void dispc_vp_prepare(struct dispc_device *dispc, u3= 2 hw_videoport, mode->crtc_hdisplay - 1) | FIELD_PREP(DISPC_VP_SIZE_SCREEN_VDISPLAY_MASK, mode->crtc_vdisplay - 1)); + + if (dispc->feat->has_vp_control_dpienable && + dispc->vp_data[hw_videoport].dpi_output) + VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 1, + DISPC_VP_CONTROL_DPIENABLE_MASK); } =20 void dispc_vp_enable(struct dispc_device *dispc, u32 hw_videoport) @@ -1217,6 +1224,11 @@ void dispc_vp_disable(struct dispc_device *dispc, u3= 2 hw_videoport) =20 void dispc_vp_unprepare(struct dispc_device *dispc, u32 hw_videoport) { + if (dispc->feat->has_vp_control_dpienable && + dispc->vp_data[hw_videoport].dpi_output) + VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 0, + DISPC_VP_CONTROL_DPIENABLE_MASK); + if (dispc->feat->vp_bus_type[hw_videoport] =3D=3D DISPC_VP_OLDI_AM65X) { dispc_vp_write(dispc, hw_videoport, DISPC_VP_DSS_OLDI_CFG, 0); =20 @@ -2436,10 +2448,17 @@ static void dispc_vp_init(struct dispc_device *disp= c) =20 dev_dbg(dispc->dev, "%s()\n", __func__); =20 - /* Enable the gamma Shadow bit-field for all VPs*/ - for (i =3D 0; i < dispc->feat->num_vps; i++) + for (i =3D 0; i < dispc->feat->num_vps; i++) { + /* Enable the gamma Shadow bit-field for all VPs*/ VP_REG_FLD_MOD(dispc, i, DISPC_VP_CONFIG, 1, DISPC_VP_CONFIG_GAMMAENABLE_MASK); + + if (dispc->feat->has_vp_control_dpienable) { + /* Disable DPIENABLE for all VPs */ + VP_REG_FLD_MOD(dispc, i, DISPC_VP_CONTROL, 0, + DISPC_VP_CONTROL_DPIENABLE_MASK); + } + } } =20 static void dispc_initial_config(struct dispc_device *dispc) diff --git a/drivers/gpu/drm/tidss/tidss_dispc.h b/drivers/gpu/drm/tidss/ti= dss_dispc.h index 6f53d554259c..0fbfb86adfbf 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.h +++ b/drivers/gpu/drm/tidss/tidss_dispc.h @@ -92,6 +92,8 @@ struct dispc_features { u32 num_vids; struct dispc_vid_info vid_info[TIDSS_MAX_PLANES]; u32 vid_order[TIDSS_MAX_PLANES]; + /* The DSS has VP_CONTROL.DPIENABLE bit */ + bool has_vp_control_dpienable; }; =20 extern const struct dispc_features dispc_k2g_feats; diff --git a/drivers/gpu/drm/tidss/tidss_dispc_regs.h b/drivers/gpu/drm/tid= ss/tidss_dispc_regs.h index 382027dddce8..13ff00696c2e 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc_regs.h +++ b/drivers/gpu/drm/tidss/tidss_dispc_regs.h @@ -230,6 +230,7 @@ enum dispc_common_regs { =20 #define DISPC_VP_CONTROL 0x4 #define DISPC_VP_CONTROL_DATALINES_MASK GENMASK(10, 8) +#define DISPC_VP_CONTROL_DPIENABLE_MASK GENMASK(6, 6) #define DISPC_VP_CONTROL_GOBIT_MASK GENMASK(5, 5) #define DISPC_VP_CONTROL_ENABLE_MASK GENMASK(0, 0) =20 --=20 2.43.0 From nobody Sat Sep 26 08:02:12 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F0654A3D57; Thu, 3 Sep 2026 12:10:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437440; cv=none; b=gTzfgGi2FlZmWKF8hVKx3ekV2nFCy8zrGJNIV6QJrxmrqBjk6vfdjGAPy7HWklMdsVTZiCmRp9nCM151Z1FW83PiaWBLXUsLxmxA0g0h15zTdkqvFaR+nlqYNDrAEwNOmGDYnnpf9N3EinJNue9Qzb/jvFXa6r+FKHckXCT0eAw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437440; c=relaxed/simple; bh=rFvZjO1RFhJRljXnqUwhl6cExIU48JcwgpRoC/z58aQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S38rf9hGXSI9aTk90vQ0QHojvctZ/ZLtCVFT0139el8cQMCPABrAltzY2yTRohPzkmdaXjO5mm8WMhyVY+10OF1IhHPA7qq37Ucle399FvPwlQDHaJpWxwUNVJvaQzGaJbyehu5ee4CAJpgdr6ZMZ2d6SY6dN3yreXZfO/94vdE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=i7+QzDf7; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="i7+QzDf7" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B81FA287E; Thu, 3 Sep 2026 14:08:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1788437335; bh=rFvZjO1RFhJRljXnqUwhl6cExIU48JcwgpRoC/z58aQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=i7+QzDf7wuclFjtyJjoL7/eDSpwuyq6LDNhTT2oDpKGKJSDJmEU0oxY8ybTPPXpWl MsCjUgJWB2sVQe27dTjJH58yqoynJOxQQIwcw6rsE8tBV02eDEaOia3tzY9k0DAO9A KN+SOjoUuns3MVlFF/vpsoCyDqGqJ6ZyvW9YlyXU= From: Tomi Valkeinen Date: Thu, 03 Sep 2026 15:09:58 +0300 Subject: [PATCH 08/10] drm/tidss: oldi: Fix OLDI signal polarities Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260903-tidss-pre-beagley-v1-8-93928baa8b12@ideasonboard.com> References: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> In-Reply-To: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> To: Devarsh Thakkar , Swamil Jain , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=5041; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=rFvZjO1RFhJRljXnqUwhl6cExIU48JcwgpRoC/z58aQ=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBqmWOo6IPuNYueS1Ah/DIu22bFN89gjd9h/9P13 gnmM7y3GxyJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCapljqAAKCRD6PaqMvJYe 9S8UEACpuDjIDQXdqmZfabUKJEe4wgXVh9aS9TbMwIdg1ve/ImEVnBhUjx2/OLXUBg7wl1qR++Z Vky4h4E53+R7Y8mT9SmBp+gi4DvGn2Ju3Tlfn+vU1MUZ/LvHgbCHByH0MdRFekqleKmrzikr+Zt JRY4UgP8oSzKQFg2XlEh3dQSNYhyBqWWthM6Na/V1ChxKzPlsIht4xb+M+9g6ry5tuK6vYMA9OE eTBD3oSO07bIP0rTuUU4rXaBXr+4Y4WwJ+Bp/+iAQF4WGEpaBzx5yATjMOjInNGLVypIaTP8Bx3 CUK1ws0XQhaLAHSXpiKrDjklJseL5Iqqlq1+ZLcH4YVCryihO6aKbCMUZ3x2xWfxx4ivLHkgiNe 9Lb86Xw27K1ZwmN+71CU3Las3IhPwj18u0Q29JiU2cw5K2qAb5RWsiV7MiDE6CacWAx+KrytKJb wGdrFgytq+WA68WGfXsKCG4+9esBDI1mmuc+TLkNRwyRPobdAq9PC9Iz8Un8Ad0iEFeWa1oGvrt CTrm41XO/9tps/jBhw7FykFqlzgIdCeY9/vynpCfxz0XAlfQ2Eisz4noI17jb5s1HtNkvecB3QC 6wcpOBtKeRWFovgvM6Y8tqed7LSj1BPAtcdJSwX37s6ikZiX0/XdtmqBXfvExep/fhoJHb+IuFe G1AVfSzVFF4Ckkg== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 OLDI has a few issues with how it handles the signal polarities: - It always sets OLDI_DEPOL, which means DE active low - It sets DRM_BUS_FLAG_DE_HIGH in struct drm_bridge_timings, i.e. reverse to the OLDI_DEPOL - It sets DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE in struct drm_bridge_timings, but the TRM says "The DSS interface is clocked on the rising edge of OLDI_FWD_P_CLK pixel clock", which I read as "OLDI samples on rising edge". - But the defined drm_bridge_timings is not actually used anywhere, even if it is set to bridge->timings, so the bus flags are just ignored. However, based on my testing, OLDI_DEPOL bit or the edge on which data and syncs are driven doesn't seem to affect the OLDI output. Possibly it's not as robust, but I did not see any effect with an oscilloscope. However, the code is still quite broken, so let's fix it: - Remove drm_bridge_timings - Set the correct input_bus_cfg.flags in tidss_oldi_atomic_check() - Set OLDI_DEPOL based on the DE bus flag Tested-by: Swamil Jain Reviewed-by: Swamil Jain Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/tidss/tidss_oldi.c | 38 ++++++++++++++++++++++++++++------= ---- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_oldi.c b/drivers/gpu/drm/tidss/tid= ss_oldi.c index 5eb749f495d5..624f1646fb07 100644 --- a/drivers/gpu/drm/tidss/tidss_oldi.c +++ b/drivers/gpu/drm/tidss/tidss_oldi.c @@ -164,7 +164,8 @@ static void tidss_oldi_tx_power(struct tidss_oldi *oldi= , bool enable) regmap_update_bits(oldi->io_ctrl, OLDI_PD_CTRL, mask, enable ? 0 : mask); } =20 -static int tidss_oldi_config(struct tidss_oldi *oldi) +static int tidss_oldi_config(struct tidss_oldi *oldi, + struct drm_bridge_state *bridge_state) { const struct oldi_bus_format *bus_fmt =3D NULL; u32 oldi_cfg =3D 0; @@ -183,7 +184,8 @@ static int tidss_oldi_config(struct tidss_oldi *oldi) "OLDI%u: DSS port width %d not supported\n", oldi->oldi_instance, bus_fmt->data_width); =20 - oldi_cfg |=3D OLDI_DEPOL; + if (bridge_state->input_bus_cfg.flags & DRM_BUS_FLAG_DE_LOW) + oldi_cfg |=3D OLDI_DEPOL; /* 1 =3D active low */ =20 oldi_cfg =3D (oldi_cfg & (~OLDI_MAP)) | (bus_fmt->oldi_mode_reg_val << 1); =20 @@ -220,6 +222,22 @@ static int tidss_oldi_config(struct tidss_oldi *oldi) return ret; } =20 +static int tidss_oldi_atomic_check(struct drm_bridge *bridge, + struct drm_bridge_state *bridge_state, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state) +{ + bridge_state->input_bus_cfg.flags &=3D + ~(DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE | + DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE); + + bridge_state->input_bus_cfg.flags |=3D + DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE | + DRM_BUS_FLAG_SYNC_SAMPLE_POSEDGE; + + return 0; +} + static void tidss_oldi_atomic_pre_enable(struct drm_bridge *bridge, struct drm_atomic_commit *state) { @@ -228,6 +246,7 @@ static void tidss_oldi_atomic_pre_enable(struct drm_bri= dge *bridge, struct drm_connector_state *conn_state; struct drm_crtc_state *crtc_state; struct drm_display_mode *mode; + struct drm_bridge_state *bridge_state; =20 if (oldi->link_type =3D=3D OLDI_MODE_SECONDARY_CLONE_SINGLE_LINK) return; @@ -245,10 +264,14 @@ static void tidss_oldi_atomic_pre_enable(struct drm_b= ridge *bridge, if (WARN_ON(!crtc_state)) return; =20 + bridge_state =3D drm_atomic_get_new_bridge_state(state, bridge); + if (WARN_ON(!bridge_state)) + return; + mode =3D &crtc_state->adjusted_mode; =20 /* Configure the OLDI params*/ - tidss_oldi_config(oldi); + tidss_oldi_config(oldi, bridge_state); =20 /* Set the OLDI serial clock (7 times the pixel clock) */ tidss_oldi_set_serial_clk(oldi, mode->clock * 7 * 1000); @@ -329,7 +352,8 @@ tidss_oldi_mode_valid(struct drm_bridge *bridge, } =20 static const struct drm_bridge_funcs tidss_oldi_bridge_funcs =3D { - .attach =3D tidss_oldi_bridge_attach, + .attach =3D tidss_oldi_bridge_attach, + .atomic_check =3D tidss_oldi_atomic_check, .atomic_pre_enable =3D tidss_oldi_atomic_pre_enable, .atomic_post_disable =3D tidss_oldi_atomic_post_disable, .atomic_get_input_bus_fmts =3D tidss_oldi_atomic_get_input_bus_fmts, @@ -440,11 +464,6 @@ static int get_parent_dss_vp(struct device_node *oldi_= tx, u32 *parent_vp) return -ENODEV; } =20 -static const struct drm_bridge_timings default_tidss_oldi_timings =3D { - .input_bus_flags =3D DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE - | DRM_BUS_FLAG_DE_HIGH, -}; - void tidss_oldi_deinit(struct tidss_device *tidss) { for (int i =3D 0; i < tidss->num_oldis; i++) { @@ -598,7 +617,6 @@ int tidss_oldi_init(struct tidss_device *tidss) /* Register the bridge. */ oldi->bridge.of_node =3D child; oldi->bridge.driver_private =3D oldi; - oldi->bridge.timings =3D &default_tidss_oldi_timings; =20 tidss->oldis[tidss->num_oldis++] =3D oldi; tidss->is_ext_vp_clk[oldi->parent_vp] =3D true; --=20 2.43.0 From nobody Sat Sep 26 08:02:12 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 260C34A3871; Thu, 3 Sep 2026 12:10:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437440; cv=none; b=JMV8THBs8N7JOkYndw6nPsuoUzClGL8d/G5tx4JgeQ0OAdaPYv6mlkCQA79KOvi0lCQ4AdB9nCyysh6F542IIYO508Gyw9jQ+9eQtN6ZqYcf/8DdKHMKWWDPMiVorSkRoqA0oZQbBLLx7taF2x2HostPtgte2XavNSgPgxr8hsw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437440; c=relaxed/simple; bh=MyFzBf3tjtdNgV/vWPpfQ99bdCRM8Kj6IUXp9pYogAY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tyQBOx75kwwdQrau9+H4gYbBuolGwfhgpjOdXC2BaB1iH16CoZA461xh7Z4xeU/qUWYPGNZ9GPipqSoPo/bc4gE3EHq4c0xsqHdDCoKcH8ykYCGctBQ7VOb0CNnRAjrmFiZyhiVKcgtbr/BcA1MxBAtu5V14e2Tv+M7T40nktwg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=EZkkM3wB; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="EZkkM3wB" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B81CC4C2D; Thu, 3 Sep 2026 14:08:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1788437336; bh=MyFzBf3tjtdNgV/vWPpfQ99bdCRM8Kj6IUXp9pYogAY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=EZkkM3wBBkD9CRGcmAbtJk3iGceghnxi051K2QlCwqDiwTCxfN26JAtEO6cOabwlv dir7vSC/ZGPU0pSsyK+SDUPfr6FqaTIFCHGicNNVqvASmnhWGNgiYnM2ve5szruWdj gPgyKw8CeG304BgWgfwQ/EaW/mVjvXvQ1KXMkLoM= From: Tomi Valkeinen Date: Thu, 03 Sep 2026 15:09:59 +0300 Subject: [PATCH 09/10] drm/tidss: Drop WARN_ON() from tidss_runtime_put() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260903-tidss-pre-beagley-v1-9-93928baa8b12@ideasonboard.com> References: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> In-Reply-To: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> To: Devarsh Thakkar , Swamil Jain , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1525; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=MyFzBf3tjtdNgV/vWPpfQ99bdCRM8Kj6IUXp9pYogAY=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBqmWOpVyaa2zgD6W512xRZVHqDdcPqc9R+5PFvW PPz0lJ0lzOJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCapljqQAKCRD6PaqMvJYe 9aY7EACx/+vvDDUtn3IoXJJFNivHmmQZb3aCgDu/KZRwp1BTrPV1vRKZqVDV59dCW3MkxUUoc1y 4HHSq8JK+E/qs8RgkpkBpxROh88Es83CQBHHXbornDUMwcu7ekGGkzy8Rj+nBGqI2Uib3qU9Dn5 UFMgHL4qkLqIl5goqagU8epmckldHfY8HwjOewN5D/YodCM4zqYAmjscBy5OQ5jPu+aUREWNPFc 5ITwr/Os2zwZo+huwaXMR9e+Hd0sx2oN+VNPFkUvPlWSSU/Mpsa8XO6HwU8dCzd3xiJMg2up9LK V+rTZBWCxPaeZYbP3DIoHx9zt3smntSdw3JH0BNVOh2R0XxBMo5pS2vbsQ2LmsdeHGACQEXEns5 ejB6+0jqt3eCaz9OlrX+HVUWpkME7tFKxwVWMGVMoU6QlNV6zL0S5MEAswoLuRjwWEYLoWKmMZR gWpIpoWCNP6up5+ahsoXN2q2nsFe4s+O3YixzyY7xF53shvswoowH7Jjd9I8oTG4+zvNbbN52r7 SL0SEj29WQQxIZ9ajKJV8BQLAdsdzl+Z3QT29uLqkvXJn4HF/ECQCj5GLOzQYVKqfwE8tyt2Ml4 jFWcQqOt/7Wl9B2hnqpKPJScdwHWzZLAvqpaDIzcA4Pin7YPBw43kfQ93s3/OtRqMQcJDPEzMmB Z2qlbH02qgjIwkA== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 At the moment tidss driver has a WARN_ON(r < 0) for the pm_runtime_put_autosuspend() return value, to catch unexpected situations, and at the moment we never hit that warn. However, with the upcoming change in tidss_oldi.c to change the OLDI to an auxiliary device, we will get a child-parent relationship between tidss and OLDI. The OLDI aux devices are children of the DSS device, so when an OLDI is active, the DSS's child_count is non-zero, and pm_runtime_put_autosuspend() on the DSS device returns -EBUSY. Which then triggers the WARN_ON(). To avoid that, drop the WARN_ON. The -EBUSY is not an error, and it's a normal situation with parent-child devices. Also, with a quick grep, it looks like almost no driver in the kernel checks pm_runtime_put_autosuspend()'s return value. Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/tidss/tidss_drv.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tids= s_drv.c index 5cb3e746aeb3..44b0b009c29a 100644 --- a/drivers/gpu/drm/tidss/tidss_drv.c +++ b/drivers/gpu/drm/tidss/tidss_drv.c @@ -40,10 +40,7 @@ int tidss_runtime_get(struct tidss_device *tidss) =20 void tidss_runtime_put(struct tidss_device *tidss) { - int r; - - r =3D pm_runtime_put_autosuspend(tidss->dev); - WARN_ON(r < 0); + pm_runtime_put_autosuspend(tidss->dev); } =20 static int __maybe_unused tidss_pm_runtime_suspend(struct device *dev) --=20 2.43.0 From nobody Sat Sep 26 08:02:12 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ACFA84A3F2B; Thu, 3 Sep 2026 12:10:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437443; cv=none; b=SQUX8OU5v758giX2UyF7/XGB5amD/PjNzJi+gIb3f/guEbWUh76jnr/QbwSk76aZ+sFLhUP7zhpAjgi8428HdQJD1Scj8ERNhwo7KgQwiSN7XgNSocN9bui703ytyiAkgcSozCaXGU4gb1HZiQGtPs5zC4mOyakpneu7rbenZyg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788437443; c=relaxed/simple; bh=1owev+xK+tbBrZahEKLUE3lyt3+x00cAS8G6pcnn7Rk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AXUgsmGxuTs1RMuQd8NYw+vwLJ02+hViJiO8Nyg1J7qKcUfAmyUnFoPcUee+9QX5c0/0ogaQ+/UOJfaKYxZwAcYR/5X0/iyEUTvO/Y/9p2UovttzU/D+DhDUqtATF4IEtmVrvgrEV12+AQ3ZYfVYsr05iIEUm61sF7tCH9W1KNM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=gIoPtyBv; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="gIoPtyBv" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id B31EC4C35; Thu, 3 Sep 2026 14:08:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1788437337; bh=1owev+xK+tbBrZahEKLUE3lyt3+x00cAS8G6pcnn7Rk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=gIoPtyBv05yEXCNHJvkSg/NCXnaVCHq2hV5xvXdqmlqPa3upxYyhnwE1naMVCZXi0 1UdzHimSqguTEJm3aAIOpVZ6SXzyYPhF7HNzM7wCKgwFHOTlWeLNNjhuw0t9I7TQL9 CuNntT/JKefdnUFLhrjqqd9OFv+rAIlH68ZVkKkc= From: Tomi Valkeinen Date: Thu, 03 Sep 2026 15:10:00 +0300 Subject: [PATCH 10/10] drm/tidss: oldi: Fix missing of_node_put()s in error paths Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260903-tidss-pre-beagley-v1-10-93928baa8b12@ideasonboard.com> References: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> In-Reply-To: <20260903-tidss-pre-beagley-v1-0-93928baa8b12@ideasonboard.com> To: Devarsh Thakkar , Swamil Jain , Jyri Sarha , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1191; i=tomi.valkeinen@ideasonboard.com; h=from:subject:message-id; bh=1owev+xK+tbBrZahEKLUE3lyt3+x00cAS8G6pcnn7Rk=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBqmWOpbXfj3o5ITekvXG+ih/c+YGnQm2o9kURAk f7ZWBTgnjyJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCapljqQAKCRD6PaqMvJYe 9b9HEACny4WaBJWDBN8FluF+irw2zdbuKjzQc1MDI0FjsIx6XLUevscfrvWYQ4c3IlKqW1YjrPP Beadpw2pOsOW/HBuf1MJ5JIKzE5g6i5IAjLy+EbTZQu1xC8Bc7KgdpF6OHLuNOwlqgE/UqeSHPC rFkKvrK07BKBUXegeO6H65vzrDTqzYgDc5U37bA4QFABDHm0paSZaKTzPf/mZo5UCid5tV9B4i0 pYH3OHbwr9wRSJdW82txhEzFNRMIG6pcflECjaRUwT2LFcxIwlV/sKp1jnWOTiB3/7HLtDZI/26 gefPIFmOzjwBKofigRdHxPy61PzKWdMOToIo8swrO7MVLXKQsGUObzDDlBHWw3vFPqwlHFngYUM YIjHgNekGkqOh6kDBzw8tqcm+HMySCTLUlFO4Q36hYnZkG0GVqb+oqb/U2b6b0jfEfILlmD7eqK HT6KnOUbXsji0uK2KBv0p+UHGtpRYLp8hVZaRys88rFT7wJUWZOCNA59ln2QnI/GKTCqhFnr+Jl 1V3BS0Vw8ol7rGEUiybXBXyDXo75BmeeR7T5GxtqrgmCT6HWfsCnsH5eWH8OuuOZRv1YPfOMMF9 I0yfzDVSwOGv+jAdyc7FPbl76tPoXZHFrRrZGPgoBOxNlHgYbJsv9Qi508nueMDkFXF8W5Gbu/6 9UX4S0HVOlzBrzg== X-Developer-Key: i=tomi.valkeinen@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 If get_oldi_mode() errors early in the function, we don't put the 'companion' device_node. Add the of_node_put() calls. Signed-off-by: Tomi Valkeinen Fixes: 7246e0929945 ("drm/tidss: Add OLDI bridge support") --- drivers/gpu/drm/tidss/tidss_oldi.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/tidss/tidss_oldi.c b/drivers/gpu/drm/tidss/tid= ss_oldi.c index 624f1646fb07..82b059f85244 100644 --- a/drivers/gpu/drm/tidss/tidss_oldi.c +++ b/drivers/gpu/drm/tidss/tidss_oldi.c @@ -383,12 +383,16 @@ static int get_oldi_mode(struct device_node *oldi_tx,= int *companion_instance) */ return OLDI_MODE_SINGLE_LINK; =20 - if (of_property_read_u32(companion, "reg", &companion_reg)) + if (of_property_read_u32(companion, "reg", &companion_reg)) { + of_node_put(companion); return OLDI_MODE_UNSUPPORTED; + } =20 - if (companion_reg > (TIDSS_MAX_OLDI_TXES - 1)) + if (companion_reg > (TIDSS_MAX_OLDI_TXES - 1)) { /* Invalid companion OLDI reg value. */ + of_node_put(companion); return OLDI_MODE_UNSUPPORTED; + } =20 *companion_instance =3D (int)companion_reg; =20 --=20 2.43.0