From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mugunthan V N Date: Wed, 2 Dec 2015 15:17:37 +0530 Subject: [U-Boot] [PATCH 5/6] drivers: dma: ti-edma3: convert driver to adopt driver model In-Reply-To: References: <1448968398-8270-1-git-send-email-mugunthanvnm@ti.com> <1448968398-8270-6-git-send-email-mugunthanvnm@ti.com> Message-ID: <565EBE39.4040000@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Wednesday 02 December 2015 03:24 AM, Simon Glass wrote: > Hi Mugunthan, > > On 1 December 2015 at 04:13, Mugunthan V N wrote: >> adopt ti-edma3 driver to device driver model >> >> Signed-off-by: Mugunthan V N >> --- >> 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 >> #include >> +#include >> +#include >> +#include >> #include >> >> #define EDMA3_SL_BASE(slot) (0x4000 + ((slot) << 5)) >> @@ -31,6 +34,11 @@ >> #define EDMA3_QEESR 0x108c >> #define EDMA3_QSECR 0x1094 >> >> +/* ti qspi priv */ > > May as well drop this comment as it doesn't help. > >> +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); > > What happens to direction? Missed to check the direction, will add in next version. > >> + >> + /* disable edma3 clocks */ >> + disable_edma3_clocks(); >> + >> + return 0; >> +} >> + >> +static int ti_edma3_probe(struct udevice *bus) >> +{ >> + /* Nothing to do in probe */ > > You can omit this function. Okay. > >> + 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 >> > Regards Mugunthan V N