lkml.org 
[lkml]   [2010]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRE: [PATCH] serial: Add OMAP high-speed UART driver.


> -----Original Message-----
> From: svenkatr@gmail.com [mailto:svenkatr@gmail.com] On
> Behalf Of Venkatraman S
> Sent: Tuesday, March 02, 2010 7:16 PM
> To: Tony Lindgren; G, Manjunath Kondaiah; Raja, Govindraj;
> Greg KH; linux-serial@vger.kernel.org;
> linux-omap@vger.kernel.org; linux-kernel@vger.kernel.org;
> Kevin Hilman; Olof Johansson
> Subject: Re: [PATCH] serial: Add OMAP high-speed UART driver.
>
> On Tue, Mar 2, 2010 at 12:22 PM, Tony Lindgren
> <tony@atomide.com> wrote:
> > * G, Manjunath Kondaiah <manjugk@ti.com> [100301 22:24]:
> >>
> >>
> >>
> >> > > > > +     up->uart_dma.prev_rx_dma_pos =
> >> > up->uart_dma.rx_buf_dma_phys;
> >> > > > > +     if (cpu_is_omap44xx())
> >> > > > > +             omap_writel(0, OMAP44XX_DMA4_BASE
> >> > > > > +                     +
> >> > OMAP_DMA4_CDAC(up->uart_dma.rx_dma_channel));
> >> > > > > +     else
> >> > > > > +             omap_writel(0, OMAP34XX_DMA4_BASE
> >> > > > > +                     +
> >> > OMAP_DMA4_CDAC(up->uart_dma.rx_dma_channel));
> >> > > >
> >> > > > NAK. Please don't use omap_read/write for for new
> code. And do not
> >> > > > tinker with the omap hardware registers directly in
> the driver.
> >> > > >
> >> > > > This needs to be done properly in
> >> > arch/arm/plat-omap/dma.c instead.
> >> > >
> >> > > Thanks for the suggestion.
> >> > >
> >> > > Currently, dma_read/dma_write are #define's in dma.c which
> >> > cannot be
> >> > > accessed outside dma.c. I don't see any API's in dma.c for
> >> > setting required
> >> > > value for this register?
> >> >
> >> > Hmm isn't this the same as omap_get_dma_dst_pos(int
> lch)? If you're
> >> > trying do something that's not in dma.c, we can add a
> new function
> >> > for it.
> >>
> >> The omap_get_dma_dst_pos(int lch) is for read operation in
> CDAC register.
> >> But, We need to write required value into CDAC register.
> For this, I propose:
> >>
> >> omap_set_dma_dst_pos(int lch, int value) which does not
> exist in current dma
> >> driver.
> >
> > OK, it that's needed.
> >
> > Tony
> > --
> CDAC is a shadow register used for monitoring the DMA channel.
> I think it would be a lot
> simpler if omap_start_dma() always resets CDAC to 0, and the
> UART driver
> just not set it explicitly.

This seems to be better option than exposing CDAC read/write API
to other drivers since user need to write '0' before starting any DMA
transfer which can be be done in omap_start_dma().

I am wondering how other drivers are using DMA transfer API's without
resetting CDAC to zero.

-Manjunath


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2010-03-02 15:01    [W:0.459 / U:2.728 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site