All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mugunthan V N <mugunthanvnm@ti.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 5/6] drivers: dma: ti-edma3: convert driver to adopt driver model
Date: Tue, 1 Dec 2015 16:43:17 +0530	[thread overview]
Message-ID: <1448968398-8270-6-git-send-email-mugunthanvnm@ti.com> (raw)
In-Reply-To: <1448968398-8270-1-git-send-email-mugunthanvnm@ti.com>

adopt ti-edma3 driver to device driver model

Signed-off-by: Mugunthan V N <mugunthanvnm@ti.com>
---
 drivers/dma/ti-edma3.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 73 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/ti-edma3.c b/drivers/dma/ti-edma3.c
index d6a427f..0eb8602 100644
--- a/drivers/dma/ti-edma3.c
+++ b/drivers/dma/ti-edma3.c
@@ -11,6 +11,9 @@
 
 #include <asm/io.h>
 #include <common.h>
+#include <dma.h>
+#include <dm/device.h>
+#include <asm/omap_common.h>
 #include <asm/ti-common/ti-edma3.h>
 
 #define EDMA3_SL_BASE(slot)			(0x4000 + ((slot) << 5))
@@ -31,6 +34,11 @@
 #define EDMA3_QEESR				0x108c
 #define EDMA3_QSECR				0x1094
 
+/* ti qspi priv */
+struct ti_edma3_priv {
+	u32 base;
+};
+
 /**
  * qedma3_start - start qdma on a channel
  * @base: base address of edma
@@ -383,8 +391,8 @@ void qedma3_stop(u32 base, struct edma3_channel_config *cfg)
 	__raw_writel(0, base + EDMA3_QCHMAP(cfg->chnum));
 }
 
-void edma3_transfer(unsigned long edma3_base_addr, unsigned int
-		    edma_slot_num, void *dst, void *src, size_t len)
+void __edma3_transfer(unsigned long edma3_base_addr, unsigned int edma_slot_num,
+		      void *dst, void *src, size_t len)
 {
 	struct edma3_slot_config        slot;
 	struct edma3_channel_config     edma_channel;
@@ -460,3 +468,66 @@ void edma3_transfer(unsigned long edma3_base_addr, unsigned int
 		qedma3_stop(edma3_base_addr, &edma_channel);
 	}
 }
+
+#ifndef CONFIG_DM_DMA
+
+void edma3_transfer(unsigned long edma3_base_addr, unsigned int edma_slot_num,
+		    void *dst, void *src, size_t len)
+{
+	__edma3_transfer(edma3_base_addr, edma_slot_num, dst, src, len);
+}
+
+#else
+
+static int ti_edma3_transfer(struct udevice *dev, int direction, void *dst,
+			     void *src, size_t len)
+{
+	struct ti_edma3_priv *priv = dev_get_priv(dev);
+
+	/* enable edma3 clocks */
+	enable_edma3_clocks();
+
+	__edma3_transfer(priv->base, 1, dst, src, len);
+
+	/* disable edma3 clocks */
+	disable_edma3_clocks();
+
+	return 0;
+}
+
+static int ti_edma3_probe(struct udevice *bus)
+{
+	/* Nothing to do in probe */
+	return 0;
+}
+
+static int ti_edma3_ofdata_to_platdata(struct udevice *dev)
+{
+	struct ti_edma3_priv *priv = dev_get_priv(dev);
+	struct dma_dev_priv *uc_priv = dev_get_uclass_priv(dev);
+
+	priv->base = dev_get_addr(dev);
+	uc_priv->supported = SUPPORTS_MEM_TO_MEM;
+
+	return 0;
+}
+
+static const struct dma_ops ti_edma3_ops = {
+	.transfer	= ti_edma3_transfer,
+};
+
+static const struct udevice_id ti_edma3_ids[] = {
+	{ .compatible = "ti,edma3" },
+	{ }
+};
+
+U_BOOT_DRIVER(ti_edma3) = {
+	.name	= "ti_edma3",
+	.id	= UCLASS_DMA,
+	.of_match = ti_edma3_ids,
+	.ops	= &ti_edma3_ops,
+	.ofdata_to_platdata = ti_edma3_ofdata_to_platdata,
+	.priv_auto_alloc_size = sizeof(struct ti_edma3_priv),
+	.probe	= ti_edma3_probe,
+};
+#endif /* CONFIG_DM_DMA */
-- 
2.6.3.368.gf34be46

  parent reply	other threads:[~2015-12-01 11:13 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-01 11:13 [U-Boot] [PATCH 0/6] add dma uclass implementation and adopt ti-edma3 to it Mugunthan V N
2015-12-01 11:13 ` [U-Boot] [PATCH 1/6] dm: implement a DMA uclass Mugunthan V N
2015-12-01 21:54   ` Simon Glass
2015-12-02  8:17     ` Mugunthan V N
2015-12-02  9:11       ` Mugunthan V N
2015-12-01 11:13 ` [U-Boot] [PATCH 2/6] dma: Kconfig: Add TI_EDMA3 entry Mugunthan V N
2015-12-01 21:54   ` Simon Glass
2015-12-01 11:13 ` [U-Boot] [PATCH 3/6] sf: sf_ops: use dma to copy data from mmap region if platform supports Mugunthan V N
2015-12-01 21:54   ` Simon Glass
2015-12-02  9:45     ` Mugunthan V N
2015-12-02 21:05       ` Simon Glass
2015-12-01 11:13 ` [U-Boot] [PATCH 4/6] spi: ti_qspi: compile out spi_flash_copy_mmap when DM_DMA is defined Mugunthan V N
2015-12-01 21:54   ` Simon Glass
2015-12-01 11:13 ` Mugunthan V N [this message]
2015-12-01 21:54   ` [U-Boot] [PATCH 5/6] drivers: dma: ti-edma3: convert driver to adopt driver model Simon Glass
2015-12-02  9:47     ` Mugunthan V N
2015-12-01 11:13 ` [U-Boot] [PATCH 6/6] defconfig: am437x_sk_evm: enable dma " Mugunthan V N
2015-12-01 21:54   ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1448968398-8270-6-git-send-email-mugunthanvnm@ti.com \
    --to=mugunthanvnm@ti.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.