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
