Hi Mike,

On Mon, Oct 11, 2010 at 23:39:35, Michael Williamson wrote:

> >
> > Hmm, looks like the Tx and Rx DMA must always run for the same duration. I 
> > was
> > under the impression Tx is required to keep the clock running, and so must 
> > always
> > run for the length of transfer requested, but Rx DMA can finish earlier.
> >
>
> That may be true.  The scenario I was seeing was a requested Tx length of 1 
> with no
> Rx buffer supplied.  The length of the internal buffer was bigger than 1, so 
> the resulting
> Rx DMA size in the a_b_cnt was greater than the Tx size, and it stalled.
>
> > I guess replacing the line:
> >
> >                 param.a_b_cnt = rx_buf_count << 16 | data_type;
> >
> > with
> >
> >                 param.a_b_cnt = davinci_spi->rcount << 16 | data_type;
> >
> > will also fix the issue?
> >
>
> A better fix.  should be fine.

I tested this on DA830 and DA850 EVMs with SPI nor flash - it works fine.
I added your Tested-By to the DMA patches as well. Thanks for the testing
and bug fixing.

Updated set of patches pushed to my branch[1]. Testing on DM* platforms
is the next task.

Thanks,
Sekhar

[1] 
http://arago-project.org/git/projects/?p=linux-davinci.git;a=shortlog;h=refs/heads/davinci-spi-rewrite

_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to