2023-11-24 04:58:39

by Vignesh Raghavendra

[permalink] [raw]
Subject: [PATCH v3 0/4] dt-bindings: dma: ti: k3*: Update optional reg regions

DMAs on TI K3 SoCs have channel configuration registers region which are
usually hidden from Linux and configured via Device Manager Firmware
APIs. But certain early SWs like bootloader which run before Device
Manager is fully up would need to directly configure these registers and
thus require to be in DT description.

This add bindings for such configuration regions. Backward
compatibility is maintained to existing DT by only mandating existing
regions to be present and this new region as optional.

This update is mainly to aid SPL/U-Boot to reuse kernel DT as is. And is
applicable to entire K3 SoCs.

v3:
Add back toplevel reg and reg-names constraints in k3-bcdma.yaml
v2: https://lore.kernel.org/all/[email protected]

v2:
Fix issues pointed out by Conor and Peter
* Add new patch 1/4 to describe existing register regions
* Rename cfg region as ring
* Add bchan register space for bcdma
* Include descriptions for new registers
v1: https://lore.kernel.org/all/[email protected]/

Vignesh Raghavendra (4):
dt-bindings: dma: ti: k3-*: Add descriptions for register regions
dt-bindings: dma: ti: k3-bcdma: Describe cfg register regions
dt-bindings: dma: ti: k3-pktdma: Describe cfg register regions
dt-bindings: dma: ti: k3-udma: Describe cfg register regions

.../devicetree/bindings/dma/ti/k3-bcdma.yaml | 39 ++++++++++++++++---
.../devicetree/bindings/dma/ti/k3-pktdma.yaml | 26 +++++++++++--
.../devicetree/bindings/dma/ti/k3-udma.yaml | 20 ++++++++--
3 files changed, 73 insertions(+), 12 deletions(-)

--
2.43.0


2023-11-24 05:01:05

by Vignesh Raghavendra

[permalink] [raw]
Subject: [PATCH v3 3/4] dt-bindings: dma: ti: k3-pktdma: Describe cfg register regions

Packet DMA (PKTDMA) module on K3 SoCs have ring cfg, TX and RX channel
cfg and RX flow cfg register regions which are usually configured by a
Device Management firmware. But certain entities such as bootloader
(like U-Boot) may have to access them directly. Describe this region in
the binding documentation for completeness of module description.

Keep the binding compatible with existing DTS files by requiring first
four regions to be present at least.

Signed-off-by: Vignesh Raghavendra <[email protected]>
---
.../devicetree/bindings/dma/ti/k3-pktdma.yaml | 20 +++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/dma/ti/k3-pktdma.yaml b/Documentation/devicetree/bindings/dma/ti/k3-pktdma.yaml
index 3580b08f65c6..11e064c02994 100644
--- a/Documentation/devicetree/bindings/dma/ti/k3-pktdma.yaml
+++ b/Documentation/devicetree/bindings/dma/ti/k3-pktdma.yaml
@@ -45,18 +45,28 @@ properties:
The second cell is the ASEL value for the channel

reg:
+ minItems: 4
items:
- description: Packet DMA Control /Status Registers region
- description: RX Channel Realtime Registers region
- description: TX Channel Realtime Registers region
- description: Ring Realtime Registers region
+ - description: Ring Configuration Registers region
+ - description: TX Configuration Registers region
+ - description: RX Configuration Registers region
+ - description: RX Flow Configuration Registers region

reg-names:
+ minItems: 4
items:
- const: gcfg
- const: rchanrt
- const: tchanrt
- const: ringrt
+ - const: ring
+ - const: tchan
+ - const: rchan
+ - const: rflow

msi-parent: true

@@ -140,8 +150,14 @@ examples:
reg = <0x0 0x485c0000 0x0 0x100>,
<0x0 0x4a800000 0x0 0x20000>,
<0x0 0x4aa00000 0x0 0x40000>,
- <0x0 0x4b800000 0x0 0x400000>;
- reg-names = "gcfg", "rchanrt", "tchanrt", "ringrt";
+ <0x0 0x4b800000 0x0 0x400000>,
+ <0x0 0x485e0000 0x0 0x20000>,
+ <0x0 0x484a0000 0x0 0x4000>,
+ <0x0 0x484c0000 0x0 0x2000>,
+ <0x0 0x48430000 0x0 0x4000>;
+ reg-names = "gcfg", "rchanrt", "tchanrt", "ringrt",
+ "ring", "tchan", "rchan", "rflow";
+
msi-parent = <&inta_main_dmss>;
#dma-cells = <2>;

--
2.43.0

2023-11-24 05:01:09

by Vignesh Raghavendra

[permalink] [raw]
Subject: [PATCH v3 2/4] dt-bindings: dma: ti: k3-bcdma: Describe cfg register regions

Block copy DMA(BCDMA)module on K3 SoCs have ring, BCHAN, TX and RX
channel cfg register regions which are usually configured by a Device
Management firmware. But certain entities such as bootloader (like
U-Boot) may have to access them directly. Describe this region in the
binding documentation for completeness of module description.

Keep the binding compatible with existing DTS files by requiring first
five regions to be present at least.

Signed-off-by: Vignesh Raghavendra <[email protected]>
---
.../devicetree/bindings/dma/ti/k3-bcdma.yaml | 23 +++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/dma/ti/k3-bcdma.yaml b/Documentation/devicetree/bindings/dma/ti/k3-bcdma.yaml
index 11727af9df73..27b8e1636560 100644
--- a/Documentation/devicetree/bindings/dma/ti/k3-bcdma.yaml
+++ b/Documentation/devicetree/bindings/dma/ti/k3-bcdma.yaml
@@ -37,11 +37,11 @@ properties:

reg:
minItems: 3
- maxItems: 5
+ maxItems: 9

reg-names:
minItems: 3
- maxItems: 5
+ maxItems: 9

"#dma-cells":
const: 3
@@ -163,20 +163,30 @@ allOf:
then:
properties:
reg:
+ minItems: 5
items:
- description: BCDMA Control /Status Registers region
- description: Block Copy Channel Realtime Registers region
- description: RX Channel Realtime Registers region
- description: TX Channel Realtime Registers region
- description: Ring Realtime Registers region
+ - description: Ring Configuration Registers region
+ - description: TX Channel Configuration Registers region
+ - description: RX Channel Configuration Registers region
+ - description: Block Copy Channel Configuration Registers region

reg-names:
+ minItems: 5
items:
- const: gcfg
- const: bchanrt
- const: rchanrt
- const: tchanrt
- const: ringrt
+ - const: ring
+ - const: tchan
+ - const: rchan
+ - const: bchan

required:
- ti,sci-rm-range-bchan
@@ -232,8 +242,13 @@ examples:
<0x0 0x4c000000 0x0 0x20000>,
<0x0 0x4a820000 0x0 0x20000>,
<0x0 0x4aa40000 0x0 0x20000>,
- <0x0 0x4bc00000 0x0 0x100000>;
- reg-names = "gcfg", "bchanrt", "rchanrt", "tchanrt", "ringrt";
+ <0x0 0x4bc00000 0x0 0x100000>,
+ <0x0 0x48600000 0x0 0x8000>,
+ <0x0 0x484a4000 0x0 0x2000>,
+ <0x0 0x484c2000 0x0 0x2000>,
+ <0x0 0x48420000 0x0 0x2000>;
+ reg-names = "gcfg", "bchanrt", "rchanrt", "tchanrt", "ringrt",
+ "ring", "tchan", "rchan", "bchan";
msi-parent = <&inta_main_dmss>;
#dma-cells = <3>;

--
2.43.0

2023-11-24 05:01:12

by Vignesh Raghavendra

[permalink] [raw]
Subject: [PATCH v3 4/4] dt-bindings: dma: ti: k3-udma: Describe cfg register regions

Unified DMA (UDMA) module on K3 SoCs have TX and RX channel cfg and RX
flow cfg register regions which are usually configured by a Device
Management firmware. But certain entities such as bootloader (like
U-Boot) may have to access them directly. Describe this region in the
binding documentation for completeness of module description.

Keep the binding compatible with existing DTS files by requiring first
four regions to be present at least.

Signed-off-by: Vignesh Raghavendra <[email protected]>
---
.../devicetree/bindings/dma/ti/k3-udma.yaml | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/dma/ti/k3-udma.yaml b/Documentation/devicetree/bindings/dma/ti/k3-udma.yaml
index ded588bd079a..b18cf2bfdb5b 100644
--- a/Documentation/devicetree/bindings/dma/ti/k3-udma.yaml
+++ b/Documentation/devicetree/bindings/dma/ti/k3-udma.yaml
@@ -69,16 +69,24 @@ properties:
- ti,j721e-navss-mcu-udmap

reg:
+ minItems: 3
items:
- description: UDMA-P Control /Status Registers region
- description: RX Channel Realtime Registers region
- description: TX Channel Realtime Registers region
+ - description: TX Configuration Registers region
+ - description: RX Configuration Registers region
+ - description: RX Flow Configuration Registers region

reg-names:
+ minItems: 3
items:
- const: gcfg
- const: rchanrt
- const: tchanrt
+ - const: tchan
+ - const: rchan
+ - const: rflow

msi-parent: true

@@ -161,8 +169,11 @@ examples:
compatible = "ti,am654-navss-main-udmap";
reg = <0x0 0x31150000 0x0 0x100>,
<0x0 0x34000000 0x0 0x100000>,
- <0x0 0x35000000 0x0 0x100000>;
- reg-names = "gcfg", "rchanrt", "tchanrt";
+ <0x0 0x35000000 0x0 0x100000>,
+ <0x0 0x30b00000 0x0 0x20000>,
+ <0x0 0x30c00000 0x0 0x8000>,
+ <0x0 0x30d00000 0x0 0x4000>;
+ reg-names = "gcfg", "rchanrt", "tchanrt", "tchan", "rchan", "rflow";
#dma-cells = <1>;

ti,ringacc = <&ringacc>;
--
2.43.0

2023-11-24 08:16:36

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v3 3/4] dt-bindings: dma: ti: k3-pktdma: Describe cfg register regions

On 24/11/2023 05:57, Vignesh Raghavendra wrote:
> Packet DMA (PKTDMA) module on K3 SoCs have ring cfg, TX and RX channel
> cfg and RX flow cfg register regions which are usually configured by a
> Device Management firmware. But certain entities such as bootloader
> (like U-Boot) may have to access them directly. Describe this region in
> the binding documentation for completeness of module description.
>
> Keep the binding compatible with existing DTS files by requiring first
> four regions to be present at least.
>
> Signed-off-by: Vignesh Raghavendra <[email protected]>
> ---

Reviewed-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Krzysztof

2023-11-24 08:17:41

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v3 2/4] dt-bindings: dma: ti: k3-bcdma: Describe cfg register regions

On 24/11/2023 05:57, Vignesh Raghavendra wrote:
> Block copy DMA(BCDMA)module on K3 SoCs have ring, BCHAN, TX and RX
> channel cfg register regions which are usually configured by a Device
> Management firmware. But certain entities such as bootloader (like
> U-Boot) may have to access them directly. Describe this region in the
> binding documentation for completeness of module description.
>
> Keep the binding compatible with existing DTS files by requiring first
> five regions to be present at least.
>
> Signed-off-by: Vignesh Raghavendra <[email protected]>
> ---

Reviewed-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Krzysztof

2023-11-24 08:17:49

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v3 4/4] dt-bindings: dma: ti: k3-udma: Describe cfg register regions

On 24/11/2023 05:57, Vignesh Raghavendra wrote:
> Unified DMA (UDMA) module on K3 SoCs have TX and RX channel cfg and RX
> flow cfg register regions which are usually configured by a Device
> Management firmware. But certain entities such as bootloader (like
> U-Boot) may have to access them directly. Describe this region in the
> binding documentation for completeness of module description.
>
> Keep the binding compatible with existing DTS files by requiring first
> four regions to be present at least.

Reviewed-by: Krzysztof Kozlowski <[email protected]>

Best regards,
Krzysztof

2023-11-24 13:33:26

by Vinod Koul

[permalink] [raw]
Subject: Re: [PATCH v3 0/4] dt-bindings: dma: ti: k3*: Update optional reg regions


On Fri, 24 Nov 2023 10:27:18 +0530, Vignesh Raghavendra wrote:
> DMAs on TI K3 SoCs have channel configuration registers region which are
> usually hidden from Linux and configured via Device Manager Firmware
> APIs. But certain early SWs like bootloader which run before Device
> Manager is fully up would need to directly configure these registers and
> thus require to be in DT description.
>
> This add bindings for such configuration regions. Backward
> compatibility is maintained to existing DT by only mandating existing
> regions to be present and this new region as optional.
>
> [...]

Applied, thanks!

[1/4] dt-bindings: dma: ti: k3-*: Add descriptions for register regions
commit: aaf7b392347bc4b32ffcab11c414d983a782e651
[2/4] dt-bindings: dma: ti: k3-bcdma: Describe cfg register regions
commit: f04470678132c2d044b92befab39a933ac4d106c
[3/4] dt-bindings: dma: ti: k3-pktdma: Describe cfg register regions
commit: 8d75e0e5eed23e4f8ced5eacae3255e498a1c304
[4/4] dt-bindings: dma: ti: k3-udma: Describe cfg register regions
commit: d7aaccd3beb1ec34b04b13fa236f50efb77c8d6c

Best regards,
--
~Vinod