[v2,1/2] Documentation: dt-bindings: k3-r5f-rproc: Add new compatible for AM62 SoC family
Message ID | 20221130134052.7513-2-devarsht@ti.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp934617wrr; Wed, 30 Nov 2022 05:51:25 -0800 (PST) X-Google-Smtp-Source: AA0mqf73vXuXR/FqXK3q8NSQChY/kNx2SrbWxEhhv2A0rHH4vLG2lq2q1sbmqC5mmqTvt/R1WECu X-Received: by 2002:a17:906:fd57:b0:7be:5c6f:e63c with SMTP id wi23-20020a170906fd5700b007be5c6fe63cmr16004018ejb.253.1669816285835; Wed, 30 Nov 2022 05:51:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669816285; cv=none; d=google.com; s=arc-20160816; b=KyXMKOtt0SNjwGuo8Clt/PsUYArdpCUKx88aalzsb4nJXq7Hc/mqDYj3ex7bohnx7Q rQYFObsijfZJ0xHg27RYfM/k55ELxx9aRZ8WIaExdomhNRE+pheNklC3VLH30ck7q5b9 5ajF5hN8iyAJep4s0zFW6o3eB1LEnY1qEWG958AhUaYXB2z3nbS/Orsh8KvMKUQGroLB UMFnEYIVjWbjRKWBvC7aSIfvr/GZlMUr5fiVdAXDn3paJ89T8oRqBnHMBKUvhUJ5F7ck 4YAt4lOzmLpJpg6+gimZ/0Sp7YhNcLhTjmu6LocnxlkCwm9SX/FTV0SLyQSV9l0Cg2gc 5oQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=8YKPb9kKgoZXYtxbyNxPTNb4luJ+B06jTYrMRxwozK4=; b=cKjiMnnQ2QqYTN0EYDD5ACfc99UQ4hzPH2/z9S4ovYqvCmZ2O5UXfIk1PqFVZAO8nx rXOuBrNfDc8eOI8vLmw4MiG4Sqihh6ZlS34/z7U15yMEbTThTncazQHj00ae2HWaJ6r0 PtYwynV3Mc9ItXG5CT/pp73OnS7E9t78LEym4OAm8kEVoZ3Mxsl1vg0bX8JnboNqKVxv NdFEoKy/ouBuJv9iMtUdeE7/aRTMjjNBnHMCgBMjOYjXcEfEPVGFP+ctzzJBFTQi+AS9 2zRA5AgfMhALm+A43N+wngbrGIYJlAJAlMDaToZQ4WbIY501KXVuO8rriGdGYEvnUzhi fbzQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=DieKqi42; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k7-20020a05640212c700b0046b2966d088si1228971edx.502.2022.11.30.05.51.01; Wed, 30 Nov 2022 05:51:25 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=DieKqi42; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231326AbiK3Nlb (ORCPT <rfc822;heyuhang3455@gmail.com> + 99 others); Wed, 30 Nov 2022 08:41:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45818 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230222AbiK3NlV (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Wed, 30 Nov 2022 08:41:21 -0500 Received: from fllv0016.ext.ti.com (fllv0016.ext.ti.com [198.47.19.142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3EE3B31EE2; Wed, 30 Nov 2022 05:41:14 -0800 (PST) Received: from lelv0266.itg.ti.com ([10.180.67.225]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id 2AUDeuw2021226; Wed, 30 Nov 2022 07:40:56 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1669815656; bh=8YKPb9kKgoZXYtxbyNxPTNb4luJ+B06jTYrMRxwozK4=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=DieKqi42X/7YvgteG4OOuOCW3kG4jPAEJxdMCCxFblybOa+LQk2vz/x3T+KFgvYDQ SaeU5X0wl7Am9/KFE5zL/GvzBo/JxZYB7z+FWmIgYR7pTc3wABLpslkaAq/3x07fnm 0nJqmZ5uiVXOW+891pPOgQH8VtOC0/qEmu7qCs1o= Received: from DFLE109.ent.ti.com (dfle109.ent.ti.com [10.64.6.30]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 2AUDeuCT016089 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 30 Nov 2022 07:40:56 -0600 Received: from DFLE102.ent.ti.com (10.64.6.23) by DFLE109.ent.ti.com (10.64.6.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.16; Wed, 30 Nov 2022 07:40:55 -0600 Received: from fllv0039.itg.ti.com (10.64.41.19) by DFLE102.ent.ti.com (10.64.6.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.16 via Frontend Transport; Wed, 30 Nov 2022 07:40:55 -0600 Received: from localhost (ileaxei01-snat2.itg.ti.com [10.180.69.6]) by fllv0039.itg.ti.com (8.15.2/8.15.2) with ESMTP id 2AUDettT127197; Wed, 30 Nov 2022 07:40:55 -0600 From: Devarsh Thakkar <devarsht@ti.com> To: <andersson@kernel.org>, <mathieu.poirier@linaro.org>, <p.zabel@pengutronix.de>, <linux-remoteproc@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>, <s-anna@ti.com> CC: <robh+dt@kernel.org>, <krzysztof.kozlowski+dt@linaro.org>, <hnagalla@ti.com>, <praneeth@ti.com>, <nm@ti.com>, <vigneshr@ti.com>, <a-bhatia1@ti.com>, <j-luthra@ti.com> Subject: [PATCH v2 1/2] Documentation: dt-bindings: k3-r5f-rproc: Add new compatible for AM62 SoC family Date: Wed, 30 Nov 2022 19:10:51 +0530 Message-ID: <20221130134052.7513-2-devarsht@ti.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221130134052.7513-1-devarsht@ti.com> References: <20221130134052.7513-1-devarsht@ti.com> MIME-Version: 1.0 Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750929282092946992?= X-GMAIL-MSGID: =?utf-8?q?1750929282092946992?= |
Series |
Add single core R5F IPC for AM62 SoC family
|
|
Commit Message
Devarsh Thakkar
Nov. 30, 2022, 1:40 p.m. UTC
AM62 family of devices don't have a R5F cluster, instead
they have single core DM R5F.
Add new compatible string ti,am62-r5fss to support this scenario.
When this new compatible is used don't allow cluster-mode
property usage in device-tree as this implies that there
is no R5F cluster available and only single R5F core
is present.
Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
---
V2: Avoid acronyms, use "Device Manager" instead of "DM"
---
.../bindings/remoteproc/ti,k3-r5f-rproc.yaml | 48 +++++++++++++------
1 file changed, 34 insertions(+), 14 deletions(-)
Comments
On 30/11/2022 14:40, Devarsh Thakkar wrote: > AM62 family of devices don't have a R5F cluster, instead > they have single core DM R5F. > Add new compatible string ti,am62-r5fss to support this scenario. > > When this new compatible is used don't allow cluster-mode > property usage in device-tree as this implies that there > is no R5F cluster available and only single R5F core > is present. > > Signed-off-by: Devarsh Thakkar <devarsht@ti.com> > --- > V2: Avoid acronyms, use "Device Manager" instead of "DM" Use subject prefixes matching the subsystem (git log --oneline -- ...). > --- > .../bindings/remoteproc/ti,k3-r5f-rproc.yaml | 48 +++++++++++++------ > 1 file changed, 34 insertions(+), 14 deletions(-) > > diff --git a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml > index fb9605f0655b..91357635025a 100644 > --- a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml > +++ b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml > @@ -21,6 +21,9 @@ description: | > called "Single-CPU" mode, where only Core0 is used, but with ability to use > Core1's TCMs as well. > > + AM62 SoC family support a single R5F core only which runs Device Manager > + firmware and can also be used as a remote processor with IPC communication. > + > Each Dual-Core R5F sub-system is represented as a single DTS node > representing the cluster, with a pair of child DT nodes representing > the individual R5F cores. Each node has a number of required or optional > @@ -28,6 +31,9 @@ description: | > the device management of the remote processor and to communicate with the > remote processor. > > + Since AM62 SoC family only support a single core, there is no cluster-mode > + property setting required for it. > + > properties: > $nodename: > pattern: "^r5fss(@.*)?" > @@ -38,6 +44,7 @@ properties: > - ti,j721e-r5fss > - ti,j7200-r5fss > - ti,am64-r5fss > + - ti,am62-r5fss Some order? Alphabetical, so before am64? Same in other places. > - ti,j721s2-r5fss > > power-domains: > @@ -80,7 +87,8 @@ patternProperties: > node representing a TI instantiation of the Arm Cortex R5F core. There > are some specific integration differences for the IP like the usage of > a Region Address Translator (RAT) for translating the larger SoC bus > - addresses into a 32-bit address space for the processor. > + addresses into a 32-bit address space for the processor. For AM62x, > + should only define one R5F child node as it has only one core available. > > Each R5F core has an associated 64 KB of Tightly-Coupled Memory (TCM) > internal memories split between two banks - TCMA and TCMB (further > @@ -104,6 +112,7 @@ patternProperties: > - ti,j721e-r5f > - ti,j7200-r5f > - ti,am64-r5f > + - ti,am62-r5f > - ti,j721s2-r5f > > reg: > @@ -207,20 +216,31 @@ patternProperties: > - firmware-name > > unevaluatedProperties: false Blank line. > +allOf: > + - if: > + properties: > + compatible: > + enum: > + - ti,am64-r5fss > + then: > + properties: > + ti,cluster-mode: > + enum: [0, 2] > + > + else: > + properties: > + ti,cluster-mode: It's not really valid anymore for ti,am62-r5fss, so this cannot be simple "else". Instead you need to list all compatibles. > + enum: [0, 1] > + > + - if: > + properties: > + compatible: > + enum: > + - ti,am62-r5fss > + then: > + properties: > + ti,cluster-mode: false > > -if: > - properties: > - compatible: > - enum: > - - ti,am64-r5fss > -then: > - properties: > - ti,cluster-mode: > - enum: [0, 2] > -else: > - properties: > - ti,cluster-mode: > - enum: [0, 1] > > required: > - compatible Best regards, Krzysztof
Hi Krzysztof, Thanks for the review. Please find my response inline. On 30/11/22 20:33, Krzysztof Kozlowski wrote: > On 30/11/2022 14:40, Devarsh Thakkar wrote: >> AM62 family of devices don't have a R5F cluster, instead >> they have single core DM R5F. >> Add new compatible string ti,am62-r5fss to support this scenario. >> >> When this new compatible is used don't allow cluster-mode >> property usage in device-tree as this implies that there >> is no R5F cluster available and only single R5F core >> is present. >> >> Signed-off-by: Devarsh Thakkar <devarsht@ti.com> >> --- >> V2: Avoid acronyms, use "Device Manager" instead of "DM" > > Use subject prefixes matching the subsystem (git log --oneline -- ...). Agreed, I will update the prefix as dt-bindings: remoteproc: k3-r5f: in V3. > >> --- >> .../bindings/remoteproc/ti,k3-r5f-rproc.yaml | 48 +++++++++++++------ >> 1 file changed, 34 insertions(+), 14 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml >> index fb9605f0655b..91357635025a 100644 >> --- a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml >> +++ b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml >> @@ -21,6 +21,9 @@ description: | >> called "Single-CPU" mode, where only Core0 is used, but with ability to use >> Core1's TCMs as well. >> >> + AM62 SoC family support a single R5F core only which runs Device Manager >> + firmware and can also be used as a remote processor with IPC communication. >> + >> Each Dual-Core R5F sub-system is represented as a single DTS node >> representing the cluster, with a pair of child DT nodes representing >> the individual R5F cores. Each node has a number of required or optional >> @@ -28,6 +31,9 @@ description: | >> the device management of the remote processor and to communicate with the >> remote processor. >> >> + Since AM62 SoC family only support a single core, there is no cluster-mode >> + property setting required for it. >> + >> properties: >> $nodename: >> pattern: "^r5fss(@.*)?" >> @@ -38,6 +44,7 @@ properties: >> - ti,j721e-r5fss >> - ti,j7200-r5fss >> - ti,am64-r5fss >> + - ti,am62-r5fss > > Some order? Alphabetical, so before am64? Same in other places. Agreed, I will update in V3 accordingly. > > >> - ti,j721s2-r5fss >> >> power-domains: >> @@ -80,7 +87,8 @@ patternProperties: >> node representing a TI instantiation of the Arm Cortex R5F core. There >> are some specific integration differences for the IP like the usage of >> a Region Address Translator (RAT) for translating the larger SoC bus >> - addresses into a 32-bit address space for the processor. >> + addresses into a 32-bit address space for the processor. For AM62x, >> + should only define one R5F child node as it has only one core available. >> >> Each R5F core has an associated 64 KB of Tightly-Coupled Memory (TCM) >> internal memories split between two banks - TCMA and TCMB (further >> @@ -104,6 +112,7 @@ patternProperties: >> - ti,j721e-r5f >> - ti,j7200-r5f >> - ti,am64-r5f >> + - ti,am62-r5f >> - ti,j721s2-r5f >> >> reg: >> @@ -207,20 +216,31 @@ patternProperties: >> - firmware-name >> >> unevaluatedProperties: false > > Blank line. Agreed, I will remove it in V3. > >> +allOf: >> + - if: >> + properties: >> + compatible: >> + enum: >> + - ti,am64-r5fss >> + then: >> + properties: >> + ti,cluster-mode: >> + enum: [0, 2] >> + >> + else: >> + properties: >> + ti,cluster-mode: > > It's not really valid anymore for ti,am62-r5fss, so this cannot be > simple "else". Instead you need to list all compatibles. I agree that the else block is not valid for am62x, but my understanding is that since all the blocks under allOf are checked for validity, I thought to add a separate if block only for am62x to set cluster-mode to false [1], which I believe would negate the effect of above else condition for am62x, so that we don't have to list all compatibles under separate if blocks. Just to verify this, I deliberately set cluster-mode=1 in am62x devicetree and then ran a dtbs-check and got below log : "linux-next/arch/arm64/boot/dts/ti/k3-am625-sk.dtb: r5fss@78000000: ti,cluster-mode: False schema does not allow [[1]]" and above warning log goes away when i remove the cluster-mode node in am62x devicetree. But please do let me know if I am missing something here or there is a better/more proper way to do this. Best Regards, Devarsh > >> + enum: [0, 1] >> + [1] >> + - if: >> + properties: >> + compatible: >> + enum: >> + - ti,am62-r5fss >> + then: >> + properties: >> + ti,cluster-mode: false >> >> -if: >> - properties: >> - compatible: >> - enum: >> - - ti,am64-r5fss >> -then: >> - properties: >> - ti,cluster-mode: >> - enum: [0, 2] >> -else: >> - properties: >> - ti,cluster-mode: >> - enum: [0, 1] >> >> required: >> - compatible > > Best regards, > Krzysztof >
On 21/12/2022 08:42, Devarsh Thakkar wrote: > Hi Krzysztof, > > Thanks for the review. Please find my response inline. > > On 30/11/22 20:33, Krzysztof Kozlowski wrote: >> On 30/11/2022 14:40, Devarsh Thakkar wrote: >>> AM62 family of devices don't have a R5F cluster, instead >>> they have single core DM R5F. >>> Add new compatible string ti,am62-r5fss to support this scenario. >>> >>> When this new compatible is used don't allow cluster-mode >>> property usage in device-tree as this implies that there >>> is no R5F cluster available and only single R5F core >>> is present. >>> >>> Signed-off-by: Devarsh Thakkar <devarsht@ti.com> >>> --- >>> V2: Avoid acronyms, use "Device Manager" instead of "DM" >> >> Use subject prefixes matching the subsystem (git log --oneline -- ...). > Agreed, I will update the prefix as dt-bindings: remoteproc: k3-r5f: in V3. >> >>> --- >>> .../bindings/remoteproc/ti,k3-r5f-rproc.yaml | 48 +++++++++++++------ >>> 1 file changed, 34 insertions(+), 14 deletions(-) >>> >>> diff --git a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml >>> index fb9605f0655b..91357635025a 100644 >>> --- a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml >>> +++ b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml >>> @@ -21,6 +21,9 @@ description: | >>> called "Single-CPU" mode, where only Core0 is used, but with ability to use >>> Core1's TCMs as well. >>> >>> + AM62 SoC family support a single R5F core only which runs Device Manager >>> + firmware and can also be used as a remote processor with IPC communication. >>> + >>> Each Dual-Core R5F sub-system is represented as a single DTS node >>> representing the cluster, with a pair of child DT nodes representing >>> the individual R5F cores. Each node has a number of required or optional >>> @@ -28,6 +31,9 @@ description: | >>> the device management of the remote processor and to communicate with the >>> remote processor. >>> >>> + Since AM62 SoC family only support a single core, there is no cluster-mode >>> + property setting required for it. >>> + >>> properties: >>> $nodename: >>> pattern: "^r5fss(@.*)?" >>> @@ -38,6 +44,7 @@ properties: >>> - ti,j721e-r5fss >>> - ti,j7200-r5fss >>> - ti,am64-r5fss >>> + - ti,am62-r5fss >> >> Some order? Alphabetical, so before am64? Same in other places. > Agreed, I will update in V3 accordingly. >> >> >>> - ti,j721s2-r5fss >>> >>> power-domains: >>> @@ -80,7 +87,8 @@ patternProperties: >>> node representing a TI instantiation of the Arm Cortex R5F core. There >>> are some specific integration differences for the IP like the usage of >>> a Region Address Translator (RAT) for translating the larger SoC bus >>> - addresses into a 32-bit address space for the processor. >>> + addresses into a 32-bit address space for the processor. For AM62x, >>> + should only define one R5F child node as it has only one core available. >>> >>> Each R5F core has an associated 64 KB of Tightly-Coupled Memory (TCM) >>> internal memories split between two banks - TCMA and TCMB (further >>> @@ -104,6 +112,7 @@ patternProperties: >>> - ti,j721e-r5f >>> - ti,j7200-r5f >>> - ti,am64-r5f >>> + - ti,am62-r5f >>> - ti,j721s2-r5f >>> >>> reg: >>> @@ -207,20 +216,31 @@ patternProperties: >>> - firmware-name >>> >>> unevaluatedProperties: false >> >> Blank line. > Agreed, I will remove it in V3. >> >>> +allOf: >>> + - if: >>> + properties: >>> + compatible: >>> + enum: >>> + - ti,am64-r5fss >>> + then: >>> + properties: >>> + ti,cluster-mode: >>> + enum: [0, 2] >>> + >>> + else: >>> + properties: >>> + ti,cluster-mode: >> >> It's not really valid anymore for ti,am62-r5fss, so this cannot be >> simple "else". Instead you need to list all compatibles. > I agree that the else block is not valid for am62x, but my understanding is that since all the blocks under allOf are checked for validity, > I thought to add a separate if block only for am62x to set cluster-mode to false [1], which I believe would negate the effect of above else condition for am62x, > so that we don't have to list all compatibles under separate if blocks. > > Just to verify this, I deliberately set cluster-mode=1 in am62x devicetree and then ran a dtbs-check and got below log : > "linux-next/arch/arm64/boot/dts/ti/k3-am625-sk.dtb: r5fss@78000000: ti,cluster-mode: False schema does not allow [[1]]" > > and above warning log goes away when i remove the cluster-mode node in am62x devicetree. > But please do let me know if I am missing something here or there is a better/more proper way to do this. This was three weeks ago, so hundreds of patches ago, I don't remember anymore. Just look at your patch - it is clearly incorrect. You said in the patch that for compatibles other than ti,am64-r5fss cluster mode is BOTH [0, 1] AND false. I gave you the way to fix it. Feel free to fix it other ways if it gives correct result. Best regards, Krzysztof
Hi Krzysztof, On 21/12/22 15:06, Krzysztof Kozlowski wrote: > On 21/12/2022 08:42, Devarsh Thakkar wrote: >> Hi Krzysztof, >> >> Thanks for the review. Please find my response inline. >> >> On 30/11/22 20:33, Krzysztof Kozlowski wrote: >>> On 30/11/2022 14:40, Devarsh Thakkar wrote: >>>> AM62 family of devices don't have a R5F cluster, instead >>>> they have single core DM R5F. >>>> Add new compatible string ti,am62-r5fss to support this scenario. >>>> >>>> When this new compatible is used don't allow cluster-mode >>>> property usage in device-tree as this implies that there >>>> is no R5F cluster available and only single R5F core >>>> is present. >>>> >>>> Signed-off-by: Devarsh Thakkar <devarsht@ti.com> >>>> --- >>>> V2: Avoid acronyms, use "Device Manager" instead of "DM" >>> >>> Use subject prefixes matching the subsystem (git log --oneline -- ...). >> Agreed, I will update the prefix as dt-bindings: remoteproc: k3-r5f: in V3. >>> >>>> --- >>>> .../bindings/remoteproc/ti,k3-r5f-rproc.yaml | 48 +++++++++++++------ >>>> 1 file changed, 34 insertions(+), 14 deletions(-) >>>> >>>> diff --git a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml >>>> index fb9605f0655b..91357635025a 100644 >>>> --- a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml >>>> +++ b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml >>>> @@ -21,6 +21,9 @@ description: | >>>> called "Single-CPU" mode, where only Core0 is used, but with ability to use >>>> Core1's TCMs as well. >>>> >>>> + AM62 SoC family support a single R5F core only which runs Device Manager >>>> + firmware and can also be used as a remote processor with IPC communication. >>>> + >>>> Each Dual-Core R5F sub-system is represented as a single DTS node >>>> representing the cluster, with a pair of child DT nodes representing >>>> the individual R5F cores. Each node has a number of required or optional >>>> @@ -28,6 +31,9 @@ description: | >>>> the device management of the remote processor and to communicate with the >>>> remote processor. >>>> >>>> + Since AM62 SoC family only support a single core, there is no cluster-mode >>>> + property setting required for it. >>>> + >>>> properties: >>>> $nodename: >>>> pattern: "^r5fss(@.*)?" >>>> @@ -38,6 +44,7 @@ properties: >>>> - ti,j721e-r5fss >>>> - ti,j7200-r5fss >>>> - ti,am64-r5fss >>>> + - ti,am62-r5fss >>> >>> Some order? Alphabetical, so before am64? Same in other places. >> Agreed, I will update in V3 accordingly. >>> >>> >>>> - ti,j721s2-r5fss >>>> >>>> power-domains: >>>> @@ -80,7 +87,8 @@ patternProperties: >>>> node representing a TI instantiation of the Arm Cortex R5F core. There >>>> are some specific integration differences for the IP like the usage of >>>> a Region Address Translator (RAT) for translating the larger SoC bus >>>> - addresses into a 32-bit address space for the processor. >>>> + addresses into a 32-bit address space for the processor. For AM62x, >>>> + should only define one R5F child node as it has only one core available. >>>> >>>> Each R5F core has an associated 64 KB of Tightly-Coupled Memory (TCM) >>>> internal memories split between two banks - TCMA and TCMB (further >>>> @@ -104,6 +112,7 @@ patternProperties: >>>> - ti,j721e-r5f >>>> - ti,j7200-r5f >>>> - ti,am64-r5f >>>> + - ti,am62-r5f >>>> - ti,j721s2-r5f >>>> >>>> reg: >>>> @@ -207,20 +216,31 @@ patternProperties: >>>> - firmware-name >>>> >>>> unevaluatedProperties: false >>> >>> Blank line. >> Agreed, I will remove it in V3. >>> >>>> +allOf: >>>> + - if: >>>> + properties: >>>> + compatible: >>>> + enum: >>>> + - ti,am64-r5fss >>>> + then: >>>> + properties: >>>> + ti,cluster-mode: >>>> + enum: [0, 2] >>>> + >>>> + else: >>>> + properties: >>>> + ti,cluster-mode: >>> >>> It's not really valid anymore for ti,am62-r5fss, so this cannot be >>> simple "else". Instead you need to list all compatibles. >> I agree that the else block is not valid for am62x, but my understanding is that since all the blocks under allOf are checked for validity, >> I thought to add a separate if block only for am62x to set cluster-mode to false [1], which I believe would negate the effect of above else condition for am62x, >> so that we don't have to list all compatibles under separate if blocks. >> >> Just to verify this, I deliberately set cluster-mode=1 in am62x devicetree and then ran a dtbs-check and got below log : [2] >> "linux-next/arch/arm64/boot/dts/ti/k3-am625-sk.dtb: r5fss@78000000: ti,cluster-mode: False schema does not allow [[1]]" >> >> and above warning log goes away when i remove the cluster-mode node in am62x devicetree. >> But please do let me know if I am missing something here or there is a better/more proper way to do this. > > This was three weeks ago, so hundreds of patches ago, I don't remember > anymore. My apologies for the delay. > > Just look at your patch - it is clearly incorrect. You said in the patch > that for compatibles other than ti,am64-r5fss cluster mode is BOTH [0, > 1] AND false. cluster-mode is BOTH [0,1] and false only in case of AM62x as per below snippet, but since it's under allOf the impact of latter will supersede, schema validation will fail even if cluster-mode set to 0 or 1 for am62x due to below snippet as shared in obesrvation log above [2]. " - if: properties: compatible: enum: - ti,am62-r5fss then: properties: ti,cluster-mode: false" Sorry for the back and forth, I just thought to describe more clearly what I was up-to as I thought above should be functionally fine and it also saves us from having separate if blocks for each compatible, but I am open to adding separate if blocks as you earlier suggested if that seems more cleaner solution. Best Regards, Devarsh > > I gave you the way to fix it. Feel free to fix it other ways if it gives > correct result. > > Best regards, > Krzysztof >
On 21/12/2022 17:29, Devarsh Thakkar wrote: >> >> Just look at your patch - it is clearly incorrect. You said in the patch >> that for compatibles other than ti,am64-r5fss cluster mode is BOTH [0, >> 1] AND false. > > cluster-mode is BOTH [0,1] and false only in case of AM62x as per below snippet Yes, for that variant you have conflicting approach. , but since it's under allOf the impact of latter will supersede, schema validation will fail even if cluster-mode set to 0 or 1 for am62x due to below snippet as shared in obesrvation log above [2]. Yeah, but the code is confusing. So again - you are saying with allOf that both conditions are applicable. Your intentions of superseding do not matter here - you said that allOf conditions must be taken into account. These conditions can be reversed any time, don't you think? > > " - if: > properties: > compatible: > enum: > - ti,am62-r5fss > then: > properties: > ti,cluster-mode: false" > > Sorry for the back and forth, I just thought to describe more clearly what I was up-to as I thought above should be functionally fine and it also saves us from having separate if blocks for each compatible, but I am open to adding separate if blocks as you earlier suggested if that seems more cleaner solution. You need to fix your email client to properly wrap messages. Best regards, Krzysztof
diff --git a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml index fb9605f0655b..91357635025a 100644 --- a/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml +++ b/Documentation/devicetree/bindings/remoteproc/ti,k3-r5f-rproc.yaml @@ -21,6 +21,9 @@ description: | called "Single-CPU" mode, where only Core0 is used, but with ability to use Core1's TCMs as well. + AM62 SoC family support a single R5F core only which runs Device Manager + firmware and can also be used as a remote processor with IPC communication. + Each Dual-Core R5F sub-system is represented as a single DTS node representing the cluster, with a pair of child DT nodes representing the individual R5F cores. Each node has a number of required or optional @@ -28,6 +31,9 @@ description: | the device management of the remote processor and to communicate with the remote processor. + Since AM62 SoC family only support a single core, there is no cluster-mode + property setting required for it. + properties: $nodename: pattern: "^r5fss(@.*)?" @@ -38,6 +44,7 @@ properties: - ti,j721e-r5fss - ti,j7200-r5fss - ti,am64-r5fss + - ti,am62-r5fss - ti,j721s2-r5fss power-domains: @@ -80,7 +87,8 @@ patternProperties: node representing a TI instantiation of the Arm Cortex R5F core. There are some specific integration differences for the IP like the usage of a Region Address Translator (RAT) for translating the larger SoC bus - addresses into a 32-bit address space for the processor. + addresses into a 32-bit address space for the processor. For AM62x, + should only define one R5F child node as it has only one core available. Each R5F core has an associated 64 KB of Tightly-Coupled Memory (TCM) internal memories split between two banks - TCMA and TCMB (further @@ -104,6 +112,7 @@ patternProperties: - ti,j721e-r5f - ti,j7200-r5f - ti,am64-r5f + - ti,am62-r5f - ti,j721s2-r5f reg: @@ -207,20 +216,31 @@ patternProperties: - firmware-name unevaluatedProperties: false +allOf: + - if: + properties: + compatible: + enum: + - ti,am64-r5fss + then: + properties: + ti,cluster-mode: + enum: [0, 2] + + else: + properties: + ti,cluster-mode: + enum: [0, 1] + + - if: + properties: + compatible: + enum: + - ti,am62-r5fss + then: + properties: + ti,cluster-mode: false -if: - properties: - compatible: - enum: - - ti,am64-r5fss -then: - properties: - ti,cluster-mode: - enum: [0, 2] -else: - properties: - ti,cluster-mode: - enum: [0, 1] required: - compatible