162306a36Sopenharmony_ciTexas Instruments eDMA
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciThe eDMA3 consists of two components: Channel controller (CC) and Transfer
462306a36Sopenharmony_ciController(s) (TC). The CC is the main entry for DMA users since it is
562306a36Sopenharmony_ciresponsible for the DMA channel handling, while the TCs are responsible to
662306a36Sopenharmony_ciexecute the actual DMA tansfer.
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci------------------------------------------------------------------------------
962306a36Sopenharmony_cieDMA3 Channel Controller
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciRequired properties:
1262306a36Sopenharmony_ci--------------------
1362306a36Sopenharmony_ci- compatible:	Should be:
1462306a36Sopenharmony_ci		- "ti,edma3-tpcc" for the channel controller(s) on OMAP,
1562306a36Sopenharmony_ci		  AM33xx and AM43xx SoCs.
1662306a36Sopenharmony_ci		- "ti,k2g-edma3-tpcc", "ti,edma3-tpcc" for the
1762306a36Sopenharmony_ci		  channel controller(s) on 66AK2G.
1862306a36Sopenharmony_ci- #dma-cells:	Should be set to <2>. The first number is the DMA request
1962306a36Sopenharmony_ci		number and the second is the TC the channel is serviced on.
2062306a36Sopenharmony_ci- reg:		Memory map of eDMA CC
2162306a36Sopenharmony_ci- reg-names:	"edma3_cc"
2262306a36Sopenharmony_ci- interrupts:	Interrupt lines for CCINT, MPERR and CCERRINT.
2362306a36Sopenharmony_ci- interrupt-names: "edma3_ccint", "edma3_mperr" and "edma3_ccerrint"
2462306a36Sopenharmony_ci- ti,tptcs:	List of TPTCs associated with the eDMA in the following form:
2562306a36Sopenharmony_ci		<&tptc_phandle TC_priority_number>. The highest priority is 0.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciSoC-specific Required properties:
2862306a36Sopenharmony_ci--------------------------------
2962306a36Sopenharmony_ciThe following are mandatory properties for OMAP, AM33xx and AM43xx SoCs only:
3062306a36Sopenharmony_ci- ti,hwmods:	Name of the hwmods associated to the eDMA CC.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciThe following are mandatory properties for 66AK2G SoCs only:
3362306a36Sopenharmony_ci- power-domains:Should contain a phandle to a PM domain provider node
3462306a36Sopenharmony_ci		and an args specifier containing the device id
3562306a36Sopenharmony_ci		value. This property is as per the binding,
3662306a36Sopenharmony_ci		Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciOptional properties:
3962306a36Sopenharmony_ci-------------------
4062306a36Sopenharmony_ci- ti,edma-memcpy-channels: List of channels allocated to be used for memcpy, iow
4162306a36Sopenharmony_ci		these channels will be SW triggered channels. See example.
4262306a36Sopenharmony_ci- ti,edma-reserved-slot-ranges: PaRAM slot ranges which should not be used by
4362306a36Sopenharmony_ci		the driver, they are allocated to be used by for example the
4462306a36Sopenharmony_ci		DSP. See example.
4562306a36Sopenharmony_ci- dma-channel-mask: Mask of usable channels.
4662306a36Sopenharmony_ci		Single uint32 for EDMA with 32 channels, array of two uint32 for
4762306a36Sopenharmony_ci		EDMA with 64 channels. See example and
4862306a36Sopenharmony_ci		Documentation/devicetree/bindings/dma/dma-common.yaml
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci------------------------------------------------------------------------------
5262306a36Sopenharmony_cieDMA3 Transfer Controller
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciRequired properties:
5562306a36Sopenharmony_ci--------------------
5662306a36Sopenharmony_ci- compatible:	Should be:
5762306a36Sopenharmony_ci		- "ti,edma3-tptc" for the transfer controller(s) on OMAP,
5862306a36Sopenharmony_ci		  AM33xx and AM43xx SoCs.
5962306a36Sopenharmony_ci		- "ti,k2g-edma3-tptc", "ti,edma3-tptc" for the
6062306a36Sopenharmony_ci		  transfer controller(s) on 66AK2G.
6162306a36Sopenharmony_ci- reg:		Memory map of eDMA TC
6262306a36Sopenharmony_ci- interrupts:	Interrupt number for TCerrint.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciSoC-specific Required properties:
6562306a36Sopenharmony_ci--------------------------------
6662306a36Sopenharmony_ciThe following are mandatory properties for OMAP, AM33xx and AM43xx SoCs only:
6762306a36Sopenharmony_ci- ti,hwmods:	Name of the hwmods associated to the eDMA TC.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciThe following are mandatory properties for 66AK2G SoCs only:
7062306a36Sopenharmony_ci- power-domains:Should contain a phandle to a PM domain provider node
7162306a36Sopenharmony_ci		and an args specifier containing the device id
7262306a36Sopenharmony_ci		value. This property is as per the binding,
7362306a36Sopenharmony_ci		Documentation/devicetree/bindings/soc/ti/sci-pm-domain.yaml
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ciOptional properties:
7662306a36Sopenharmony_ci-------------------
7762306a36Sopenharmony_ci- interrupt-names: "edma3_tcerrint"
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci------------------------------------------------------------------------------
8062306a36Sopenharmony_ciExamples:
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci1.
8362306a36Sopenharmony_ciedma: edma@49000000 {
8462306a36Sopenharmony_ci	compatible = "ti,edma3-tpcc";
8562306a36Sopenharmony_ci	ti,hwmods = "tpcc";
8662306a36Sopenharmony_ci	reg =	<0x49000000 0x10000>;
8762306a36Sopenharmony_ci	reg-names = "edma3_cc";
8862306a36Sopenharmony_ci	interrupts = <12 13 14>;
8962306a36Sopenharmony_ci	interrupt-names = "edma3_ccint", "edma3_mperr", "edma3_ccerrint";
9062306a36Sopenharmony_ci	dma-requests = <64>;
9162306a36Sopenharmony_ci	#dma-cells = <2>;
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci	ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 7>, <&edma_tptc2 0>;
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci	/* Channel 20 and 21 is allocated for memcpy */
9662306a36Sopenharmony_ci	ti,edma-memcpy-channels = <20 21>;
9762306a36Sopenharmony_ci	/* The following PaRAM slots are reserved: 35-44 and 100-109 */
9862306a36Sopenharmony_ci	ti,edma-reserved-slot-ranges = <35 10>, <100 10>;
9962306a36Sopenharmony_ci	/* The following channels are reserved: 35-44 */
10062306a36Sopenharmony_ci	dma-channel-mask = <0xffffffff /* Channel 0-31 */
10162306a36Sopenharmony_ci			    0xffffe007>; /* Channel 32-63 */
10262306a36Sopenharmony_ci};
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ciedma_tptc0: tptc@49800000 {
10562306a36Sopenharmony_ci	compatible = "ti,edma3-tptc";
10662306a36Sopenharmony_ci	ti,hwmods = "tptc0";
10762306a36Sopenharmony_ci	reg =	<0x49800000 0x100000>;
10862306a36Sopenharmony_ci	interrupts = <112>;
10962306a36Sopenharmony_ci	interrupt-names = "edm3_tcerrint";
11062306a36Sopenharmony_ci};
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ciedma_tptc1: tptc@49900000 {
11362306a36Sopenharmony_ci	compatible = "ti,edma3-tptc";
11462306a36Sopenharmony_ci	ti,hwmods = "tptc1";
11562306a36Sopenharmony_ci	reg =	<0x49900000 0x100000>;
11662306a36Sopenharmony_ci	interrupts = <113>;
11762306a36Sopenharmony_ci	interrupt-names = "edm3_tcerrint";
11862306a36Sopenharmony_ci};
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ciedma_tptc2: tptc@49a00000 {
12162306a36Sopenharmony_ci	compatible = "ti,edma3-tptc";
12262306a36Sopenharmony_ci	ti,hwmods = "tptc2";
12362306a36Sopenharmony_ci	reg =	<0x49a00000 0x100000>;
12462306a36Sopenharmony_ci	interrupts = <114>;
12562306a36Sopenharmony_ci	interrupt-names = "edm3_tcerrint";
12662306a36Sopenharmony_ci};
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_cisham: sham@53100000 {
12962306a36Sopenharmony_ci	compatible = "ti,omap4-sham";
13062306a36Sopenharmony_ci	ti,hwmods = "sham";
13162306a36Sopenharmony_ci	reg = <0x53100000 0x200>;
13262306a36Sopenharmony_ci	interrupts = <109>;
13362306a36Sopenharmony_ci	/* DMA channel 36 executed on eDMA TC0 - low priority queue */
13462306a36Sopenharmony_ci	dmas = <&edma 36 0>;
13562306a36Sopenharmony_ci	dma-names = "rx";
13662306a36Sopenharmony_ci};
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_cimcasp0: mcasp@48038000 {
13962306a36Sopenharmony_ci	compatible = "ti,am33xx-mcasp-audio";
14062306a36Sopenharmony_ci	ti,hwmods = "mcasp0";
14162306a36Sopenharmony_ci	reg = <0x48038000 0x2000>,
14262306a36Sopenharmony_ci		<0x46000000 0x400000>;
14362306a36Sopenharmony_ci	reg-names = "mpu", "dat";
14462306a36Sopenharmony_ci	interrupts = <80>, <81>;
14562306a36Sopenharmony_ci	interrupt-names = "tx", "rx";
14662306a36Sopenharmony_ci	/* DMA channels 8 and 9 executed on eDMA TC2 - high priority queue */
14762306a36Sopenharmony_ci	dmas = <&edma 8 2>,
14862306a36Sopenharmony_ci	       <&edma 9 2>;
14962306a36Sopenharmony_ci	dma-names = "tx", "rx";
15062306a36Sopenharmony_ci};
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci2.
15362306a36Sopenharmony_ciedma1: edma@2728000 {
15462306a36Sopenharmony_ci	compatible = "ti,k2g-edma3-tpcc", "ti,edma3-tpcc";
15562306a36Sopenharmony_ci	reg =	<0x02728000 0x8000>;
15662306a36Sopenharmony_ci	reg-names = "edma3_cc";
15762306a36Sopenharmony_ci	interrupts = <GIC_SPI 208 IRQ_TYPE_EDGE_RISING>,
15862306a36Sopenharmony_ci			<GIC_SPI 219 IRQ_TYPE_EDGE_RISING>,
15962306a36Sopenharmony_ci			<GIC_SPI 220 IRQ_TYPE_EDGE_RISING>;
16062306a36Sopenharmony_ci	interrupt-names = "edma3_ccint", "emda3_mperr",
16162306a36Sopenharmony_ci			  "edma3_ccerrint";
16262306a36Sopenharmony_ci	dma-requests = <64>;
16362306a36Sopenharmony_ci	#dma-cells = <2>;
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci	ti,tptcs = <&edma1_tptc0 7>, <&edma1_tptc1 0>;
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci	/*
16862306a36Sopenharmony_ci	 * memcpy is disabled, can be enabled with:
16962306a36Sopenharmony_ci	 * ti,edma-memcpy-channels = <12 13 14 15>;
17062306a36Sopenharmony_ci	 * for example.
17162306a36Sopenharmony_ci	 */
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci	power-domains = <&k2g_pds 0x4f>;
17462306a36Sopenharmony_ci};
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ciedma1_tptc0: tptc@27b0000 {
17762306a36Sopenharmony_ci	compatible = "ti,k2g-edma3-tptc", "ti,edma3-tptc";
17862306a36Sopenharmony_ci	reg =	<0x027b0000 0x400>;
17962306a36Sopenharmony_ci	power-domains = <&k2g_pds 0x4f>;
18062306a36Sopenharmony_ci};
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ciedma1_tptc1: tptc@27b8000 {
18362306a36Sopenharmony_ci	compatible = "ti,k2g-edma3-tptc", "ti,edma3-tptc";
18462306a36Sopenharmony_ci	reg =	<0x027b8000 0x400>;
18562306a36Sopenharmony_ci	power-domains = <&k2g_pds 0x4f>;
18662306a36Sopenharmony_ci};
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_cimmc0: mmc@23000000 {
18962306a36Sopenharmony_ci	compatible = "ti,k2g-hsmmc", "ti,omap4-hsmmc";
19062306a36Sopenharmony_ci	reg = <0x23000000 0x400>;
19162306a36Sopenharmony_ci	interrupts = <GIC_SPI 96 IRQ_TYPE_EDGE_RISING>;
19262306a36Sopenharmony_ci	dmas = <&edma1 24 0>, <&edma1 25 0>;
19362306a36Sopenharmony_ci	dma-names = "tx", "rx";
19462306a36Sopenharmony_ci	bus-width = <4>;
19562306a36Sopenharmony_ci	ti,needs-special-reset;
19662306a36Sopenharmony_ci	no-1-8-v;
19762306a36Sopenharmony_ci	max-frequency = <96000000>;
19862306a36Sopenharmony_ci	power-domains = <&k2g_pds 0xb>;
19962306a36Sopenharmony_ci	clocks = <&k2g_clks 0xb 1>, <&k2g_clks 0xb 2>;
20062306a36Sopenharmony_ci	clock-names = "fck", "mmchsdb_fck";
20162306a36Sopenharmony_ci};
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci------------------------------------------------------------------------------
20462306a36Sopenharmony_ciDEPRECATED binding, new DTS files must use the ti,edma3-tpcc/ti,edma3-tptc
20562306a36Sopenharmony_cibinding.
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ciRequired properties:
20862306a36Sopenharmony_ci- compatible : "ti,edma3"
20962306a36Sopenharmony_ci- #dma-cells: Should be set to <1>
21062306a36Sopenharmony_ci              Clients should use a single channel number per DMA request.
21162306a36Sopenharmony_ci- reg: Memory map for accessing module
21262306a36Sopenharmony_ci- interrupts: Exactly 3 interrupts need to be specified in the order:
21362306a36Sopenharmony_ci              1. Transfer completion interrupt.
21462306a36Sopenharmony_ci              2. Memory protection interrupt.
21562306a36Sopenharmony_ci              3. Error interrupt.
21662306a36Sopenharmony_ciOptional properties:
21762306a36Sopenharmony_ci- ti,hwmods: Name of the hwmods associated to the EDMA
21862306a36Sopenharmony_ci- ti,edma-xbar-event-map: Crossbar event to channel map
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ciDeprecated properties:
22162306a36Sopenharmony_ciListed here in case one wants to boot an old kernel with new DTB. These
22262306a36Sopenharmony_ciproperties might need to be added to the new DTS files.
22362306a36Sopenharmony_ci- ti,edma-regions: Number of regions
22462306a36Sopenharmony_ci- ti,edma-slots: Number of slots
22562306a36Sopenharmony_ci- dma-channels: Specify total DMA channels per CC
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ciExample:
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ciedma: edma@49000000 {
23062306a36Sopenharmony_ci	reg = <0x49000000 0x10000>;
23162306a36Sopenharmony_ci	interrupt-parent = <&intc>;
23262306a36Sopenharmony_ci	interrupts = <12 13 14>;
23362306a36Sopenharmony_ci	compatible = "ti,edma3";
23462306a36Sopenharmony_ci	ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
23562306a36Sopenharmony_ci	#dma-cells = <1>;
23662306a36Sopenharmony_ci	ti,edma-xbar-event-map = /bits/ 16 <1 12
23762306a36Sopenharmony_ci					    2 13>;
23862306a36Sopenharmony_ci};
239