RE: [PATCH] serial: Add OMAP high-speed UART driver.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 

> -----Original Message-----
> From: svenkatr@xxxxxxxxx [mailto:svenkatr@xxxxxxxxx] 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@xxxxxxxxxxxxxxx; 
> linux-omap@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; 
> 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@xxxxxxxxxxx> wrote:
> > * G, Manjunath Kondaiah <manjugk@xxxxxx> [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-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux