[PATCH 3/7] DMA: PL330: Add DMA capabilities
Jassi Brar
jassisinghbrar at gmail.com
Wed Jul 13 23:53:17 EDT 2011
On Thu, Jul 14, 2011 at 6:27 AM, boojin <boojin.kim at samsung.com> wrote:
> Jassi Brar wrote:
>
>> On Tue, Jul 5, 2011 at 12:03 PM, Chanho Park <parkch98 at gmail.com> wrote:
>> > Kukjin Kim <kgene.kim <at> samsung.com> writes:
>> >
>> > (snip)
>> >
>> >> + if (slave_config->direction == DMA_TO_DEVICE) {
>> >> + if (slave_config->dst_addr)
>> >> + peri->fifo_addr = slave_config->dst_addr;
>> >> + if (slave_config->dst_addr_width) {
>> >> + i = 0;
>> >> + while (slave_config->dst_addr_width != (1 <<
>> > i))
>> >> + i++;
>> >> + peri->burst_sz = i;
>> >> + }
>> >> + } else if (slave_config->direction == DMA_FROM_DEVICE) {
>> >> + if (slave_config->src_addr)
>> >> + peri->fifo_addr = slave_config->src_addr;
>> >> + if (slave_config->src_addr_width) {
>> >> + i = 0;
>> >> + while (slave_config->src_addr_width != (1 <<
>> > i))
>> >> + i++;
>> >> + peri->burst_sz = i;
>> >
>> > Re-send including cc and mailing lists
>> > --
>> > pl330 dmac only supports 1/2/4/8/16 bytes burst size.
>> > If some bad D/D doesn't use powers of 2 width,
>> > dmaengine is going to infinite loop.
>> > You'd better check it instead of running loop.
>> >
>> It might be even better to start with max possible width and
>> keep decreasing 'i' in the loop.
> I will addressed your comment on next release.
Actually, best would be to simply do
peri->burst_sz = __ffs(slave_config->src_addr_width);
And sorry I haven't yet reviewed the patches because I have been
very busy lately. Will be more active in a few days.
More information about the linux-arm-kernel
mailing list