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? Best regards, Alexander -- 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