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. Simple wrapper APIs doing get / set on individual DMA registers is as difficult to understand as omap_read / omap_write, IMHO. Best regards, Venkat. -- 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