Messages in this thread Patch in this message | | | From | Robin Gong <> | Subject | RE: [PATCH v1 RFC 1/2] spi: introduce fallback to pio | Date | Tue, 16 Jun 2020 02:03:40 +0000 |
| |
On 2020/06/15 22:56 Mark Brown <broonie@kernel.org> wrote: > On Mon, Jun 15, 2020 at 02:53:29PM +0000, Robin Gong wrote: > > Do you mean spi-imx.c checking 'ctlr->flags' before return such error code? > > Or just like below done in spi.c. > > No, I mean passing in an additional argument which can provide richer data > than trying to smash things into the return value. Okay, how about adding this additional argument in struct spi_transfer like below? diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index 95291fe4..7c19099 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h @@ -943,6 +943,9 @@ struct spi_transfer { bool timestamped;
struct list_head transfer_list; + +#define SPI_TRANS_DMA_PREP_FAIL BIT(3) /* prepare dma failed */ + u16 flags; };
While spi core checking it as below after it set in spi-imx.c: fallback_pio: ret = ctlr->transfer_one(ctlr, msg->spi, xfer); if (ret < 0) { if (ctlr->cur_msg_mapped && (xfer->flags & SPI_TRANS_DMA_PREP_FAIL)) { __spi_unmap_msg(ctlr, msg); ctlr->fallback = true; xfer->flags &= ~SPI_TRANS_DMA_PREP_FAIL; goto fallback_pio; }
| |