* [PATCH v3 0/2] Add single core R5F IPC for AM62 SoC family
@ 2022-12-23 11:56 Devarsh Thakkar
  2022-12-23 11:56 ` [PATCH v3 1/2] dt-bindings: remoteproc: ti: Add new compatible " Devarsh Thakkar
  2022-12-23 11:56 ` [PATCH v3 2/2] remoteproc: k3-r5: Use separate compatible string for TI " Devarsh Thakkar
  0 siblings, 2 replies; 7+ messages in thread
From: Devarsh Thakkar @ 2022-12-23 11:56 UTC (permalink / raw)
  To: andersson, devicetree, mathieu.poirier, p.zabel, linux-remoteproc,
	linux-kernel, krzysztof.kozlowski, s-anna
  Cc: hnagalla, praneeth, nm, vigneshr, a-bhatia1, j-luthra, devarsht
AM62 SoC family don't have a multicore R5F cluster,
instead they have a single core R5F.
This enables IPC support with single core R5F for AM62
family of SoCs.
Devarsh Thakkar (2):
  dt-bindings: remoteproc: ti: Add new compatible for AM62 SoC family
  remoteproc: k3-r5: Use separate compatible string for TI AM62 SoC
    family
 .../bindings/remoteproc/ti,k3-r5f-rproc.yaml  | 68 +++++++++++++------
 drivers/remoteproc/ti_k3_r5_remoteproc.c      | 57 ++++++++++++----
 2 files changed, 91 insertions(+), 34 deletions(-)
-- 
2.17.1
^ permalink raw reply	[flat|nested] 7+ messages in thread
* [PATCH v3 1/2] dt-bindings: remoteproc: ti: Add new compatible for AM62 SoC family
  2022-12-23 11:56 [PATCH v3 0/2] Add single core R5F IPC for AM62 SoC family Devarsh Thakkar
@ 2022-12-23 11:56 ` Devarsh Thakkar
  2022-12-23 12:05   ` Krzysztof Kozlowski
  2022-12-26 12:18   ` Krzysztof Kozlowski
  2022-12-23 11:56 ` [PATCH v3 2/2] remoteproc: k3-r5: Use separate compatible string for TI " Devarsh Thakkar
  1 sibling, 2 replies; 7+ messages in thread
From: Devarsh Thakkar @ 2022-12-23 11:56 UTC (permalink / raw)
  To: andersson, devicetree, mathieu.poirier, p.zabel, linux-remoteproc,
	linux-kernel, krzysztof.kozlowski, s-anna
  Cc: hnagalla, praneeth, nm, vigneshr, a-bhatia1, j-luthra, devarsht
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"
V3:
- Use separate if block for each compatible for ti,cluster-mode property
- Rearrange compatibles as per alphabatical order
---
 .../bindings/remoteproc/ti,k3-r5f-rproc.yaml  | 68 +++++++++++++------
 1 file changed, 47 insertions(+), 21 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..e8a861179bd9 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,16 +31,20 @@ 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(@.*)?"
 
   compatible:
     enum:
+      - ti,am62-r5fss
+      - ti,am64-r5fss
       - ti,am654-r5fss
-      - ti,j721e-r5fss
       - ti,j7200-r5fss
-      - ti,am64-r5fss
+      - ti,j721e-r5fss
       - ti,j721s2-r5fss
 
   power-domains:
@@ -80,7 +87,9 @@ 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,
+      the R5F Sub-System device node 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
@@ -100,11 +109,12 @@ patternProperties:
     properties:
       compatible:
         enum:
-          - ti,am654-r5f
-          - ti,j721e-r5f
-          - ti,j7200-r5f
-          - ti,am64-r5f
-          - ti,j721s2-r5f
+          - ti,am62-r5fss
+          - ti,am64-r5fss
+          - ti,am654-r5fss
+          - ti,j7200-r5fss
+          - ti,j721e-r5fss
+          - ti,j721s2-r5fss
 
       reg:
         items:
@@ -208,19 +218,35 @@ patternProperties:
 
     unevaluatedProperties: false
 
-if:
-  properties:
-    compatible:
-      enum:
-        - ti,am64-r5fss
-then:
-  properties:
-    ti,cluster-mode:
-      enum: [0, 2]
-else:
-  properties:
-    ti,cluster-mode:
-      enum: [0, 1]
+allOf:
+  - if:
+      properties:
+        compatible:
+          enum:
+            - ti,am64-r5fss
+    then:
+      properties:
+        ti,cluster-mode:
+          enum: [0, 2]
+
+  - if:
+      properties:
+        compatible:
+          enum: ["ti,am654-r5fss", "ti,j7200-r5fss", "ti,j721e-r5fss",  "ti,j721s2-r5fss"]
+    then:
+      properties:
+        ti,cluster-mode:
+          enum: [0, 1]
+
+  - if:
+      properties:
+        compatible:
+          enum:
+            - ti,am62-r5fss
+    then:
+      properties:
+        ti,cluster-mode: false
+
 
 required:
   - compatible
-- 
2.17.1
^ permalink raw reply related	[flat|nested] 7+ messages in thread
* [PATCH v3 2/2] remoteproc: k3-r5: Use separate compatible string for TI AM62 SoC family
  2022-12-23 11:56 [PATCH v3 0/2] Add single core R5F IPC for AM62 SoC family Devarsh Thakkar
  2022-12-23 11:56 ` [PATCH v3 1/2] dt-bindings: remoteproc: ti: Add new compatible " Devarsh Thakkar
@ 2022-12-23 11:56 ` Devarsh Thakkar
  1 sibling, 0 replies; 7+ messages in thread
From: Devarsh Thakkar @ 2022-12-23 11:56 UTC (permalink / raw)
  To: andersson, devicetree, mathieu.poirier, p.zabel, linux-remoteproc,
	linux-kernel, krzysztof.kozlowski, s-anna
  Cc: hnagalla, praneeth, nm, vigneshr, a-bhatia1, j-luthra, devarsht
AM62 and AM62A SoCs use single core R5F which is a new scenario
different than the one being used with CLUSTER_MODE_SINGLECPU
which is for utilizing a single core from a set of cores available
in R5F cluster present in the SoC.
To support this single core scenario map it with
newly defined CLUSTER_MODE_NONE and use it when
compatible is set to ti,am62-r5fss.
Signed-off-by: Devarsh Thakkar <devarsht@ti.com>
---
V2: Fix indentation and ordering issues as per review comments
V3: Change CLUSTER_MODE_NONE value to -1
---
 drivers/remoteproc/ti_k3_r5_remoteproc.c | 57 ++++++++++++++++++------
 1 file changed, 44 insertions(+), 13 deletions(-)
diff --git a/drivers/remoteproc/ti_k3_r5_remoteproc.c b/drivers/remoteproc/ti_k3_r5_remoteproc.c
index 0481926c6975..127f1f68e592 100644
--- a/drivers/remoteproc/ti_k3_r5_remoteproc.c
+++ b/drivers/remoteproc/ti_k3_r5_remoteproc.c
@@ -74,9 +74,11 @@ struct k3_r5_mem {
  *   Split mode      : AM65x, J721E, J7200 and AM64x SoCs
  *   LockStep mode   : AM65x, J721E and J7200 SoCs
  *   Single-CPU mode : AM64x SoCs only
+ *   None            : AM62x, AM62A SoCs
  */
 enum cluster_mode {
-	CLUSTER_MODE_SPLIT = 0,
+	CLUSTER_MODE_NONE = -1,
+	CLUSTER_MODE_SPLIT,
 	CLUSTER_MODE_LOCKSTEP,
 	CLUSTER_MODE_SINGLECPU,
 };
@@ -86,11 +88,13 @@ enum cluster_mode {
  * @tcm_is_double: flag to denote the larger unified TCMs in certain modes
  * @tcm_ecc_autoinit: flag to denote the auto-initialization of TCMs for ECC
  * @single_cpu_mode: flag to denote if SoC/IP supports Single-CPU mode
+ * @is_single_core: flag to denote if SoC/IP has only single core R5
  */
 struct k3_r5_soc_data {
 	bool tcm_is_double;
 	bool tcm_ecc_autoinit;
 	bool single_cpu_mode;
+	bool is_single_core;
 };
 
 /**
@@ -838,7 +842,8 @@ static int k3_r5_rproc_configure(struct k3_r5_rproc *kproc)
 
 	core0 = list_first_entry(&cluster->cores, struct k3_r5_core, elem);
 	if (cluster->mode == CLUSTER_MODE_LOCKSTEP ||
-	    cluster->mode == CLUSTER_MODE_SINGLECPU) {
+	    cluster->mode == CLUSTER_MODE_SINGLECPU ||
+	    cluster->mode == CLUSTER_MODE_NONE) {
 		core = core0;
 	} else {
 		core = kproc->core;
@@ -853,7 +858,7 @@ static int k3_r5_rproc_configure(struct k3_r5_rproc *kproc)
 		boot_vec, cfg, ctrl, stat);
 
 	/* check if only Single-CPU mode is supported on applicable SoCs */
-	if (cluster->soc_data->single_cpu_mode) {
+	if (cluster->soc_data->single_cpu_mode || cluster->soc_data->is_single_core) {
 		single_cpu =
 			!!(stat & PROC_BOOT_STATUS_FLAG_R5_SINGLECORE_ONLY);
 		if (single_cpu && cluster->mode == CLUSTER_MODE_SPLIT) {
@@ -1074,6 +1079,7 @@ static void k3_r5_adjust_tcm_sizes(struct k3_r5_rproc *kproc)
 
 	if (cluster->mode == CLUSTER_MODE_LOCKSTEP ||
 	    cluster->mode == CLUSTER_MODE_SINGLECPU ||
+	    cluster->mode == CLUSTER_MODE_NONE ||
 	    !cluster->soc_data->tcm_is_double)
 		return;
 
@@ -1147,7 +1153,9 @@ static int k3_r5_rproc_configure_mode(struct k3_r5_rproc *kproc)
 	atcm_enable = cfg & PROC_BOOT_CFG_FLAG_R5_ATCM_EN ?  1 : 0;
 	btcm_enable = cfg & PROC_BOOT_CFG_FLAG_R5_BTCM_EN ?  1 : 0;
 	loczrama = cfg & PROC_BOOT_CFG_FLAG_R5_TCM_RSTBASE ?  1 : 0;
-	if (cluster->soc_data->single_cpu_mode) {
+	if (cluster->soc_data->is_single_core) {
+		mode = CLUSTER_MODE_NONE;
+	} else if (cluster->soc_data->single_cpu_mode) {
 		mode = cfg & PROC_BOOT_CFG_FLAG_R5_SINGLE_CORE ?
 				CLUSTER_MODE_SINGLECPU : CLUSTER_MODE_SPLIT;
 	} else {
@@ -1271,7 +1279,8 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev)
 
 		/* create only one rproc in lockstep mode or single-cpu mode */
 		if (cluster->mode == CLUSTER_MODE_LOCKSTEP ||
-		    cluster->mode == CLUSTER_MODE_SINGLECPU)
+		    cluster->mode == CLUSTER_MODE_SINGLECPU ||
+		    cluster->mode == CLUSTER_MODE_NONE)
 			break;
 	}
 
@@ -1704,21 +1713,32 @@ static int k3_r5_probe(struct platform_device *pdev)
 	 * default to most common efuse configurations - Split-mode on AM64x
 	 * and LockStep-mode on all others
 	 */
-	cluster->mode = data->single_cpu_mode ?
+	if (!data->is_single_core)
+		cluster->mode = data->single_cpu_mode ?
 				CLUSTER_MODE_SPLIT : CLUSTER_MODE_LOCKSTEP;
+	else
+		cluster->mode = CLUSTER_MODE_NONE;
+
 	cluster->soc_data = data;
 	INIT_LIST_HEAD(&cluster->cores);
 
-	ret = of_property_read_u32(np, "ti,cluster-mode", &cluster->mode);
-	if (ret < 0 && ret != -EINVAL) {
-		dev_err(dev, "invalid format for ti,cluster-mode, ret = %d\n",
-			ret);
-		return ret;
+	if (!data->is_single_core) {
+		ret = of_property_read_s32(np, "ti,cluster-mode", &cluster->mode);
+		if (ret < 0 && ret != -EINVAL) {
+			dev_err(dev, "invalid format for ti,cluster-mode, ret = %d\n", ret);
+			return ret;
+		}
 	}
 
 	num_cores = of_get_available_child_count(np);
-	if (num_cores != 2) {
-		dev_err(dev, "MCU cluster requires both R5F cores to be enabled, num_cores = %d\n",
+	if (num_cores != 2 && !data->is_single_core) {
+		dev_err(dev, "MCU cluster requires both R5F cores to be enabled but num_cores is set to = %d\n",
+			num_cores);
+		return -ENODEV;
+	}
+
+	if (num_cores != 1 && data->is_single_core) {
+		dev_err(dev, "SoC supports only single core R5 but num_cores is set to %d\n",
 			num_cores);
 		return -ENODEV;
 	}
@@ -1760,18 +1780,28 @@ static const struct k3_r5_soc_data am65_j721e_soc_data = {
 	.tcm_is_double = false,
 	.tcm_ecc_autoinit = false,
 	.single_cpu_mode = false,
+	.is_single_core = false,
 };
 
 static const struct k3_r5_soc_data j7200_j721s2_soc_data = {
 	.tcm_is_double = true,
 	.tcm_ecc_autoinit = true,
 	.single_cpu_mode = false,
+	.is_single_core = false,
 };
 
 static const struct k3_r5_soc_data am64_soc_data = {
 	.tcm_is_double = true,
 	.tcm_ecc_autoinit = true,
 	.single_cpu_mode = true,
+	.is_single_core = false,
+};
+
+static const struct k3_r5_soc_data am62_soc_data = {
+	.tcm_is_double = false,
+	.tcm_ecc_autoinit = true,
+	.single_cpu_mode = false,
+	.is_single_core = true,
 };
 
 static const struct of_device_id k3_r5_of_match[] = {
@@ -1779,6 +1809,7 @@ static const struct of_device_id k3_r5_of_match[] = {
 	{ .compatible = "ti,j721e-r5fss", .data = &am65_j721e_soc_data, },
 	{ .compatible = "ti,j7200-r5fss", .data = &j7200_j721s2_soc_data, },
 	{ .compatible = "ti,am64-r5fss",  .data = &am64_soc_data, },
+	{ .compatible = "ti,am62-r5fss",  .data = &am62_soc_data, },
 	{ .compatible = "ti,j721s2-r5fss",  .data = &j7200_j721s2_soc_data, },
 	{ /* sentinel */ },
 };
-- 
2.17.1
^ permalink raw reply related	[flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: remoteproc: ti: Add new compatible for AM62 SoC family
  2022-12-23 11:56 ` [PATCH v3 1/2] dt-bindings: remoteproc: ti: Add new compatible " Devarsh Thakkar
@ 2022-12-23 12:05   ` Krzysztof Kozlowski
  2022-12-26 12:18   ` Krzysztof Kozlowski
  1 sibling, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2022-12-23 12:05 UTC (permalink / raw)
  To: Devarsh Thakkar, andersson, devicetree, mathieu.poirier, p.zabel,
	linux-remoteproc, linux-kernel, s-anna
  Cc: hnagalla, praneeth, nm, vigneshr, a-bhatia1, j-luthra
On 23/12/2022 12:56, 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.
It's v3 but addresses are still not correct.
Please use scripts/get_maintainers.pl to get a list of necessary people
and lists to CC.  It might happen, that command when run on an older
kernel, gives you outdated entries.  Therefore please be sure you base
your patches on recent Linux kernel.
Best regards,
Krzysztof
^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: remoteproc: ti: Add new compatible for AM62 SoC family
  2022-12-23 11:56 ` [PATCH v3 1/2] dt-bindings: remoteproc: ti: Add new compatible " Devarsh Thakkar
  2022-12-23 12:05   ` Krzysztof Kozlowski
@ 2022-12-26 12:18   ` Krzysztof Kozlowski
  2022-12-27  9:38     ` Devarsh Thakkar
  1 sibling, 1 reply; 7+ messages in thread
From: Krzysztof Kozlowski @ 2022-12-26 12:18 UTC (permalink / raw)
  To: Devarsh Thakkar, andersson, devicetree, mathieu.poirier, p.zabel,
	linux-remoteproc, linux-kernel, s-anna
  Cc: hnagalla, praneeth, nm, vigneshr, a-bhatia1, j-luthra
On 23/12/2022 12:56, 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"
> V3:
> - Use separate if block for each compatible for ti,cluster-mode property
> - Rearrange compatibles as per alphabatical order
> ---
>  .../bindings/remoteproc/ti,k3-r5f-rproc.yaml  | 68 +++++++++++++------
>  1 file changed, 47 insertions(+), 21 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..e8a861179bd9 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,16 +31,20 @@ 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(@.*)?"
>  
>    compatible:
>      enum:
> +      - ti,am62-r5fss
> +      - ti,am64-r5fss
>        - ti,am654-r5fss
> -      - ti,j721e-r5fss
>        - ti,j7200-r5fss
> -      - ti,am64-r5fss
> +      - ti,j721e-r5fss
>        - ti,j721s2-r5fss
>  
>    power-domains:
> @@ -80,7 +87,9 @@ 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,
> +      the R5F Sub-System device node 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
> @@ -100,11 +109,12 @@ patternProperties:
>      properties:
>        compatible:
>          enum:
> -          - ti,am654-r5f
> -          - ti,j721e-r5f
> -          - ti,j7200-r5f
> -          - ti,am64-r5f
> -          - ti,j721s2-r5f
> +          - ti,am62-r5fss
> +          - ti,am64-r5fss
> +          - ti,am654-r5fss
> +          - ti,j7200-r5fss
> +          - ti,j721e-r5fss
> +          - ti,j721s2-r5fss
>  
>        reg:
>          items:
> @@ -208,19 +218,35 @@ patternProperties:
>  
>      unevaluatedProperties: false
>  
> -if:
> -  properties:
> -    compatible:
> -      enum:
> -        - ti,am64-r5fss
> -then:
> -  properties:
> -    ti,cluster-mode:
> -      enum: [0, 2]
> -else:
> -  properties:
> -    ti,cluster-mode:
> -      enum: [0, 1]
> +allOf:
> +  - if:
> +      properties:
> +        compatible:
> +          enum:
> +            - ti,am64-r5fss
> +    then:
> +      properties:
> +        ti,cluster-mode:
> +          enum: [0, 2]
> +
> +  - if:
> +      properties:
> +        compatible:
> +          enum: ["ti,am654-r5fss", "ti,j7200-r5fss", "ti,j721e-r5fss",  "ti,j721s2-r5fss"]
That's not how enums are spelled for such cases. Git grep for examples -
this should be a enum with each item in new entry, no quotes.
Best regards,
Krzysztof
^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: remoteproc: ti: Add new compatible for AM62 SoC family
  2022-12-26 12:18   ` Krzysztof Kozlowski
@ 2022-12-27  9:38     ` Devarsh Thakkar
  2022-12-27  9:50       ` Krzysztof Kozlowski
  0 siblings, 1 reply; 7+ messages in thread
From: Devarsh Thakkar @ 2022-12-27  9:38 UTC (permalink / raw)
  To: Krzysztof Kozlowski, andersson, devicetree, mathieu.poirier,
	linux-remoteproc, linux-kernel, s-anna, Rob Herring
  Cc: hnagalla, praneeth, nm, vigneshr, a-bhatia1, j-luthra
On 26/12/22 17:48, Krzysztof Kozlowski wrote:
> On 23/12/2022 12:56, 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"
>> V3:
>> - Use separate if block for each compatible for ti,cluster-mode property
>> - Rearrange compatibles as per alphabatical order
>> ---
>>  .../bindings/remoteproc/ti,k3-r5f-rproc.yaml  | 68 +++++++++++++------
>>  1 file changed, 47 insertions(+), 21 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..e8a861179bd9 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,16 +31,20 @@ 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(@.*)?"
>>  
>>    compatible:
>>      enum:
>> +      - ti,am62-r5fss
>> +      - ti,am64-r5fss
>>        - ti,am654-r5fss
>> -      - ti,j721e-r5fss
>>        - ti,j7200-r5fss
>> -      - ti,am64-r5fss
>> +      - ti,j721e-r5fss
>>        - ti,j721s2-r5fss
>>  
>>    power-domains:
>> @@ -80,7 +87,9 @@ 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,
>> +      the R5F Sub-System device node 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
>> @@ -100,11 +109,12 @@ patternProperties:
>>      properties:
>>        compatible:
>>          enum:
>> -          - ti,am654-r5f
>> -          - ti,j721e-r5f
>> -          - ti,j7200-r5f
>> -          - ti,am64-r5f
>> -          - ti,j721s2-r5f
>> +          - ti,am62-r5fss
>> +          - ti,am64-r5fss
>> +          - ti,am654-r5fss
>> +          - ti,j7200-r5fss
>> +          - ti,j721e-r5fss
>> +          - ti,j721s2-r5fss
>>  
There is a problem here, the compatibles still need to be "-r5f" I will
correct it in V4.
>>        reg:
>>          items:
>> @@ -208,19 +218,35 @@ patternProperties:
>>  
>>      unevaluatedProperties: false
>>  
>> -if:
>> -  properties:
>> -    compatible:
>> -      enum:
>> -        - ti,am64-r5fss
>> -then:
>> -  properties:
>> -    ti,cluster-mode:
>> -      enum: [0, 2]
>> -else:
>> -  properties:
>> -    ti,cluster-mode:
>> -      enum: [0, 1]
>> +allOf:
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          enum:
>> +            - ti,am64-r5fss
>> +    then:
>> +      properties:
>> +        ti,cluster-mode:
>> +          enum: [0, 2]
>> +
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          enum: ["ti,am654-r5fss", "ti,j7200-r5fss", "ti,j721e-r5fss",  "ti,j721s2-r5fss"]
> 
> That's not how enums are spelled for such cases. Git grep for examples -
> this should be a enum with each item in new entry, no quotes.
Yeah, that was my initial thought but then I looked at section 4.9.3 of
https://json-schema.org/understanding-json-schema/UnderstandingJSONSchema.pdf
which had below example and based on that did this change thus avoiding
separate entries for each enum.
Example:
{
"enum": ["red", "amber", "green", null, 42]
}
To confirm whether the change works fine, I deliberately modified cluster-mode
values for each of the SoC's beyond acceptable ranges as seen in
https://gist.github.com/devarsht/1956063c8e39f1bdbad3574ea96b95a3
and then ran "make dtbs_check" and it was able to catch the inappropriate
values of cluster-mode as seen in below logs :
https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L392
https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L500
https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L712
https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L741
https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L750
https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L766
https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L773
Kindly let me know if you see some issues with this approach.
Best Regards,
Devarsh
> 
> Best regards,
> Krzysztof
> 
^ permalink raw reply	[flat|nested] 7+ messages in thread
* Re: [PATCH v3 1/2] dt-bindings: remoteproc: ti: Add new compatible for AM62 SoC family
  2022-12-27  9:38     ` Devarsh Thakkar
@ 2022-12-27  9:50       ` Krzysztof Kozlowski
  0 siblings, 0 replies; 7+ messages in thread
From: Krzysztof Kozlowski @ 2022-12-27  9:50 UTC (permalink / raw)
  To: Devarsh Thakkar, andersson, devicetree, mathieu.poirier,
	linux-remoteproc, linux-kernel, s-anna, Rob Herring
  Cc: hnagalla, praneeth, nm, vigneshr, a-bhatia1, j-luthra
On 27/12/2022 10:38, Devarsh Thakkar wrote:
> 
> 
> On 26/12/22 17:48, Krzysztof Kozlowski wrote:
>> On 23/12/2022 12:56, 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"
>>> V3:
>>> - Use separate if block for each compatible for ti,cluster-mode property
>>> - Rearrange compatibles as per alphabatical order
>>> ---
>>>  .../bindings/remoteproc/ti,k3-r5f-rproc.yaml  | 68 +++++++++++++------
>>>  1 file changed, 47 insertions(+), 21 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..e8a861179bd9 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,16 +31,20 @@ 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(@.*)?"
>>>  
>>>    compatible:
>>>      enum:
>>> +      - ti,am62-r5fss
>>> +      - ti,am64-r5fss
>>>        - ti,am654-r5fss
>>> -      - ti,j721e-r5fss
>>>        - ti,j7200-r5fss
>>> -      - ti,am64-r5fss
>>> +      - ti,j721e-r5fss
>>>        - ti,j721s2-r5fss
>>>  
>>>    power-domains:
>>> @@ -80,7 +87,9 @@ 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,
>>> +      the R5F Sub-System device node 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
>>> @@ -100,11 +109,12 @@ patternProperties:
>>>      properties:
>>>        compatible:
>>>          enum:
>>> -          - ti,am654-r5f
>>> -          - ti,j721e-r5f
>>> -          - ti,j7200-r5f
>>> -          - ti,am64-r5f
>>> -          - ti,j721s2-r5f
>>> +          - ti,am62-r5fss
>>> +          - ti,am64-r5fss
>>> +          - ti,am654-r5fss
>>> +          - ti,j7200-r5fss
>>> +          - ti,j721e-r5fss
>>> +          - ti,j721s2-r5fss
>>>  
> There is a problem here, the compatibles still need to be "-r5f" I will
> correct it in V4.
>>>        reg:
>>>          items:
>>> @@ -208,19 +218,35 @@ patternProperties:
>>>  
>>>      unevaluatedProperties: false
>>>  
>>> -if:
>>> -  properties:
>>> -    compatible:
>>> -      enum:
>>> -        - ti,am64-r5fss
>>> -then:
>>> -  properties:
>>> -    ti,cluster-mode:
>>> -      enum: [0, 2]
>>> -else:
>>> -  properties:
>>> -    ti,cluster-mode:
>>> -      enum: [0, 1]
>>> +allOf:
>>> +  - if:
>>> +      properties:
>>> +        compatible:
>>> +          enum:
>>> +            - ti,am64-r5fss
>>> +    then:
>>> +      properties:
>>> +        ti,cluster-mode:
>>> +          enum: [0, 2]
>>> +
>>> +  - if:
>>> +      properties:
>>> +        compatible:
>>> +          enum: ["ti,am654-r5fss", "ti,j7200-r5fss", "ti,j721e-r5fss",  "ti,j721s2-r5fss"]
>>
>> That's not how enums are spelled for such cases. Git grep for examples -
>> this should be a enum with each item in new entry, no quotes.
> Yeah, that was my initial thought but then I looked at section 4.9.3 of
> https://json-schema.org/understanding-json-schema/UnderstandingJSONSchema.pdf
> which had below example and based on that did this change thus avoiding
> separate entries for each enum.
> 
> Example:
> {
> "enum": ["red", "amber", "green", null, 42]
> }
> 
> To confirm whether the change works fine, I deliberately modified cluster-mode
> values for each of the SoC's beyond acceptable ranges as seen in
> https://gist.github.com/devarsht/1956063c8e39f1bdbad3574ea96b95a3
> and then ran "make dtbs_check" and it was able to catch the inappropriate
> values of cluster-mode as seen in below logs :
> 
> https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L392
> https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L500
> https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L712
> https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L741
> https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L750
> https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L766
> https://gist.github.com/devarsht/bc8cfb82c55b75d85649585d3fd536a0#file-gistfile1-txt-L773
> 
> Kindly let me know if you see some issues with this approach.
Your syntax is correct just not matching the coding style. Use coding
style matching existing bindings. It's the same in C. Just because you
can write:
void max() {
    ...
}
does not mean we accept such code.
Best regards,
Krzysztof
^ permalink raw reply	[flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-12-27  9:50 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-23 11:56 [PATCH v3 0/2] Add single core R5F IPC for AM62 SoC family Devarsh Thakkar
2022-12-23 11:56 ` [PATCH v3 1/2] dt-bindings: remoteproc: ti: Add new compatible " Devarsh Thakkar
2022-12-23 12:05   ` Krzysztof Kozlowski
2022-12-26 12:18   ` Krzysztof Kozlowski
2022-12-27  9:38     ` Devarsh Thakkar
2022-12-27  9:50       ` Krzysztof Kozlowski
2022-12-23 11:56 ` [PATCH v3 2/2] remoteproc: k3-r5: Use separate compatible string for TI " Devarsh Thakkar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).