On Tue, Jul 5, 2011 at 12:03 PM, Chanho Park <parkch98@xxxxxxxxx> 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. ��.n��������+%������w��{.n�����{��Ʀ����)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥