[PATCH 2/5] spi/mxs: Fix chip select control bits in DMA mode
Marek Vasut
marex at denx.de
Mon Apr 1 19:30:51 EDT 2013
Dear Trent Piepho,
> On Mon, Apr 1, 2013 at 4:13 PM, Marek Vasut <marex at denx.de> wrote:
> >> Change the code to set the CS bits in the message transfer function
> >> once. Now the DMA and PIO txrx functions don't need to care about CS
> >> at all.
> >
> > Ok, lemme ask this one more time -- will the DMA work with long transfers
> > where the CTRL0 will be overwritten on each turn? Did you actually test
> > this?
>
> I don't have SPI flash, so I can't test SPI flash. I can test other
> spi devices and by capturing the pins with a logic analyzer. It does
> work after the patch, and does not work before the patch. The error
> should be obvious from looking at the code.
>
> ctrl0 is not overwritten, from scratch, each on transfer. The ctrl0
> value in the PIO part of the DMA is based on the current value of
> ctrl0 with additional bits ORed in. The flaw here is that bits that
> should not be set are not masked out.
>
> >> -static uint32_t mxs_spi_cs_to_reg(unsigned cs)
> >> +static u32 mxs_spi_cs_to_reg(unsigned cs)
> >>
> >> {
> >>
> >> - uint32_t select = 0;
> >> + u32 select = 0;
>
> I'll make it a separate patch.
This is completely irrelevant change, please just submit the relevant patches.
Best regards,
Marek Vasut
More information about the linux-arm-kernel
mailing list