Skip to content

Commit 498ef65

Browse files
soburicarlescufi
authored andcommitted
dts: bindings: gd32-dma-base: add gd,mem2mem property
Add `gd,mem2mem` property to indicate the DMA controller supports memory to memory transfer. Signed-off-by: TOKITA Hiroshi <[email protected]>
1 parent 59044c6 commit 498ef65

File tree

6 files changed

+20
-1
lines changed

6 files changed

+20
-1
lines changed

drivers/dma/dma_gd32.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ struct dma_gd32_config {
5858
uint32_t reg;
5959
uint32_t channels;
6060
uint16_t clkid;
61+
bool mem2mem;
6162
#ifdef CONFIG_SOC_SERIES_GD32F4XX
6263
struct reset_dt_spec reset;
6364
#endif
@@ -403,6 +404,11 @@ static int dma_gd32_config(const struct device *dev, uint32_t channel,
403404
return -ENOTSUP;
404405
}
405406

407+
if (dma_cfg->channel_direction == MEMORY_TO_MEMORY && !cfg->mem2mem) {
408+
LOG_ERR("not supporting MEMORY_TO_MEMORY");
409+
return -ENOTSUP;
410+
}
411+
406412
#ifdef CONFIG_SOC_SERIES_GD32F4XX
407413
if (dma_cfg->dma_slot > 0xF) {
408414
LOG_ERR("dma_slot must be <7 (%" PRIu32 ")",
@@ -665,10 +671,11 @@ static const struct dma_driver_api dma_gd32_driver_api = {
665671
} \
666672
static const struct dma_gd32_config dma_gd32##inst##_config = { \
667673
.reg = DT_INST_REG_ADDR(inst), \
674+
.channels = DT_INST_PROP(inst, dma_channels), \
668675
.clkid = DT_INST_CLOCKS_CELL(inst, id), \
676+
.mem2mem = DT_INST_PROP(inst, gd_mem2mem), \
669677
IF_ENABLED(CONFIG_SOC_SERIES_GD32F4XX, \
670678
(.reset = RESET_DT_SPEC_INST_GET(inst),)) \
671-
.channels = DT_INST_PROP(inst, dma_channels), \
672679
.irq_configure = dma_gd32##inst##_irq_configure, \
673680
}; \
674681
\

dts/arm/gigadevice/gd32e50x/gd32e50x.dtsi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,7 @@
411411
<15 0>, <16 0>, <17 0>;
412412
clocks = <&cctl GD32_CLOCK_DMA0>;
413413
dma-channels = <7>;
414+
gd,mem2mem;
414415
#dma-cells = <2>;
415416
status = "disabled";
416417
};
@@ -422,6 +423,7 @@
422423
<60 0>;
423424
clocks = <&cctl GD32_CLOCK_DMA1>;
424425
dma-channels = <5>;
426+
gd,mem2mem;
425427
#dma-cells = <2>;
426428
status = "disabled";
427429
};

dts/arm/gigadevice/gd32f403/gd32f403.dtsi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,7 @@
496496
<15 0>, <16 0>, <17 0>;
497497
clocks = <&cctl GD32_CLOCK_DMA0>;
498498
dma-channels = <7>;
499+
gd,mem2mem;
499500
#dma-cells = <2>;
500501
status = "disabled";
501502
};
@@ -507,6 +508,7 @@
507508
<60 0>;
508509
clocks = <&cctl GD32_CLOCK_DMA1>;
509510
dma-channels = <5>;
511+
gd,mem2mem;
510512
#dma-cells = <2>;
511513
status = "disabled";
512514
};

dts/arm/gigadevice/gd32f4xx/gd32f4xx.dtsi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,7 @@
625625
clocks = <&cctl GD32_CLOCK_DMA0>;
626626
resets = <&rctl GD32_RESET_DMA0>;
627627
dma-channels = <8>;
628+
gd,mem2mem;
628629
#dma-cells = <2>;
629630
status = "disabled";
630631
};
@@ -637,6 +638,7 @@
637638
clocks = <&cctl GD32_CLOCK_DMA1>;
638639
resets = <&rctl GD32_RESET_DMA1>;
639640
dma-channels = <8>;
641+
gd,mem2mem;
640642
#dma-cells = <2>;
641643
status = "disabled";
642644
};

dts/bindings/dma/gd,gd32-dma-base.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ properties:
1515

1616
clocks:
1717
required: true
18+
19+
gd,mem2mem:
20+
type: boolean
21+
description: The DMA controller supporting memory to memory transfer

dts/riscv/gigadevice/gd32vf103.dtsi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,7 @@
392392
<34 0>, <35 0>, <36 0>;
393393
clocks = <&cctl GD32_CLOCK_DMA0>;
394394
dma-channels = <7>;
395+
gd,mem2mem;
395396
#dma-cells = <2>;
396397
status = "disabled";
397398
};
@@ -403,6 +404,7 @@
403404
<79 0>;
404405
clocks = <&cctl GD32_CLOCK_DMA1>;
405406
dma-channels = <5>;
407+
gd,mem2mem;
406408
#dma-cells = <2>;
407409
status = "disabled";
408410
};

0 commit comments

Comments
 (0)