starfive: add new target for StarFive JH7100/7110 SoC
[openwrt/staging/981213.git] / target / linux / starfive / patches-6.1 / 1008-dmaengine-dw-axi-dmac-Add-StarFive-JH7100-support.patch
1 From c06352c09ce55999d41036e593293a3aaf0cf70c Mon Sep 17 00:00:00 2001
2 From: Samin Guo <samin.guo@starfivetech.com>
3 Date: Wed, 17 Nov 2021 14:50:45 +0800
4 Subject: [PATCH 1008/1024] dmaengine: dw-axi-dmac: Add StarFive JH7100 support
5
6 Signed-off-by: Samin Guo <samin.guo@starfivetech.com>
7 Signed-off-by: Emil Renner Berthing <kernel@esmil.dk>
8 ---
9 drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 12 ++++++++++++
10 drivers/dma/dw-axi-dmac/dw-axi-dmac.h | 4 ++++
11 2 files changed, 16 insertions(+)
12
13 --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
14 +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
15 @@ -677,8 +677,13 @@ static int dw_axi_dma_set_hw_desc(struct
16
17 hw_desc->lli->block_ts_lo = cpu_to_le32(block_ts - 1);
18
19 +#ifdef CONFIG_SOC_STARFIVE
20 + ctllo |= DWAXIDMAC_BURST_TRANS_LEN_16 << CH_CTL_L_DST_MSIZE_POS |
21 + DWAXIDMAC_BURST_TRANS_LEN_16 << CH_CTL_L_SRC_MSIZE_POS;
22 +#else
23 ctllo |= DWAXIDMAC_BURST_TRANS_LEN_4 << CH_CTL_L_DST_MSIZE_POS |
24 DWAXIDMAC_BURST_TRANS_LEN_4 << CH_CTL_L_SRC_MSIZE_POS;
25 +#endif
26 hw_desc->lli->ctl_lo = cpu_to_le32(ctllo);
27
28 set_desc_src_master(hw_desc);
29 @@ -1508,7 +1513,11 @@ static int dw_probe(struct platform_devi
30 * Therefore, set constraint to 1024 * 4.
31 */
32 dw->dma.dev->dma_parms = &dw->dma_parms;
33 +#ifdef CONFIG_SOC_STARFIVE
34 + dma_set_max_seg_size(&pdev->dev, DMAC_MAX_BLK_SIZE);
35 +#else
36 dma_set_max_seg_size(&pdev->dev, MAX_BLOCK_SIZE);
37 +#endif
38 platform_set_drvdata(pdev, chip);
39
40 pm_runtime_enable(chip->dev);
41 @@ -1593,6 +1602,9 @@ static const struct of_device_id dw_dma_
42 .compatible = "intel,kmb-axi-dma",
43 .data = (void *)AXI_DMA_FLAG_HAS_APB_REGS,
44 }, {
45 + .compatible = "starfive,jh7100-axi-dma",
46 + .data = (void *)(AXI_DMA_FLAG_HAS_RESETS | AXI_DMA_FLAG_USE_CFG2),
47 + }, {
48 .compatible = "starfive,jh7110-axi-dma",
49 .data = (void *)(AXI_DMA_FLAG_HAS_RESETS | AXI_DMA_FLAG_USE_CFG2),
50 },
51 --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
52 +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
53 @@ -283,7 +283,11 @@ enum {
54 #define CH_CTL_L_SRC_MAST BIT(0)
55
56 /* CH_CFG_H */
57 +#ifdef CONFIG_SOC_STARFIVE
58 +#define CH_CFG_H_PRIORITY_POS 15
59 +#else
60 #define CH_CFG_H_PRIORITY_POS 17
61 +#endif
62 #define CH_CFG_H_DST_PER_POS 12
63 #define CH_CFG_H_SRC_PER_POS 7
64 #define CH_CFG_H_HS_SEL_DST_POS 4