[PATCH RFC v9 2/6] dma: mpc512x: add support for peripheral transfers
Alexander Popov
a13xp0p0v88 at gmail.com
Thu Mar 20 00:26:47 EST 2014
Hello Andy
2014-03-14 13:47 GMT+04:00 Andy Shevchenko <andriy.shevchenko at linux.intel.com>:
> 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
More information about the Linuxppc-dev
mailing list