On Wed, Mar 19, 2014 at 05:26:47PM +0400, Alexander Popov wrote: > Hello Andy > > 2014-03-14 13:47 GMT+04:00 Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>: > > On Wed, 2014-03-12 at 15:47 +0400, Alexander Popov wrote: > >> + case DMA_SLAVE_CONFIG: > >> + /* Constraints: > >> + * - only transfers between a peripheral device and > >> + * memory are supported; > >> + * - minimal transfer chunk is 4 bytes and consequently > >> + * source and destination addresses must be 4-byte aligned > >> + * and transfer size must be aligned on (4 * maxburst) > >> + * boundary; > >> + * - during the transfer RAM address is being incremented by > >> + * the size of minimal transfer chunk; > >> + * - peripheral port's address is constant during the transfer. > >> + */ > >> + > >> + cfg = (void *)arg; > >> + > >> + if (!is_slave_direction(cfg->direction)) > >> + return -EINVAL; > > > > As far as I understand the intention you have not to use direction field > > in the dma_slave_config. It will be removed once. > > > >> + > >> + if (cfg->src_addr_width != DMA_SLAVE_BUSWIDTH_4_BYTES && > >> + cfg->dst_addr_width != DMA_SLAVE_BUSWIDTH_4_BYTES) > >> + return -EINVAL; > >> + > >> + spin_lock_irqsave(&mchan->lock, flags); > >> + > >> + if (cfg->direction == DMA_DEV_TO_MEM) { > >> + mchan->per_paddr = cfg->src_addr; > >> + mchan->tcd_nunits = cfg->src_maxburst; > >> + } else { > >> + mchan->per_paddr = cfg->dst_addr; > >> + mchan->tcd_nunits = cfg->dst_maxburst; > >> + } > > > > Ditto. > > Excuse me, I don't understand this point. > I have to use cfg->direction because in case of DMA_DEV_TO_MEM > I use cfg->SRC_addr and cfg->SRC_maxburst and in case of > DMA_MEM_TO_DEV I use cfg->DST_addr and cfg->DST_maxburst. > Is it correct? You store the complete config for both source and destination. Then based on the descriptor direction you can retrive the values from channel context and program This way you _dont_ need to fix the direction and can use it both ways! -- ~Vinod -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html