Re: [U-Boot] [PATCH v4 4/7] dma: ti: add driver to K3 UDMA

2019-02-06 Thread Tom Rini
On Tue, Feb 05, 2019 at 05:31:24PM +0530, Vignesh R wrote:

> The UDMA-P is intended to perform similar (but significantly upgraded) 
> functions
> as the packet-oriented DMA used on previous SoC devices. The UDMA-P module
> supports the transmission and reception of various packet types.
> The UDMA-P also supports acting as both a UTC and UDMA-C for its internal
> channels. Channels in the UDMA-P can be configured to be either Packet-Based 
> or
> Third-Party channels on a channel by channel basis.
> 
> The initial driver supports:
> - MEM_TO_MEM (TR mode)
> - DEV_TO_MEM (Packet mode)
> - MEM_TO_DEV (Packet mode)
> 
> Signed-off-by: Peter Ujfalusi 
> Signed-off-by: Grygorii Strashko 
> Signed-off-by: Vignesh R 

Please note that some of these comments apply to patch #2 as well, but I
see a specific thing here

[snip]
> +++ b/drivers/dma/ti/k3-udma-hwdef.h
> @@ -0,0 +1,184 @@
> +/* SPDX-License-Identifier: GPL-2.0+ */
> +/*
> + *  Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com
> + *
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.

You don't need/want both the SPDX tag and boilerplate.

[snip]
> +/* Generic register access functions */
> +static inline u32 udma_read(void __iomem *base, int reg)
> +{
> + u32 v;
> +
> + v = __raw_readl(base + reg);
> + pr_debug("READL(32): v(%08X)<--reg(%p)\n", v, base + reg);
> + return v;
> +}
> +
> +static inline void udma_write(void __iomem *base, int reg, u32 val)
> +{
> + pr_debug("WRITEL(32): v(%08X)-->reg(%p)\n", val, base + reg);
> + __raw_writel(val, base + reg);
> +}

I wasn't clear enough, sorry.  We should be using __raw_readl/writel and
not wrapping them.  If things are still in such a state that you need to
dump every read/write, are things really usable?  I assume this is just
handy bring-up related work and it's time to drop it.  Thanks!

-- 
Tom


signature.asc
Description: PGP signature
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH v4 4/7] dma: ti: add driver to K3 UDMA

2019-02-05 Thread Vignesh R
The UDMA-P is intended to perform similar (but significantly upgraded) functions
as the packet-oriented DMA used on previous SoC devices. The UDMA-P module
supports the transmission and reception of various packet types.
The UDMA-P also supports acting as both a UTC and UDMA-C for its internal
channels. Channels in the UDMA-P can be configured to be either Packet-Based or
Third-Party channels on a channel by channel basis.

The initial driver supports:
- MEM_TO_MEM (TR mode)
- DEV_TO_MEM (Packet mode)
- MEM_TO_DEV (Packet mode)

Signed-off-by: Peter Ujfalusi 
Signed-off-by: Grygorii Strashko 
Signed-off-by: Vignesh R 
---
 drivers/dma/Kconfig   |2 +
 drivers/dma/Makefile  |2 +
 drivers/dma/ti/Kconfig|   14 +
 drivers/dma/ti/Makefile   |3 +
 drivers/dma/ti/k3-udma-hwdef.h|  184 +++
 drivers/dma/ti/k3-udma.c  | 1730 +
 include/dt-bindings/dma/k3-udma.h |   31 +
 include/linux/soc/ti/ti-udma.h|   24 +
 8 files changed, 1990 insertions(+)
 create mode 100644 drivers/dma/ti/Kconfig
 create mode 100644 drivers/dma/ti/Makefile
 create mode 100644 drivers/dma/ti/k3-udma-hwdef.h
 create mode 100644 drivers/dma/ti/k3-udma.c
 create mode 100644 include/dt-bindings/dma/k3-udma.h
 create mode 100644 include/linux/soc/ti/ti-udma.h

diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index 1820676d7a18..4f37ba7d35eb 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -57,4 +57,6 @@ config APBH_DMA_BURST8
 
 endif
 
+source "drivers/dma/ti/Kconfig"
+
 endmenu # menu "DMA Support"
diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
index b5f9147e0a54..afab324461b9 100644
--- a/drivers/dma/Makefile
+++ b/drivers/dma/Makefile
@@ -13,3 +13,5 @@ obj-$(CONFIG_SANDBOX_DMA) += sandbox-dma-test.o
 obj-$(CONFIG_TI_KSNAV) += keystone_nav.o keystone_nav_cfg.o
 obj-$(CONFIG_TI_EDMA3) += ti-edma3.o
 obj-$(CONFIG_DMA_LPC32XX) += lpc32xx_dma.o
+
+obj-y += ti/
diff --git a/drivers/dma/ti/Kconfig b/drivers/dma/ti/Kconfig
new file mode 100644
index ..3d5498326c42
--- /dev/null
+++ b/drivers/dma/ti/Kconfig
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: GPL-2.0+
+
+if ARCH_K3
+
+config TI_K3_NAVSS_UDMA
+bool "Texas Instruments UDMA"
+depends on ARCH_K3
+select DMA
+select TI_K3_NAVSS_RINGACC
+select TI_K3_NAVSS_PSILCFG
+default n
+help
+  Support for UDMA used in K3 devices.
+endif
diff --git a/drivers/dma/ti/Makefile b/drivers/dma/ti/Makefile
new file mode 100644
index ..de2f9ac91a46
--- /dev/null
+++ b/drivers/dma/ti/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0+
+
+obj-$(CONFIG_TI_K3_NAVSS_UDMA) += k3-udma.o
diff --git a/drivers/dma/ti/k3-udma-hwdef.h b/drivers/dma/ti/k3-udma-hwdef.h
new file mode 100644
index ..c88399a815ea
--- /dev/null
+++ b/drivers/dma/ti/k3-udma-hwdef.h
@@ -0,0 +1,184 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ *  Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com
+ *
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#ifndef K3_NAVSS_UDMA_HWDEF_H_
+#define K3_NAVSS_UDMA_HWDEF_H_
+
+#define UDMA_PSIL_DST_THREAD_ID_OFFSET 0x8000
+
+/* Global registers */
+#define UDMA_REV_REG   0x0
+#define UDMA_PERF_CTL_REG  0x4
+#define UDMA_EMU_CTL_REG   0x8
+#define UDMA_PSIL_TO_REG   0x10
+#define UDMA_UTC_CTL_REG   0x1c
+#define UDMA_CAP_REG(i)(0x20 + (i * 4))
+#define UDMA_RX_FLOW_ID_FW_OES_REG 0x80
+#define UDMA_RX_FLOW_ID_FW_STATUS_REG  0x88
+
+/* RX Flow regs */
+#define UDMA_RFLOW_RFA_REG 0x0
+#define UDMA_RFLOW_RFB_REG 0x4
+#define UDMA_RFLOW_RFC_REG 0x8
+#define UDMA_RFLOW_RFD_REG 0xc
+#define UDMA_RFLOW_RFE_REG 0x10
+#define UDMA_RFLOW_RFF_REG 0x14
+#define UDMA_RFLOW_RFG_REG 0x18
+#define UDMA_RFLOW_RFH_REG 0x1c
+
+#define UDMA_RFLOW_REG(x) (UDMA_RFLOW_RF##x##_REG)
+
+/* TX chan regs */
+#define UDMA_TCHAN_TCFG_REG0x0
+#define UDMA_TCHAN_TCREDIT_REG 0x4
+#define UDMA_TCHAN_TCQ_REG 0x14
+#define UDMA_TCHAN_TOES_REG(i) (0x20 + (i) * 4)
+#define UDMA_TCHAN_TEOES_REG   0x60
+#define UDMA_TCHAN_TPRI_CTRL_REG   0x64
+#define UDMA_TCHAN_THREAD_ID_REG   0x68
+#define UDMA_TCHAN_TFIFO_DEPTH_REG 0x70
+#define UDMA_TCHAN_TST_SCHED_REG   0x80
+
+/* RX chan regs */
+#define UDMA_RCHAN_RCFG_REG0x0
+#define UDMA_RCHAN_RCQ_REG 0x14
+#define UDMA_RCHAN_ROES_REG(i) (0x20 + (i) * 4)
+#define UDMA_RCHAN_REOES_REG   0x60
+#define UDMA_RCHAN_RPRI_CTRL_REG   0x64
+#define UDMA_RCHAN_THREAD_ID_REG   0x68
+#define UDMA_RCHAN_RST_SCHED_REG   0x8