162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci# Copyright (C) 2020 Texas Instruments Incorporated
362306a36Sopenharmony_ci# Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
462306a36Sopenharmony_ci%YAML 1.2
562306a36Sopenharmony_ci---
662306a36Sopenharmony_ci$id: http://devicetree.org/schemas/dma/ti/k3-bcdma.yaml#
762306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
862306a36Sopenharmony_ci
962306a36Sopenharmony_cititle: Texas Instruments K3 DMSS BCDMA
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cimaintainers:
1262306a36Sopenharmony_ci  - Peter Ujfalusi <peter.ujfalusi@gmail.com>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cidescription: |
1562306a36Sopenharmony_ci  The Block Copy DMA (BCDMA) is intended to perform similar functions as the TR
1662306a36Sopenharmony_ci  mode channels of K3 UDMA-P.
1762306a36Sopenharmony_ci  BCDMA includes block copy channels and Split channels.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci  Block copy channels mainly used for memory to memory transfers, but with
2062306a36Sopenharmony_ci  optional triggers a block copy channel can service peripherals by accessing
2162306a36Sopenharmony_ci  directly to memory mapped registers or area.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  Split channels can be used to service PSI-L based peripherals.
2462306a36Sopenharmony_ci  The peripherals can be PSI-L native or legacy, non PSI-L native peripherals
2562306a36Sopenharmony_ci  with PDMAs. PDMA is tasked to act as a bridge between the PSI-L fabric and the
2662306a36Sopenharmony_ci  legacy peripheral.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  PDMAs can be configured via BCDMA split channel's peer registers to match with
2962306a36Sopenharmony_ci  the configuration of the legacy peripheral.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciproperties:
3262306a36Sopenharmony_ci  compatible:
3362306a36Sopenharmony_ci    enum:
3462306a36Sopenharmony_ci      - ti,am62a-dmss-bcdma-csirx
3562306a36Sopenharmony_ci      - ti,am64-dmss-bcdma
3662306a36Sopenharmony_ci      - ti,j721s2-dmss-bcdma-csi
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  reg:
3962306a36Sopenharmony_ci    minItems: 3
4062306a36Sopenharmony_ci    maxItems: 5
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  reg-names:
4362306a36Sopenharmony_ci    minItems: 3
4462306a36Sopenharmony_ci    maxItems: 5
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  "#dma-cells":
4762306a36Sopenharmony_ci    const: 3
4862306a36Sopenharmony_ci    description: |
4962306a36Sopenharmony_ci      cell 1: type of the BCDMA channel to be used to service the peripheral:
5062306a36Sopenharmony_ci        0 - split channel
5162306a36Sopenharmony_ci        1 - block copy channel using global trigger 1
5262306a36Sopenharmony_ci        2 - block copy channel using global trigger 2
5362306a36Sopenharmony_ci        3 - block copy channel using local trigger
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci      cell 2: parameter for the channel:
5662306a36Sopenharmony_ci        if cell 1 is 0 (split channel):
5762306a36Sopenharmony_ci          PSI-L thread ID of the remote (to BCDMA) end.
5862306a36Sopenharmony_ci          Valid ranges for thread ID depends on the data movement direction:
5962306a36Sopenharmony_ci          for source thread IDs (rx): 0 - 0x7fff
6062306a36Sopenharmony_ci          for destination thread IDs (tx): 0x8000 - 0xffff
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci          Please refer to the device documentation for the PSI-L thread map and
6362306a36Sopenharmony_ci          also the PSI-L peripheral chapter for the correct thread ID.
6462306a36Sopenharmony_ci        if cell 1 is 1 or 2 (block copy channel using global trigger):
6562306a36Sopenharmony_ci          Unused, ignored
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci          The trigger must be configured for the channel externally to BCDMA,
6862306a36Sopenharmony_ci          channels using global triggers should not be requested directly, but
6962306a36Sopenharmony_ci          via DMA event router.
7062306a36Sopenharmony_ci        if cell 1 is 3 (block copy channel using local trigger):
7162306a36Sopenharmony_ci          bchan number of the locally triggered channel
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci      cell 3: ASEL value for the channel
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci  msi-parent: true
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci  power-domains:
7862306a36Sopenharmony_ci    description:
7962306a36Sopenharmony_ci      Power domain if available
8062306a36Sopenharmony_ci    maxItems: 1
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci  ti,asel:
8362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
8462306a36Sopenharmony_ci    description: ASEL value for non slave channels
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci  ti,sci-rm-range-bchan:
8762306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
8862306a36Sopenharmony_ci    description: |
8962306a36Sopenharmony_ci      Array of BCDMA block-copy channel resource subtypes for resource
9062306a36Sopenharmony_ci      allocation for this host
9162306a36Sopenharmony_ci    minItems: 1
9262306a36Sopenharmony_ci    # Should be enough
9362306a36Sopenharmony_ci    maxItems: 255
9462306a36Sopenharmony_ci    items:
9562306a36Sopenharmony_ci      maximum: 0x3f
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci  ti,sci-rm-range-tchan:
9862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
9962306a36Sopenharmony_ci    description: |
10062306a36Sopenharmony_ci      Array of BCDMA split tx channel resource subtypes for resource allocation
10162306a36Sopenharmony_ci      for this host
10262306a36Sopenharmony_ci    minItems: 1
10362306a36Sopenharmony_ci    # Should be enough
10462306a36Sopenharmony_ci    maxItems: 255
10562306a36Sopenharmony_ci    items:
10662306a36Sopenharmony_ci      maximum: 0x3f
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci  ti,sci-rm-range-rchan:
10962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
11062306a36Sopenharmony_ci    description: |
11162306a36Sopenharmony_ci      Array of BCDMA split rx channel resource subtypes for resource allocation
11262306a36Sopenharmony_ci      for this host
11362306a36Sopenharmony_ci    minItems: 1
11462306a36Sopenharmony_ci    # Should be enough
11562306a36Sopenharmony_ci    maxItems: 255
11662306a36Sopenharmony_ci    items:
11762306a36Sopenharmony_ci      maximum: 0x3f
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_cirequired:
12062306a36Sopenharmony_ci  - compatible
12162306a36Sopenharmony_ci  - "#dma-cells"
12262306a36Sopenharmony_ci  - reg
12362306a36Sopenharmony_ci  - reg-names
12462306a36Sopenharmony_ci  - msi-parent
12562306a36Sopenharmony_ci  - ti,sci
12662306a36Sopenharmony_ci  - ti,sci-dev-id
12762306a36Sopenharmony_ci  - ti,sci-rm-range-rchan
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ciallOf:
13062306a36Sopenharmony_ci  - $ref: /schemas/dma/dma-controller.yaml#
13162306a36Sopenharmony_ci  - $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci  - if:
13462306a36Sopenharmony_ci      properties:
13562306a36Sopenharmony_ci        compatible:
13662306a36Sopenharmony_ci          contains:
13762306a36Sopenharmony_ci            const: ti,am62a-dmss-bcdma-csirx
13862306a36Sopenharmony_ci    then:
13962306a36Sopenharmony_ci      properties:
14062306a36Sopenharmony_ci        ti,sci-rm-range-bchan: false
14162306a36Sopenharmony_ci        ti,sci-rm-range-tchan: false
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci        reg:
14462306a36Sopenharmony_ci          maxItems: 3
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci        reg-names:
14762306a36Sopenharmony_ci          items:
14862306a36Sopenharmony_ci            - const: gcfg
14962306a36Sopenharmony_ci            - const: rchanrt
15062306a36Sopenharmony_ci            - const: ringrt
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci      required:
15362306a36Sopenharmony_ci        - power-domains
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci  - if:
15662306a36Sopenharmony_ci      properties:
15762306a36Sopenharmony_ci        compatible:
15862306a36Sopenharmony_ci          contains:
15962306a36Sopenharmony_ci            const: ti,am64-dmss-bcdma
16062306a36Sopenharmony_ci    then:
16162306a36Sopenharmony_ci      properties:
16262306a36Sopenharmony_ci        reg:
16362306a36Sopenharmony_ci          minItems: 5
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci        reg-names:
16662306a36Sopenharmony_ci          items:
16762306a36Sopenharmony_ci            - const: gcfg
16862306a36Sopenharmony_ci            - const: bchanrt
16962306a36Sopenharmony_ci            - const: rchanrt
17062306a36Sopenharmony_ci            - const: tchanrt
17162306a36Sopenharmony_ci            - const: ringrt
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci      required:
17462306a36Sopenharmony_ci        - ti,sci-rm-range-bchan
17562306a36Sopenharmony_ci        - ti,sci-rm-range-tchan
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci  - if:
17862306a36Sopenharmony_ci      properties:
17962306a36Sopenharmony_ci        compatible:
18062306a36Sopenharmony_ci          contains:
18162306a36Sopenharmony_ci            const: ti,j721s2-dmss-bcdma-csi
18262306a36Sopenharmony_ci    then:
18362306a36Sopenharmony_ci      properties:
18462306a36Sopenharmony_ci        ti,sci-rm-range-bchan: false
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci        reg:
18762306a36Sopenharmony_ci          maxItems: 4
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci        reg-names:
19062306a36Sopenharmony_ci          items:
19162306a36Sopenharmony_ci            - const: gcfg
19262306a36Sopenharmony_ci            - const: rchanrt
19362306a36Sopenharmony_ci            - const: tchanrt
19462306a36Sopenharmony_ci            - const: ringrt
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci      required:
19762306a36Sopenharmony_ci        - ti,sci-rm-range-tchan
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ciunevaluatedProperties: false
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ciexamples:
20262306a36Sopenharmony_ci  - |+
20362306a36Sopenharmony_ci    cbass_main {
20462306a36Sopenharmony_ci        #address-cells = <2>;
20562306a36Sopenharmony_ci        #size-cells = <2>;
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci        main_dmss {
20862306a36Sopenharmony_ci            compatible = "simple-mfd";
20962306a36Sopenharmony_ci            #address-cells = <2>;
21062306a36Sopenharmony_ci            #size-cells = <2>;
21162306a36Sopenharmony_ci            dma-ranges;
21262306a36Sopenharmony_ci            ranges;
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci            ti,sci-dev-id = <25>;
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ci            main_bcdma: dma-controller@485c0100 {
21762306a36Sopenharmony_ci                compatible = "ti,am64-dmss-bcdma";
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci                reg = <0x0 0x485c0100 0x0 0x100>,
22062306a36Sopenharmony_ci                      <0x0 0x4c000000 0x0 0x20000>,
22162306a36Sopenharmony_ci                      <0x0 0x4a820000 0x0 0x20000>,
22262306a36Sopenharmony_ci                      <0x0 0x4aa40000 0x0 0x20000>,
22362306a36Sopenharmony_ci                      <0x0 0x4bc00000 0x0 0x100000>;
22462306a36Sopenharmony_ci                reg-names = "gcfg", "bchanrt", "rchanrt", "tchanrt", "ringrt";
22562306a36Sopenharmony_ci                msi-parent = <&inta_main_dmss>;
22662306a36Sopenharmony_ci                #dma-cells = <3>;
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ci                ti,sci = <&dmsc>;
22962306a36Sopenharmony_ci                ti,sci-dev-id = <26>;
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci                ti,sci-rm-range-bchan = <0x20>; /* BLOCK_COPY_CHAN */
23262306a36Sopenharmony_ci                ti,sci-rm-range-rchan = <0x21>; /* SPLIT_TR_RX_CHAN */
23362306a36Sopenharmony_ci                ti,sci-rm-range-tchan = <0x22>; /* SPLIT_TR_TX_CHAN */
23462306a36Sopenharmony_ci            };
23562306a36Sopenharmony_ci        };
23662306a36Sopenharmony_ci    };
237