On Tue, Jun 09, 2015 at 06:05:21PM +0800, Eddie Huang wrote: > --- a/drivers/spi/spi.c > +++ b/drivers/spi/spi.c > @@ -539,8 +539,8 @@ static int __spi_map_msg(struct spi_master *master, > struct spi_message *msg) > if (!master->can_dma) > return 0; > - tx_dev = master->dma_tx->device->dev; > - rx_dev = master->dma_rx->device->dev; > + tx_dev = master->dma_tx ? master->dma_tx->device->dev : > master->dev; > + rx_dev = master->dma_rx ? master->dma_rx->device->dev : master- > Is this what you want ? Actually, I don't like first one at all. Not quite what I'd been thinking of - we can't just pick the device in the core safely, the device might be a MFD or have some other restriction that needs us to use a separate struct device. However most of those cases are likely to point towards implementing a dmaengine device so probably the above will work for most cases and is fine. Can you send a proper patch please? Please don't use the ternery operator, though.
Attachment:
signature.asc
Description: Digital signature