Message ID | 20240116134142.2092483-2-devarsht@ti.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-27425-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:42cf:b0:101:a8e8:374 with SMTP id q15csp262513dye; Tue, 16 Jan 2024 05:42:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IGFX9k5Za4CkUW3V8ACTtWezw6jQsDFOIFb3H0+ytdLQ2f+NOhEw7qc+DVFrDwlNzkiAee8 X-Received: by 2002:a05:6402:943:b0:559:48a0:66d with SMTP id h3-20020a056402094300b0055948a0066dmr1075488edz.26.1705412559174; Tue, 16 Jan 2024 05:42:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705412559; cv=none; d=google.com; s=arc-20160816; b=cIl8AodwH63tCJtlLcmvgWz+EvJ9sYyuxLTMFIdhuwBqhiV4/s7TheSZ3AQpUj1u1n 1S2Q4Q+8WyiG9cTmgQF40grhEnB/ONHbFvtvU6KdyUiCFadeArZ+kEw4zSLFFdtuEFkM W1Wccg7BmDTzj7NuCSk+RIWKXIFXKprDIr2c55uwCxZCs7s8J74mjW5PkLddk6tWGSzV PCRcQ7SJViXCOG14es7SP61vSjqKV35yQmEcFVmmlppn9h075AVXtey8sdR4awKE8U3n Rv6rawO6UCXVbTpr1JD2vjcQ4PDCnykqjuOmjQqVrb3gM0AfiUv+88mgu8KPx1EXDn1s tU/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=WCMncCjEepMlq1gpfShPVfJNFIGS/foDr0vBL+xIwmk=; fh=bMKf9sP0kbB87X8/UkljJVrr5ldCqQ7RREn0nKqlnWo=; b=rvko+naxBJD5a2isZcZdD5r/MCqMdRiHBPRSLF3kEq1VnRpEUs4jSyjQAvY+Jtu9pH Sf+r182K6dYc+O1eSEEFdj8JnaNQRKRvrtnOMzip00cSbOYrzkrPea3GfVzotPSkCDqe zG+RrWUKsJ1YvZtg3kGHaS5OzjIZ/mhlNaKad4KD57awq9IDRzhZBi4hszAxSut5McRa ABoU1KvPjp/Tt94CveFkdBUFpUNai4VuufjjRUiluSVm/e584F4ZlxDUSFS7qnBAi2Xx mINA5F/JTLqXYcmcqXYrsA6e4JIlsCZ9rSmKqAUkxTkKNF2HiNKZGt5KD89lLBlOA/1G D2Kg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=yFf62Bq6; spf=pass (google.com: domain of linux-kernel+bounces-27425-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-27425-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id h27-20020a50cddb000000b00559bfdf3028si159313edj.550.2024.01.16.05.42.38 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jan 2024 05:42:39 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-27425-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=yFf62Bq6; spf=pass (google.com: domain of linux-kernel+bounces-27425-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-27425-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 919811F24075 for <ouuuleilei@gmail.com>; Tue, 16 Jan 2024 13:42:38 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2EC721BDED; Tue, 16 Jan 2024 13:42:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="yFf62Bq6" Received: from lelv0142.ext.ti.com (lelv0142.ext.ti.com [198.47.23.249]) (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 747C11BC4E; Tue, 16 Jan 2024 13:42:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com Received: from lelv0265.itg.ti.com ([10.180.67.224]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id 40GDfkFN027729; Tue, 16 Jan 2024 07:41:46 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1705412506; bh=WCMncCjEepMlq1gpfShPVfJNFIGS/foDr0vBL+xIwmk=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=yFf62Bq6sAkzE99MAreaLVa3Qr+DvoixEYqFkgzXvB1zFYUXrLnO7GODXjtddaaQ+ DlTdDpjBN+y11Qx3vXDjX/Pi0ydPfYm4qws8Y2Cz5KOe4cKxjApX1dvSl6Uqi7Wh25 82n7IXpsrn6FqzixTXLK1l+0T1fhwLjCnfCxDygY= Received: from DLEE112.ent.ti.com (dlee112.ent.ti.com [157.170.170.23]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 40GDfke9011388 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 16 Jan 2024 07:41:46 -0600 Received: from DLEE102.ent.ti.com (157.170.170.32) by DLEE112.ent.ti.com (157.170.170.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Tue, 16 Jan 2024 07:41:46 -0600 Received: from lelvsmtp5.itg.ti.com (10.180.75.250) by DLEE102.ent.ti.com (157.170.170.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via Frontend Transport; Tue, 16 Jan 2024 07:41:46 -0600 Received: from localhost (ti.dhcp.ti.com [172.24.227.95] (may be forged)) by lelvsmtp5.itg.ti.com (8.15.2/8.15.2) with ESMTP id 40GDfjx4093381; Tue, 16 Jan 2024 07:41:45 -0600 From: Devarsh Thakkar <devarsht@ti.com> To: <jyri.sarha@iki.fi>, <tomi.valkeinen@ideasonboard.com>, <airlied@gmail.com>, <daniel@ffwll.ch>, <maarten.lankhorst@linux.intel.com>, <mripard@kernel.org>, <tzimmermann@suse.de>, <robh+dt@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>, <conor+dt@kernel.org>, <dri-devel@lists.freedesktop.org>, <devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>, <nm@ti.com>, <vigneshr@ti.com>, <kristo@kernel.org> CC: <praneeth@ti.com>, <a-bhatia1@ti.com>, <j-luthra@ti.com>, <devarsht@ti.com> Subject: [RFC PATCH 1/3] dt-bindings: display: ti,am65x-dss: Add support for display sharing mode Date: Tue, 16 Jan 2024 19:11:40 +0530 Message-ID: <20240116134142.2092483-2-devarsht@ti.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240116134142.2092483-1-devarsht@ti.com> References: <20240116134142.2092483-1-devarsht@ti.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788254679646934660 X-GMAIL-MSGID: 1788254679646934660 |
Series |
Add display sharing support in tidss
|
|
Commit Message
Devarsh Thakkar
Jan. 16, 2024, 1:41 p.m. UTC
Add support for using TI Keystone DSS hardware present in display
sharing mode.
TI Keystone DSS hardware supports partitioning of resources between
multiple hosts as it provides separate register space and unique
interrupt line to each host.
The DSS hardware can be used in shared mode in such a way that one or
more of video planes can be owned by Linux wherease other planes can be
owned by remote cores.
One or more of the video ports can be dedicated exclusively to a
processing core, wherease some of the video ports can be shared between
two hosts too with only one of them having write access.
Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
---
.../bindings/display/ti/ti,am65x-dss.yaml | 82 +++++++++++++++++++
1 file changed, 82 insertions(+)
Comments
On Tue, Jan 16, 2024 at 07:11:40PM +0530, Devarsh Thakkar wrote: > Add support for using TI Keystone DSS hardware present in display > sharing mode. > > TI Keystone DSS hardware supports partitioning of resources between > multiple hosts as it provides separate register space and unique > interrupt line to each host. > > The DSS hardware can be used in shared mode in such a way that one or > more of video planes can be owned by Linux wherease other planes can be > owned by remote cores. > > One or more of the video ports can be dedicated exclusively to a > processing core, wherease some of the video ports can be shared between > two hosts too with only one of them having write access. > > Signed-off-by: Devarsh Thakkar <devarsht@ti.com> > --- > .../bindings/display/ti/ti,am65x-dss.yaml | 82 +++++++++++++++++++ > 1 file changed, 82 insertions(+) > > diff --git a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml > index 55e3e490d0e6..d9bc69fbf1fb 100644 > --- a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml > +++ b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml > @@ -112,6 +112,86 @@ properties: > Input memory (from main memory to dispc) bandwidth limit in > bytes per second > > + ti,dss-shared-mode: > + type: boolean > + description: > + TI DSS7 supports sharing of display between multiple hosts > + as it provides separate register space for display configuration and > + unique interrupt line to each host. If you care about line breaks, you need '|'. > + One of the host is provided access to the global display > + configuration labelled as "common" region of DSS allows that host > + exclusive access to global registers of DSS while other host can > + configure the display for it's usage using a separate register > + space labelled as "common1". > + The DSS resources can be partitioned in such a way that one or more > + of the video planes are owned by Linux whereas other video planes Your h/w can only run Linux? What if you want to use this same binding to define the configuration to the 'remote processor'? You can easily s/Linux/the OS/, but it all should be reworded to describe things in terms of the local processor. > + can be owned by a remote core. > + The video port controlling these planes acts as a shared video port > + and it can be configured with write access either by Linux or the > + remote core in which case Linux only has read-only access to that > + video port. What is the purpose of this property when all the other properties are required? > + > + ti,dss-shared-mode-planes: > + description: > + The video layer that is owned by processing core running Linux. > + The display driver running from Linux has exclusive write access to > + this video layer. > + $ref: /schemas/types.yaml#/definitions/string > + enum: [vidl, vid] > + > + ti,dss-shared-mode-vp: > + description: > + The video port that is being used in context of processing core > + running Linux with display susbsytem being used in shared mode. > + This can be owned either by the processing core running Linux in > + which case Linux has the write access and the responsibility to > + configure this video port and the associated overlay manager or > + it can be shared between core running Linux and a remote core > + with remote core provided with write access to this video port and > + associated overlay managers and remote core configures and drives > + this video port also feeding data from one or more of the > + video planes owned by Linux, with Linux only having read-only access > + to this video port and associated overlay managers. > + > + $ref: /schemas/types.yaml#/definitions/string > + enum: [vp1, vp2] > + > + ti,dss-shared-mode-common: > + description: > + The DSS register region owned by processing core running Linux. > + $ref: /schemas/types.yaml#/definitions/string > + enum: [common, common1] > + > + ti,dss-shared-mode-vp-owned: > + description: > + This tells whether processing core running Linux has write access to > + the video ports enlisted in ti,dss-shared-mode-vps. > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: [0, 1] This can be boolean. Do writes abort or just get ignored? The latter can be probed and doesn't need a property. > + > + ti,dss-shared-mode-plane-zorder: > + description: > + The zorder of the planes owned by Linux. > + For the scenario where Linux is not having write access to associated > + video port, this field is just for > + informational purpose to enumerate the zorder configuration > + being used by remote core. > + > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: [0, 1] I don't understand how 0 or 1 defines Z-order. > + > +dependencies: > + ti,dss-shared-mode: [ 'ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', > + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] > + ti,dss-shared-mode-vp: ['ti,dss-shared-mode', 'ti,dss-shared-mode-planes', > + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] > + ti,dss-shared-mode-planes: ['ti,dss-shared-mode', 'ti,dss-shared-mode-vp', > + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] > + ti,dss-shared-mode-plane-zorder: ['ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', > + 'ti,dss-shared-mode', 'ti,dss-shared-mode-vp-owned'] > + ti,dss-shared-mode-vp-owned: ['ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', > + 'ti,dss-shared-mode', 'ti,dss-shared-mode-plane-zorder'] > + > allOf: > - if: > properties: > @@ -123,6 +203,8 @@ allOf: > ports: > properties: > port@0: false > + ti,dss-shared-mode-vp: > + enum: [vp2] This should throw a warning. You just defined a property called 'enum'. Rob
On Wed, Jan 17, 2024 at 02:13:42PM -0600, Rob Herring wrote: > On Tue, Jan 16, 2024 at 07:11:40PM +0530, Devarsh Thakkar wrote: > > Add support for using TI Keystone DSS hardware present in display > > sharing mode. > > > > TI Keystone DSS hardware supports partitioning of resources between > > multiple hosts as it provides separate register space and unique > > interrupt line to each host. > > > > The DSS hardware can be used in shared mode in such a way that one or > > more of video planes can be owned by Linux wherease other planes can be > > owned by remote cores. > > > > One or more of the video ports can be dedicated exclusively to a > > processing core, wherease some of the video ports can be shared between > > two hosts too with only one of them having write access. > > > > Signed-off-by: Devarsh Thakkar <devarsht@ti.com> > > --- > > .../bindings/display/ti/ti,am65x-dss.yaml | 82 +++++++++++++++++++ > > 1 file changed, 82 insertions(+) > > > > diff --git a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml > > index 55e3e490d0e6..d9bc69fbf1fb 100644 > > --- a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml > > +++ b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml > > @@ -112,6 +112,86 @@ properties: > > Input memory (from main memory to dispc) bandwidth limit in > > bytes per second > > > > + ti,dss-shared-mode: > > + type: boolean > > + description: > > + TI DSS7 supports sharing of display between multiple hosts > > + as it provides separate register space for display configuration and > > + unique interrupt line to each host. > > If you care about line breaks, you need '|'. > > > + One of the host is provided access to the global display > > + configuration labelled as "common" region of DSS allows that host > > + exclusive access to global registers of DSS while other host can > > + configure the display for it's usage using a separate register > > + space labelled as "common1". > > + The DSS resources can be partitioned in such a way that one or more > > + of the video planes are owned by Linux whereas other video planes > > Your h/w can only run Linux? > > What if you want to use this same binding to define the configuration to > the 'remote processor'? You can easily s/Linux/the OS/, but it all > should be reworded to describe things in terms of the local processor. > > > + can be owned by a remote core. > > + The video port controlling these planes acts as a shared video port > > + and it can be configured with write access either by Linux or the > > + remote core in which case Linux only has read-only access to that > > + video port. > > What is the purpose of this property when all the other properties are > required? > > > + > > + ti,dss-shared-mode-planes: > > + description: > > + The video layer that is owned by processing core running Linux. > > + The display driver running from Linux has exclusive write access to > > + this video layer. > > + $ref: /schemas/types.yaml#/definitions/string > > + enum: [vidl, vid] > > + > > + ti,dss-shared-mode-vp: > > + description: > > + The video port that is being used in context of processing core > > + running Linux with display susbsytem being used in shared mode. > > + This can be owned either by the processing core running Linux in > > + which case Linux has the write access and the responsibility to > > + configure this video port and the associated overlay manager or > > + it can be shared between core running Linux and a remote core > > + with remote core provided with write access to this video port and > > + associated overlay managers and remote core configures and drives > > + this video port also feeding data from one or more of the > > + video planes owned by Linux, with Linux only having read-only access > > + to this video port and associated overlay managers. > > + > > + $ref: /schemas/types.yaml#/definitions/string > > + enum: [vp1, vp2] > > + > > + ti,dss-shared-mode-common: > > + description: > > + The DSS register region owned by processing core running Linux. > > + $ref: /schemas/types.yaml#/definitions/string > > + enum: [common, common1] > > + > > + ti,dss-shared-mode-vp-owned: > > + description: > > + This tells whether processing core running Linux has write access to > > + the video ports enlisted in ti,dss-shared-mode-vps. > > + $ref: /schemas/types.yaml#/definitions/uint32 > > + enum: [0, 1] > > This can be boolean. Do writes abort or just get ignored? The latter can > be probed and doesn't need a property. > > > + > > + ti,dss-shared-mode-plane-zorder: > > + description: > > + The zorder of the planes owned by Linux. > > + For the scenario where Linux is not having write access to associated > > + video port, this field is just for > > + informational purpose to enumerate the zorder configuration > > + being used by remote core. > > + > > + $ref: /schemas/types.yaml#/definitions/uint32 > > + enum: [0, 1] > > I don't understand how 0 or 1 defines Z-order. > > > + > > +dependencies: > > + ti,dss-shared-mode: [ 'ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', > > + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] > > + ti,dss-shared-mode-vp: ['ti,dss-shared-mode', 'ti,dss-shared-mode-planes', > > + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] > > + ti,dss-shared-mode-planes: ['ti,dss-shared-mode', 'ti,dss-shared-mode-vp', > > + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] > > + ti,dss-shared-mode-plane-zorder: ['ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', > > + 'ti,dss-shared-mode', 'ti,dss-shared-mode-vp-owned'] > > + ti,dss-shared-mode-vp-owned: ['ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', > > + 'ti,dss-shared-mode', 'ti,dss-shared-mode-plane-zorder'] > > + > > allOf: > > - if: > > properties: > > @@ -123,6 +203,8 @@ allOf: > > ports: > > properties: > > port@0: false > > + ti,dss-shared-mode-vp: > > + enum: [vp2] > > This should throw a warning. You just defined a property called 'enum'. Indeed it does. Test your bindings before sending. ./Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml:204:35: [error] empty value in block mapp ing (empty-values) CHKDT Documentation/devicetree/bindings/processed-schema.json /home/rob/proj/linux-dt/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml: allOf:0:then:proper ties:ports:properties:ti,dss-shared-mode-vp: None is not of type 'object', 'boolean' from schema $id: http://json-schema.org/draft-07/schema# /home/rob/proj/linux-dt/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml: allOf:0:then:proper ties:ports:properties:enum: ['vp2'] is not of type 'object', 'boolean' from schema $id: http://json-schema.org/draft-07/schema# /home/rob/proj/linux-dt/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml: allOf:0:then:proper ties:ports:properties: 'enum' should not be valid under {'$ref': '#/definitions/json-schema-prop-names'} hint: A json-schema keyword was found instead of a DT property name. from schema $id: http://devicetree.org/meta-schemas/keywords.yaml# /home/rob/proj/linux-dt/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml: allOf:0:then:proper ties:ports:properties:ti,dss-shared-mode-vp: None is not of type 'object', 'boolean' from schema $id: http://devicetree.org/meta-schemas/keywords.yaml# /home/rob/proj/linux-dt/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml: allOf:0:then:proper ties:ports:properties:enum: ['vp2'] is not of type 'object', 'boolean' from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#
Hi Rob, Thanks for the quick review. On 18/01/24 01:43, Rob Herring wrote: > On Tue, Jan 16, 2024 at 07:11:40PM +0530, Devarsh Thakkar wrote: >> Add support for using TI Keystone DSS hardware present in display >> sharing mode. >> >> TI Keystone DSS hardware supports partitioning of resources between >> multiple hosts as it provides separate register space and unique >> interrupt line to each host. >> >> The DSS hardware can be used in shared mode in such a way that one or >> more of video planes can be owned by Linux wherease other planes can be >> owned by remote cores. >> >> One or more of the video ports can be dedicated exclusively to a >> processing core, wherease some of the video ports can be shared between >> two hosts too with only one of them having write access. >> >> Signed-off-by: Devarsh Thakkar <devarsht@ti.com> >> --- >> .../bindings/display/ti/ti,am65x-dss.yaml | 82 +++++++++++++++++++ >> 1 file changed, 82 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml >> index 55e3e490d0e6..d9bc69fbf1fb 100644 >> --- a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml >> +++ b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml >> @@ -112,6 +112,86 @@ properties: >> Input memory (from main memory to dispc) bandwidth limit in >> bytes per second >> >> + ti,dss-shared-mode: >> + type: boolean >> + description: >> + TI DSS7 supports sharing of display between multiple hosts >> + as it provides separate register space for display configuration and >> + unique interrupt line to each host. > > If you care about line breaks, you need '|'. > Noted. >> + One of the host is provided access to the global display >> + configuration labelled as "common" region of DSS allows that host >> + exclusive access to global registers of DSS while other host can >> + configure the display for it's usage using a separate register >> + space labelled as "common1". >> + The DSS resources can be partitioned in such a way that one or more >> + of the video planes are owned by Linux whereas other video planes > > Your h/w can only run Linux? > > What if you want to use this same binding to define the configuration to > the 'remote processor'? You can easily s/Linux/the OS/, but it all > should be reworded to describe things in terms of the local processor. > It can run both Linux and RTOS or for that matter any other OS too. But yes I got your point, will reword accordingly. >> + can be owned by a remote core. >> + The video port controlling these planes acts as a shared video port >> + and it can be configured with write access either by Linux or the >> + remote core in which case Linux only has read-only access to that >> + video port. > > What is the purpose of this property when all the other properties are > required? > The ti,dss-shared-mode and below group of properties are optional. But if ti,dss-shared-mode is set then only driver should parse below set of properties. >> + >> + ti,dss-shared-mode-planes: >> + description: >> + The video layer that is owned by processing core running Linux. >> + The display driver running from Linux has exclusive write access to >> + this video layer. >> + $ref: /schemas/types.yaml#/definitions/string >> + enum: [vidl, vid] >> + >> + ti,dss-shared-mode-vp: >> + description: >> + The video port that is being used in context of processing core >> + running Linux with display susbsytem being used in shared mode. >> + This can be owned either by the processing core running Linux in >> + which case Linux has the write access and the responsibility to >> + configure this video port and the associated overlay manager or >> + it can be shared between core running Linux and a remote core >> + with remote core provided with write access to this video port and >> + associated overlay managers and remote core configures and drives >> + this video port also feeding data from one or more of the >> + video planes owned by Linux, with Linux only having read-only access >> + to this video port and associated overlay managers. >> + >> + $ref: /schemas/types.yaml#/definitions/string >> + enum: [vp1, vp2] >> + >> + ti,dss-shared-mode-common: >> + description: >> + The DSS register region owned by processing core running Linux. >> + $ref: /schemas/types.yaml#/definitions/string >> + enum: [common, common1] >> + >> + ti,dss-shared-mode-vp-owned: >> + description: >> + This tells whether processing core running Linux has write access to >> + the video ports enlisted in ti,dss-shared-mode-vps. >> + $ref: /schemas/types.yaml#/definitions/uint32 >> + enum: [0, 1] > > This can be boolean. Do writes abort or just get ignored? The latter can > be probed and doesn't need a property. > Although we have kept all these properties as enums, but actually in driver we are treating them as array of enums and using device_property_read_u32_array. The reason being that for SoCs using am65x-dss bindings they can only have single entry either vp1 or vp2 or 0 or 1 as there are only two video ports. So for them the device tree overlay would look like : &dss0 { ti,dss-shared-mode; ti,dss-shared-mode-vp = "vp1"; ti,dss-shared-mode-vp-owned = <0>; ti,dss-shared-mode-common = "common1"; ti,dss-shared-mode-planes = "vid"; ti,dss-shared-mode-plane-zorder = <0>; interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_>; } But we also plan to extend these bindings to SoCs using Documentation/devicetree/bindings/display/ti/ti,j721e-dss.yaml where there are multiple video ports. So in that the driver and bindings should support below configuration : &dss0 { ti,dss-shared-mode; ti,dss-shared-mode-vp = "vp1 vp2"; ti,dss-shared-mode-vp-owned = <0 1>; ti,dss-shared-mode-common = "common_s1"; ti,dss-shared-mode-planes = "vid1 vidl1"; ti,dss-shared-mode-plane-zorder = <0 1>; interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_>; } As I am using device_property_read_u32_array in driver I thought to keep this as uint32 in enum for am65x.yaml which works well with the driver. >> + >> + ti,dss-shared-mode-plane-zorder: >> + description: >> + The zorder of the planes owned by Linux. >> + For the scenario where Linux is not having write access to associated >> + video port, this field is just for >> + informational purpose to enumerate the zorder configuration >> + being used by remote core. >> + >> + $ref: /schemas/types.yaml#/definitions/uint32 >> + enum: [0, 1] > > I don't understand how 0 or 1 defines Z-order. > As there are only two planes in total so z-order can be either 0 or 1 for the shared mode plane as there is only a single entry of plane. For e.g. if ti,dss-shared-mode-plane-zorder is 1 then it means the plane owned by Linux is programmed as topmost plane wherease the plane owned by remote core is programmed as the underneath one. >> + >> +dependencies: >> + ti,dss-shared-mode: [ 'ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', >> + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] >> + ti,dss-shared-mode-vp: ['ti,dss-shared-mode', 'ti,dss-shared-mode-planes', >> + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] >> + ti,dss-shared-mode-planes: ['ti,dss-shared-mode', 'ti,dss-shared-mode-vp', >> + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] >> + ti,dss-shared-mode-plane-zorder: ['ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', >> + 'ti,dss-shared-mode', 'ti,dss-shared-mode-vp-owned'] >> + ti,dss-shared-mode-vp-owned: ['ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', >> + 'ti,dss-shared-mode', 'ti,dss-shared-mode-plane-zorder'] >> + >> allOf: >> - if: >> properties: >> @@ -123,6 +203,8 @@ allOf: >> ports: >> properties: >> port@0: false >> + ti,dss-shared-mode-vp: >> + enum: [vp2] > > This should throw a warning. You just defined a property called 'enum'. > Oops will fix this. Regards Devarsh > Rob
On Thu, Jan 18, 2024 at 7:59 AM Devarsh Thakkar <devarsht@ti.com> wrote: > > Hi Rob, > > Thanks for the quick review. > > On 18/01/24 01:43, Rob Herring wrote: > > On Tue, Jan 16, 2024 at 07:11:40PM +0530, Devarsh Thakkar wrote: > >> Add support for using TI Keystone DSS hardware present in display > >> sharing mode. > >> > >> TI Keystone DSS hardware supports partitioning of resources between > >> multiple hosts as it provides separate register space and unique > >> interrupt line to each host. > >> > >> The DSS hardware can be used in shared mode in such a way that one or > >> more of video planes can be owned by Linux wherease other planes can be > >> owned by remote cores. > >> > >> One or more of the video ports can be dedicated exclusively to a > >> processing core, wherease some of the video ports can be shared between > >> two hosts too with only one of them having write access. > >> > >> Signed-off-by: Devarsh Thakkar <devarsht@ti.com> > >> --- > >> .../bindings/display/ti/ti,am65x-dss.yaml | 82 +++++++++++++++++++ > >> 1 file changed, 82 insertions(+) > >> > >> diff --git a/Documentation/devicetree/bindings/display/ti/ti,am65x-dssyaml b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml > >> index 55e3e490d0e6..d9bc69fbf1fb 100644 > >> --- a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml > >> +++ b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml > >> @@ -112,6 +112,86 @@ properties: > >> Input memory (from main memory to dispc) bandwidth limit in > >> bytes per second > >> > >> + ti,dss-shared-mode: > >> + type: boolean > >> + description: > >> + TI DSS7 supports sharing of display between multiple hosts > >> + as it provides separate register space for display configuration and > >> + unique interrupt line to each host. > > > > If you care about line breaks, you need '|'. > > > > Noted. > > >> + One of the host is provided access to the global display > >> + configuration labelled as "common" region of DSS allows that host > >> + exclusive access to global registers of DSS while other host can > >> + configure the display for it's usage using a separate register > >> + space labelled as "common1". > >> + The DSS resources can be partitioned in such a way that one or more > >> + of the video planes are owned by Linux whereas other video planes > > > > Your h/w can only run Linux? > > > > What if you want to use this same binding to define the configuration to > > the 'remote processor'? You can easily s/Linux/the OS/, but it all > > should be reworded to describe things in terms of the local processor. > > > > It can run both Linux and RTOS or for that matter any other OS too. But yes I > got your point, will reword accordingly. > > >> + can be owned by a remote core. > >> + The video port controlling these planes acts as a shared video port > >> + and it can be configured with write access either by Linux or the > >> + remote core in which case Linux only has read-only access to that > >> + video port. > > > > What is the purpose of this property when all the other properties are > > required? > > > > The ti,dss-shared-mode and below group of properties are optional. But > if ti,dss-shared-mode is set then only driver should parse below set of > properties. Let me re-phrase. Drop this property. It serves no purpose since all the properties have to be present anyway. > >> + ti,dss-shared-mode-planes: > >> + description: > >> + The video layer that is owned by processing core running Linux. > >> + The display driver running from Linux has exclusive write access to > >> + this video layer. > >> + $ref: /schemas/types.yaml#/definitions/string > >> + enum: [vidl, vid] > >> + > >> + ti,dss-shared-mode-vp: > >> + description: > >> + The video port that is being used in context of processing core > >> + running Linux with display susbsytem being used in shared mode. > >> + This can be owned either by the processing core running Linux in > >> + which case Linux has the write access and the responsibility to > >> + configure this video port and the associated overlay manager or > >> + it can be shared between core running Linux and a remote core > >> + with remote core provided with write access to this video port and > >> + associated overlay managers and remote core configures and drives > >> + this video port also feeding data from one or more of the > >> + video planes owned by Linux, with Linux only having read-only access > >> + to this video port and associated overlay managers. > >> + > >> + $ref: /schemas/types.yaml#/definitions/string > >> + enum: [vp1, vp2] > >> + > >> + ti,dss-shared-mode-common: > >> + description: > >> + The DSS register region owned by processing core running Linux. > >> + $ref: /schemas/types.yaml#/definitions/string > >> + enum: [common, common1] > >> + > >> + ti,dss-shared-mode-vp-owned: > >> + description: > >> + This tells whether processing core running Linux has write access to > >> + the video ports enlisted in ti,dss-shared-mode-vps. > >> + $ref: /schemas/types.yaml#/definitions/uint32 > >> + enum: [0, 1] > > > > This can be boolean. Do writes abort or just get ignored? The latter can > > be probed and doesn't need a property. > > > > Although we have kept all these properties as enums, but actually in driver we > are treating them as array of enums and using device_property_read_u32_array. > > The reason being that for SoCs using am65x-dss bindings they can only have > single entry either vp1 or vp2 or 0 or 1 as there are only two video ports. So > for them the device tree overlay would look like : > &dss0 { > > ti,dss-shared-mode; > > ti,dss-shared-mode-vp = "vp1"; > > ti,dss-shared-mode-vp-owned = <0>; > > ti,dss-shared-mode-common = "common1"; > > ti,dss-shared-mode-planes = "vid"; > > ti,dss-shared-mode-plane-zorder = <0>; > > interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_>; > } > > But we also plan to extend these bindings to SoCs using > Documentation/devicetree/bindings/display/ti/ti,j721e-dss.yaml where there are > multiple video ports. So in that the driver and bindings should support below > configuration : What are you waiting for? In that case, all these properties need to be in a shared schema file and referenced here. Otherwise you will be defining their types twice (and different types too if some are changed to arrays). > &dss0 { > > ti,dss-shared-mode; > > ti,dss-shared-mode-vp = "vp1 vp2"; > > ti,dss-shared-mode-vp-owned = <0 1>; > > ti,dss-shared-mode-common = "common_s1"; > > ti,dss-shared-mode-planes = "vid1 vidl1"; > > ti,dss-shared-mode-plane-zorder = <0 1>; > > interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_>; > } > > As I am using device_property_read_u32_array in driver I thought to keep this > as uint32 in enum for am65x.yaml which works well with the driver. The type and what accessor functions the kernel uses should match. I plan to add (debug) checking on this. Debug only because as there's no type info in the DTB, it all has to be extracted from schemas and put into the kernel. > >> + > >> + ti,dss-shared-mode-plane-zorder: > >> + description: > >> + The zorder of the planes owned by Linux. > >> + For the scenario where Linux is not having write access to associated > >> + video port, this field is just for > >> + informational purpose to enumerate the zorder configuration > >> + being used by remote core. > >> + > >> + $ref: /schemas/types.yaml#/definitions/uint32 > >> + enum: [0, 1] > > > > I don't understand how 0 or 1 defines Z-order. > > > > As there are only two planes in total so z-order can be either 0 or 1 for the > shared mode plane as there is only a single entry of plane. > For e.g. if ti,dss-shared-mode-plane-zorder is 1 then it means the plane owned > by Linux is programmed as topmost plane wherease the plane owned by remote > core is programmed as the underneath one. Please reword the description to make all this clear. The index is the plane number and value is the z-order with 0 being bottom and N being the top. I guess this should be an array as well. Rob
Hi Rob, Thanks for the review. On 19/01/24 19:25, Rob Herring wrote: > On Thu, Jan 18, 2024 at 7:59 AM Devarsh Thakkar <devarsht@ti.com> wrote: >> >> Hi Rob, >> >> Thanks for the quick review. >> >> On 18/01/24 01:43, Rob Herring wrote: >>> On Tue, Jan 16, 2024 at 07:11:40PM +0530, Devarsh Thakkar wrote: >>>> Add support for using TI Keystone DSS hardware present in display >>>> sharing mode. >>>> >>>> TI Keystone DSS hardware supports partitioning of resources between >>>> multiple hosts as it provides separate register space and unique >>>> interrupt line to each host. >>>> >>>> The DSS hardware can be used in shared mode in such a way that one or >>>> more of video planes can be owned by Linux wherease other planes can be >>>> owned by remote cores. >>>> >>>> One or more of the video ports can be dedicated exclusively to a >>>> processing core, wherease some of the video ports can be shared between >>>> two hosts too with only one of them having write access. >>>> >>>> Signed-off-by: Devarsh Thakkar <devarsht@ti.com> >>>> --- >>>> .../bindings/display/ti/ti,am65x-dss.yaml | 82 +++++++++++++++++++ >>>> 1 file changed, 82 insertions(+) >>>> >>>> diff --git a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml >>>> index 55e3e490d0e6..d9bc69fbf1fb 100644 >>>> --- a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml >>>> +++ b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml >>>> @@ -112,6 +112,86 @@ properties: >>>> Input memory (from main memory to dispc) bandwidth limit in >>>> bytes per second >>>> >>>> + ti,dss-shared-mode: >>>> + type: boolean >>>> + description: >>>> + TI DSS7 supports sharing of display between multiple hosts >>>> + as it provides separate register space for display configuration and >>>> + unique interrupt line to each host. >>> >>> If you care about line breaks, you need '|'. >>> >> >> Noted. >> >>>> + One of the host is provided access to the global display >>>> + configuration labelled as "common" region of DSS allows that host >>>> + exclusive access to global registers of DSS while other host can >>>> + configure the display for it's usage using a separate register >>>> + space labelled as "common1". >>>> + The DSS resources can be partitioned in such a way that one or more >>>> + of the video planes are owned by Linux whereas other video planes >>> >>> Your h/w can only run Linux? >>> >>> What if you want to use this same binding to define the configuration to >>> the 'remote processor'? You can easily s/Linux/the OS/, but it all >>> should be reworded to describe things in terms of the local processor. >>> >> >> It can run both Linux and RTOS or for that matter any other OS too. But yes I >> got your point, will reword accordingly. >> >>>> + can be owned by a remote core. >>>> + The video port controlling these planes acts as a shared video port >>>> + and it can be configured with write access either by Linux or the >>>> + remote core in which case Linux only has read-only access to that >>>> + video port. >>> >>> What is the purpose of this property when all the other properties are >>> required? >>> >> >> The ti,dss-shared-mode and below group of properties are optional. But >> if ti,dss-shared-mode is set then only driver should parse below set of >> properties. > > Let me re-phrase. Drop this property. It serves no purpose since all > the properties have to be present anyway. > Noted. >>>> + ti,dss-shared-mode-planes: >>>> + description: >>>> + The video layer that is owned by processing core running Linux. >>>> + The display driver running from Linux has exclusive write access to >>>> + this video layer. >>>> + $ref: /schemas/types.yaml#/definitions/string >>>> + enum: [vidl, vid] >>>> + >>>> + ti,dss-shared-mode-vp: >>>> + description: >>>> + The video port that is being used in context of processing core >>>> + running Linux with display susbsytem being used in shared mode. >>>> + This can be owned either by the processing core running Linux in >>>> + which case Linux has the write access and the responsibility to >>>> + configure this video port and the associated overlay manager or >>>> + it can be shared between core running Linux and a remote core >>>> + with remote core provided with write access to this video port and >>>> + associated overlay managers and remote core configures and drives >>>> + this video port also feeding data from one or more of the >>>> + video planes owned by Linux, with Linux only having read-only access >>>> + to this video port and associated overlay managers. >>>> + >>>> + $ref: /schemas/types.yaml#/definitions/string >>>> + enum: [vp1, vp2] >>>> + >>>> + ti,dss-shared-mode-common: >>>> + description: >>>> + The DSS register region owned by processing core running Linux. >>>> + $ref: /schemas/types.yaml#/definitions/string >>>> + enum: [common, common1] >>>> + >>>> + ti,dss-shared-mode-vp-owned: >>>> + description: >>>> + This tells whether processing core running Linux has write access to >>>> + the video ports enlisted in ti,dss-shared-mode-vps. >>>> + $ref: /schemas/types.yaml#/definitions/uint32 >>>> + enum: [0, 1] >>> >>> This can be boolean. Do writes abort or just get ignored? The latter can >>> be probed and doesn't need a property. >>> >> >> Although we have kept all these properties as enums, but actually in driver we >> are treating them as array of enums and using device_property_read_u32_array. >> >> The reason being that for SoCs using am65x-dss bindings they can only have >> single entry either vp1 or vp2 or 0 or 1 as there are only two video ports. So >> for them the device tree overlay would look like : >> &dss0 { >> >> ti,dss-shared-mode; >> >> ti,dss-shared-mode-vp = "vp1"; >> >> ti,dss-shared-mode-vp-owned = <0>; >> >> ti,dss-shared-mode-common = "common1"; >> >> ti,dss-shared-mode-planes = "vid"; >> >> ti,dss-shared-mode-plane-zorder = <0>; >> >> interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_>; >> } >> >> But we also plan to extend these bindings to SoCs using >> Documentation/devicetree/bindings/display/ti/ti,j721e-dss.yaml where there are >> multiple video ports. So in that the driver and bindings should support below >> configuration : > > What are you waiting for? In that case, all these properties need to > be in a shared schema file and referenced here. Otherwise you will be > defining their types twice (and different types too if some are > changed to arrays). > Noted, thanks for suggesting this, shared schema file indeed looks like a better idea. >> &dss0 { >> >> ti,dss-shared-mode; >> >> ti,dss-shared-mode-vp = "vp1 vp2"; >> >> ti,dss-shared-mode-vp-owned = <0 1>; >> >> ti,dss-shared-mode-common = "common_s1"; >> >> ti,dss-shared-mode-planes = "vid1 vidl1"; >> >> ti,dss-shared-mode-plane-zorder = <0 1>; >> >> interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_>; >> } >> >> As I am using device_property_read_u32_array in driver I thought to keep this >> as uint32 in enum for am65x.yaml which works well with the driver. > > The type and what accessor functions the kernel uses should match. I > plan to add (debug) checking on this. Debug only because as there's no > type info in the DTB, it all has to be extracted from schemas and put > into the kernel. > Yes, with the shared schema it should be array instead of integer. >>>> + >>>> + ti,dss-shared-mode-plane-zorder: >>>> + description: >>>> + The zorder of the planes owned by Linux. >>>> + For the scenario where Linux is not having write access to associated >>>> + video port, this field is just for >>>> + informational purpose to enumerate the zorder configuration >>>> + being used by remote core. >>>> + >>>> + $ref: /schemas/types.yaml#/definitions/uint32 >>>> + enum: [0, 1] >>> >>> I don't understand how 0 or 1 defines Z-order. >>> >> >> As there are only two planes in total so z-order can be either 0 or 1 for the >> shared mode plane as there is only a single entry of plane. >> For e.g. if ti,dss-shared-mode-plane-zorder is 1 then it means the plane owned >> by Linux is programmed as topmost plane wherease the plane owned by remote >> core is programmed as the underneath one. > > Please reword the description to make all this clear. The index is the > plane number and value is the z-order with 0 being bottom and N being > the top. I guess this should be an array as well. > Yes, this was kept as uint32 since with am65x-dss only one plane was available for sharing, but with the shared schema this too should be an array instead of integer. Regards Devarsh > Rob >
diff --git a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml index 55e3e490d0e6..d9bc69fbf1fb 100644 --- a/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml +++ b/Documentation/devicetree/bindings/display/ti/ti,am65x-dss.yaml @@ -112,6 +112,86 @@ properties: Input memory (from main memory to dispc) bandwidth limit in bytes per second + ti,dss-shared-mode: + type: boolean + description: + TI DSS7 supports sharing of display between multiple hosts + as it provides separate register space for display configuration and + unique interrupt line to each host. + One of the host is provided access to the global display + configuration labelled as "common" region of DSS allows that host + exclusive access to global registers of DSS while other host can + configure the display for it's usage using a separate register + space labelled as "common1". + The DSS resources can be partitioned in such a way that one or more + of the video planes are owned by Linux whereas other video planes + can be owned by a remote core. + The video port controlling these planes acts as a shared video port + and it can be configured with write access either by Linux or the + remote core in which case Linux only has read-only access to that + video port. + + ti,dss-shared-mode-planes: + description: + The video layer that is owned by processing core running Linux. + The display driver running from Linux has exclusive write access to + this video layer. + $ref: /schemas/types.yaml#/definitions/string + enum: [vidl, vid] + + ti,dss-shared-mode-vp: + description: + The video port that is being used in context of processing core + running Linux with display susbsytem being used in shared mode. + This can be owned either by the processing core running Linux in + which case Linux has the write access and the responsibility to + configure this video port and the associated overlay manager or + it can be shared between core running Linux and a remote core + with remote core provided with write access to this video port and + associated overlay managers and remote core configures and drives + this video port also feeding data from one or more of the + video planes owned by Linux, with Linux only having read-only access + to this video port and associated overlay managers. + + $ref: /schemas/types.yaml#/definitions/string + enum: [vp1, vp2] + + ti,dss-shared-mode-common: + description: + The DSS register region owned by processing core running Linux. + $ref: /schemas/types.yaml#/definitions/string + enum: [common, common1] + + ti,dss-shared-mode-vp-owned: + description: + This tells whether processing core running Linux has write access to + the video ports enlisted in ti,dss-shared-mode-vps. + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1] + + ti,dss-shared-mode-plane-zorder: + description: + The zorder of the planes owned by Linux. + For the scenario where Linux is not having write access to associated + video port, this field is just for + informational purpose to enumerate the zorder configuration + being used by remote core. + + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1] + +dependencies: + ti,dss-shared-mode: [ 'ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] + ti,dss-shared-mode-vp: ['ti,dss-shared-mode', 'ti,dss-shared-mode-planes', + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] + ti,dss-shared-mode-planes: ['ti,dss-shared-mode', 'ti,dss-shared-mode-vp', + 'ti,dss-shared-mode-plane-zorder', 'ti,dss-shared-mode-vp-owned'] + ti,dss-shared-mode-plane-zorder: ['ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', + 'ti,dss-shared-mode', 'ti,dss-shared-mode-vp-owned'] + ti,dss-shared-mode-vp-owned: ['ti,dss-shared-mode-planes', 'ti,dss-shared-mode-vp', + 'ti,dss-shared-mode', 'ti,dss-shared-mode-plane-zorder'] + allOf: - if: properties: @@ -123,6 +203,8 @@ allOf: ports: properties: port@0: false + ti,dss-shared-mode-vp: + enum: [vp2] required: - compatible