Skip to contentSkip to conversation

Add Ingenic JZ4755 DMA support

PATCH Applied Siarhei Volkau 3 participants 5 messages Oct 18, 2022 – Oct 19, 2022

Subsystems (4)

v3 of 7 Applied Latest is v7 →

lore
Share & tools
lore
#0 lore raw

v3 cover Add Ingenic JZ4755 DMA support

This patch serie adds JZ4755 SoC DMA support.

Diffs from 2-nd patchset:
- tested JZ_SOC_DATA_BREAK_LINKS flag
- fixed commit msg in the first patch

Diffs from 1-st patchset:
- DMA patches splitted into its own patchset
- acks collected

Siarhei Volkau (2):
dt-bindings: ingenic: Add support for the JZ4755 dmaengine
dmaengine: JZ4780: Add support for the JZ4755.

 Documentation/devicetree/bindings/dma/ingenic,dma.yaml | 1 +
 drivers/dma/dma-jz4780.c                               | 8 ++++++++
 2 files changed, 9 insertions(+)
Signature · 1 line
2.36.1
#1 lore raw

PATCH v3 1/2 dt-bindings: ingenic: Add support for the JZ4755 dmaengine

Update documentation prior to adding driver changes.

---
 Documentation/devicetree/bindings/dma/ingenic,dma.yaml | 1 +
 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/dma/ingenic,dma.yaml +1 -0
index 3b0b3b919..e42b8ce94 100644
@@ -18,6 +18,7 @@ properties:
       - enum:
           - ingenic,jz4740-dma
           - ingenic,jz4725b-dma
+          - ingenic,jz4755-dma
           - ingenic,jz4760-dma
           - ingenic,jz4760-bdma
           - ingenic,jz4760-mdma
Signature · 1 line
2.36.1
#2 lore raw

PATCH v3 2/2 dmaengine: JZ4780: Add support for the JZ4755.

In reply to Siarhei Volkau

The JZ4755 has 4 DMA channels per DMA unit, two idential DMA units.

The JZ4755 has the similar DMA engine to JZ4725b and it has the same bug as JZ4725b, see commit a40c94be2336.
At least the JZ_SOC_DATA_BREAK_LINKS flag make it work much better, although not ideal.

---
 drivers/dma/dma-jz4780.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/dma/dma-jz4780.c +8 -0
index 2a483802d..9c1a6e9a9 100644
@@ -1038,6 +1038,13 @@ static const struct jz4780_dma_soc_data jz4725b_dma_soc_data = {
 		 JZ_SOC_DATA_BREAK_LINKS,
 };
 
+static const struct jz4780_dma_soc_data jz4755_dma_soc_data = {
+	.nb_channels = 4,
+	.transfer_ord_max = 5,
+	.flags = JZ_SOC_DATA_PER_CHAN_PM | JZ_SOC_DATA_NO_DCKES_DCKEC |
+		 JZ_SOC_DATA_BREAK_LINKS,
+};
+
 static const struct jz4780_dma_soc_data jz4760_dma_soc_data = {
 	.nb_channels = 5,
 	.transfer_ord_max = 6,
@@ -1101,6 +1108,7 @@ static const struct jz4780_dma_soc_data x1830_dma_soc_data = {
 static const struct of_device_id jz4780_dma_dt_match[] = {
 	{ .compatible = "ingenic,jz4740-dma", .data = &jz4740_dma_soc_data },
 	{ .compatible = "ingenic,jz4725b-dma", .data = &jz4725b_dma_soc_data },
+	{ .compatible = "ingenic,jz4755-dma", .data = &jz4755_dma_soc_data },
 	{ .compatible = "ingenic,jz4760-dma", .data = &jz4760_dma_soc_data },
 	{ .compatible = "ingenic,jz4760-mdma", .data = &jz4760_mdma_soc_data },
 	{ .compatible = "ingenic,jz4760-bdma", .data = &jz4760_bdma_soc_data },
Signature · 1 line
2.36.1
maintainer Reviewed-by on v3 2/2
#3 lore raw

Re: [PATCH v3 2/2] dmaengine: JZ4780: Add support for the JZ4755.

Hi Siarhei,

Quoted 9 lines · Siarhei Volkau

The JZ4755 has 4 DMA channels per DMA unit, two idential DMA units.

The JZ4755 has the similar DMA engine to JZ4725b and it has the same bug as JZ4725b, see commit a40c94be2336.
At least the JZ_SOC_DATA_BREAK_LINKS flag make it work much better, although not ideal.

You forgot my tag that I added on your V2.

Cheers,
-Paul

Quoted 41 lines
---
 drivers/dma/dma-jz4780.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/dma/dma-jz4780.c +7 -0
index 2a483802d..9c1a6e9a9 100644
@@ -1038,6 +1038,13 @@ static const struct jz4780_dma_soc_data 
 jz4725b_dma_soc_data = {
 		 JZ_SOC_DATA_BREAK_LINKS,
 };
 
+static const struct jz4780_dma_soc_data jz4755_dma_soc_data = {
+	.nb_channels = 4,
+	.transfer_ord_max = 5,
+	.flags = JZ_SOC_DATA_PER_CHAN_PM | JZ_SOC_DATA_NO_DCKES_DCKEC |
+		 JZ_SOC_DATA_BREAK_LINKS,
+};
+
 static const struct jz4780_dma_soc_data jz4760_dma_soc_data = {
 	.nb_channels = 5,
drivers/dma/dma-jz4780.c +1 -0
 	.transfer_ord_max = 6,
@@ -1101,6 +1108,7 @@ static const struct jz4780_dma_soc_data 
 x1830_dma_soc_data = {
 static const struct of_device_id jz4780_dma_dt_match[] = {
 	{ .compatible = "ingenic,jz4740-dma", .data = &jz4740_dma_soc_data 
 },
 	{ .compatible = "ingenic,jz4725b-dma", .data = 
 &jz4725b_dma_soc_data },
+	{ .compatible = "ingenic,jz4755-dma", .data = &jz4755_dma_soc_data 

},
{ .compatible = "ingenic,jz4760-dma", .data = &jz4760_dma_soc_data
},
{ .compatible = "ingenic,jz4760-mdma", .data =
&jz4760_mdma_soc_data },
{ .compatible = "ingenic,jz4760-bdma", .data =
&jz4760_bdma_soc_data },
--
2.36.1