If you have a board based on such a SoC and wish to use DMA for
          devices which can use the DMA controller, say Y or M here.
 
-config DMA_OMAP
-       tristate "OMAP DMA support"
-       depends on ARCH_OMAP || COMPILE_TEST
-       select DMA_ENGINE
-       select DMA_VIRTUAL_CHANNELS
-       select TI_DMA_CROSSBAR if (SOC_DRA7XX || COMPILE_TEST)
-
 config DMA_SA11X0
        tristate "SA-11x0 DMA support"
        depends on ARCH_SA1100 || COMPILE_TEST
        help
          Enable support for the Timberdale FPGA DMA engine.
 
-config TI_CPPI41
-       tristate "CPPI 4.1 DMA support"
-       depends on (ARCH_OMAP || ARCH_DAVINCI_DA8XX)
-       select DMA_ENGINE
-       help
-         The Communications Port Programming Interface (CPPI) 4.1 DMA engine
-         is currently used by the USB driver on AM335x and DA8xx platforms.
-
-config TI_DMA_CROSSBAR
-       bool
-
-config TI_EDMA
-       bool "TI EDMA support"
-       depends on ARCH_DAVINCI || ARCH_OMAP || ARCH_KEYSTONE || COMPILE_TEST
-       select DMA_ENGINE
-       select DMA_VIRTUAL_CHANNELS
-       select TI_DMA_CROSSBAR if (ARCH_OMAP || COMPILE_TEST)
-       default n
-       help
-         Enable support for the TI EDMA controller. This DMA
-         engine is found on TI DaVinci and AM33xx parts.
-
 config XGENE_DMA
        tristate "APM X-Gene DMA support"
        depends on ARCH_XGENE || COMPILE_TEST
 
 source "drivers/dma/sh/Kconfig"
 
+source "drivers/dma/ti/Kconfig"
+
 # clients
 comment "DMA Clients"
        depends on DMA_ENGINE
 
 obj-$(CONFIG_DMA_BCM2835) += bcm2835-dma.o
 obj-$(CONFIG_DMA_JZ4740) += dma-jz4740.o
 obj-$(CONFIG_DMA_JZ4780) += dma-jz4780.o
-obj-$(CONFIG_DMA_OMAP) += omap-dma.o
 obj-$(CONFIG_DMA_SA11X0) += sa11x0-dma.o
 obj-$(CONFIG_DMA_SUN4I) += sun4i-dma.o
 obj-$(CONFIG_DMA_SUN6I) += sun6i-dma.o
 obj-$(CONFIG_TEGRA20_APB_DMA) += tegra20-apb-dma.o
 obj-$(CONFIG_TEGRA210_ADMA) += tegra210-adma.o
 obj-$(CONFIG_TIMB_DMA) += timb_dma.o
-obj-$(CONFIG_TI_CPPI41) += cppi41.o
-obj-$(CONFIG_TI_DMA_CROSSBAR) += ti-dma-crossbar.o
-obj-$(CONFIG_TI_EDMA) += edma.o
 obj-$(CONFIG_XGENE_DMA) += xgene-dma.o
 obj-$(CONFIG_ZX_DMA) += zx_dma.o
 obj-$(CONFIG_ST_FDMA) += st_fdma.o
 
 obj-y += mediatek/
 obj-y += qcom/
+obj-y += ti/
 obj-y += xilinx/
 
--- /dev/null
+#
+# Texas Instruments DMA drivers
+#
+
+config TI_CPPI41
+       tristate "Texas Instruments CPPI 4.1 DMA support"
+       depends on (ARCH_OMAP || ARCH_DAVINCI_DA8XX)
+       select DMA_ENGINE
+       help
+         The Communications Port Programming Interface (CPPI) 4.1 DMA engine
+         is currently used by the USB driver on AM335x and DA8xx platforms.
+
+config TI_EDMA
+       tristate "Texas Instruments EDMA support"
+       depends on ARCH_DAVINCI || ARCH_OMAP || ARCH_KEYSTONE || COMPILE_TEST
+       select DMA_ENGINE
+       select DMA_VIRTUAL_CHANNELS
+       select TI_DMA_CROSSBAR if (ARCH_OMAP || COMPILE_TEST)
+       default y
+       help
+         Enable support for the TI EDMA (Enhanced DMA) controller. This DMA
+         engine is found on TI DaVinci, AM33xx, AM43xx, DRA7xx and Keystone 2
+         parts.
+
+config DMA_OMAP
+       tristate "Texas Instruments sDMA (omap-dma) support"
+       depends on ARCH_OMAP || COMPILE_TEST
+       select DMA_ENGINE
+       select DMA_VIRTUAL_CHANNELS
+       select TI_DMA_CROSSBAR if (SOC_DRA7XX || COMPILE_TEST)
+       default y
+       help
+         Enable support for the TI sDMA (System DMA or DMA4) controller. This
+         DMA engine is found on OMAP and DRA7xx parts.
+
+config TI_DMA_CROSSBAR
+       bool
 
--- /dev/null
+# SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_TI_CPPI41) += cppi41.o
+obj-$(CONFIG_TI_EDMA) += edma.o
+obj-$(CONFIG_DMA_OMAP) += omap-dma.o
+obj-$(CONFIG_TI_DMA_CROSSBAR) += dma-crossbar.o
 
 #include <linux/interrupt.h>
 #include <linux/of_address.h>
 #include <linux/pm_runtime.h>
-#include "dmaengine.h"
+#include "../dmaengine.h"
 
 #define DESC_TYPE      27
 #define DESC_TYPE_HOST 0x10
 
 
 #include <linux/platform_data/edma.h>
 
-#include "dmaengine.h"
-#include "virt-dma.h"
+#include "../dmaengine.h"
+#include "../virt-dma.h"
 
 /* Offsets matching "struct edmacc_param" */
 #define PARM_OPT               0x00
 
 #include <linux/of_dma.h>
 #include <linux/of_device.h>
 
-#include "virt-dma.h"
+#include "../virt-dma.h"
 
 #define OMAP_SDMA_REQUESTS     127
 #define OMAP_SDMA_CHANNELS     32