Re: [RFC PATCH 10/13] spi: omap2-mcspi: dma_request_slave_channel() support for DT platforms

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 21, 2012 at 08:42:47AM -0700, Tony Lindgren wrote:
> * Arnd Bergmann <arnd@xxxxxxxx> [120921 02:19]:
> > On Thursday 20 September 2012, Tony Lindgren wrote:
> > > >  /* use PIO for small transfers, avoiding DMA setup/teardown overhead and
> > > > @@ -798,14 +801,26 @@ static int omap2_mcspi_request_dma(struct spi_device *spi)
> > > >       dma_cap_zero(mask);
> > > >       dma_cap_set(DMA_SLAVE, mask);
> > > >       sig = mcspi_dma->dma_rx_sync_dev;
> > > > -     mcspi_dma->dma_rx = dma_request_channel(mask, omap_dma_filter_fn, &sig);
> > > > +     if (spi->dev.of_node)
> > > > +             mcspi_dma->dma_rx =
> > > > +                     dma_request_slave_channel(&master->dev,
> > > > +                                               mcspi_dma->dma_rx_ch_name);
> > > > +     else
> > > > +             mcspi_dma->dma_rx =
> > > > +                     dma_request_channel(mask, omap_dma_filter_fn, &sig);
> > > >       if (!mcspi_dma->dma_rx) {
> > > >               dev_err(&spi->dev, "no RX DMA engine channel for McSPI\n");
> > > >               return -EAGAIN;
> > > >       }
> > > >  
> > > 
> > > Hmm this does not look nice.. We should be able to somehow not to care about
> > > the configuration at the mcspi driver level.
> > 
> > I agree, but as far as I understand Vinod's plans, we would actually move
> > all drivers over to dma_request_slave_channel() when we have an interface
> > to register the lookup tables from platform code.
> > 
> > I think the above is ok for a transitional phase and we can remove the
> > fallback path when we have converted all platforms using this driver
> > to either use DT or move to the new style way of passing the channel
> > configuration.
> 
> Can't we come up with a version of dma_request_slave_channel that works
> both ways for now:
> 
> 	mcspi_dma->dma_rx =
> 		dma_request_slave_channel_compat(mask, omap_dma_filter_fn, &sig,
> 					&master->dev, mcspi_dma->dma_rx_ch_name);
> 	...			
> 
> Then it's just question of patching away two lines later on rather than
> having to add all this if else to all the drivers first, then patching
> it away again.

I think that something like that is workable with the implementation
simply checking for of_node to do the right thing.

-Matt
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux