MLK-25266: dmaengine: imx-sdma: add i2c dma support
authorRobin Gong <yibin.gong@nxp.com>
Fri, 8 Jan 2021 17:41:20 +0000 (01:41 +0800)
committerShengjiu Wang <shengjiu.wang@nxp.com>
Wed, 21 Apr 2021 08:00:09 +0000 (16:00 +0800)
add new i2c dma script.

Signed-off-by: Robin Gong <yibin.gong@nxp.com>
Acked-by: Clark Wang <xiaoning.wang@nxp.com>
drivers/dma/imx-sdma.c
include/linux/platform_data/dma-imx-sdma.h
include/linux/platform_data/dma-imx.h

index 07888b8..298fb5b 100644 (file)
@@ -1101,6 +1101,11 @@ static void sdma_get_pc(struct sdma_channel *sdmac,
                per_2_emi = sdma->script_addrs->sai_2_mcu_addr;
                emi_2_per = sdma->script_addrs->mcu_2_sai_addr;
                sdmac->is_ram_script = true;
+               break;
+       case IMX_DMATYPE_I2C:
+               per_2_emi = sdma->script_addrs->i2c_2_mcu_addr;
+               emi_2_per = sdma->script_addrs->mcu_2_i2c_addr;
+               sdmac->is_ram_script = true;
        default:
                break;
        }
@@ -2012,8 +2017,8 @@ static void sdma_issue_pending(struct dma_chan *chan)
 
 #define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V1        34
 #define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V2        38
-#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V3        45
-#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V4        46
+#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V3        47
+#define SDMA_SCRIPT_ADDRS_ARRAY_SIZE_V4        48
 
 static void sdma_add_scripts(struct sdma_engine *sdma,
                const struct sdma_script_start_addrs *addr)
index e12d2e8..a9f7966 100644 (file)
@@ -56,6 +56,8 @@ struct sdma_script_start_addrs {
        s32 sai_2_mcu_addr;
        s32 uart_2_mcu_addr;
        s32 uartsh_2_mcu_addr;
+       s32 i2c_2_mcu_addr;
+       s32 mcu_2_i2c_addr;
        /* End of v3 array */
        s32 mcu_2_zqspi_addr;
        /* End of v4 array */
index eb19aed..f10d767 100644 (file)
@@ -42,6 +42,7 @@ enum sdma_peripheral_type {
        IMX_DMATYPE_SAI,        /* SAI */
        IMX_DMATYPE_MULTI_SAI,  /* MULTI FIFOs For Audio */
        IMX_DMATYPE_HDMI,       /* HDMI Audio */
+       IMX_DMATYPE_I2C,        /* I2C */
 };
 
 enum imx_dma_prio {