[PATCH v2] davinci: spi: move event queue parameter to platform data
Grant Likely
grant.likely at secretlab.ca
Tue Feb 8 17:04:46 EST 2011
On Tue, Feb 8, 2011 at 2:58 PM, Kevin Hilman <khilman at ti.com> wrote:
> Michael Williamson <michael.williamson at criticallink.com> writes:
>
>> For DMA operation, the davinci spi driver needs an event queue number.
>> Currently, this number is passed as a IORESOURCE_DMA. This is not
>> correct, as the event queue is not a DMA channel. Pass the event queue
>> via the platform data structure instead.
>>
>> On dm355 and dm365, move the eventq assignment for spi0 out of resources
>> array and into platform data.
>>
>> Signed-off-by: Michael Williamson <michael.williamson at criticallink.com>
>> Acked-by: Sekhar Nori <nsekhar at ti.com>
>
> With Grant's ack, will merge this through davinci tree.
Acked-by: Grant Likely <grant.likely at secretlab.ca>
>
> Kevin
>
>> ---
>> Changes since v1:
>> - Add Sekhar's Ack.
>> - Really fix the typo. This time for sure (blew the format patch
>> on last go around).
>>
>> arch/arm/mach-davinci/dm355.c | 5 +----
>> arch/arm/mach-davinci/dm365.c | 5 +----
>> arch/arm/mach-davinci/include/mach/spi.h | 15 ++++++++++-----
>> drivers/spi/davinci_spi.c | 11 +++--------
>> 4 files changed, 15 insertions(+), 21 deletions(-)
>>
>> diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
>> index a5f8a80..76364d1 100644
>> --- a/arch/arm/mach-davinci/dm355.c
>> +++ b/arch/arm/mach-davinci/dm355.c
>> @@ -403,16 +403,13 @@ static struct resource dm355_spi0_resources[] = {
>> .start = 16,
>> .flags = IORESOURCE_DMA,
>> },
>> - {
>> - .start = EVENTQ_1,
>> - .flags = IORESOURCE_DMA,
>> - },
>> };
>>
>> static struct davinci_spi_platform_data dm355_spi0_pdata = {
>> .version = SPI_VERSION_1,
>> .num_chipselect = 2,
>> .cshold_bug = true,
>> + .dma_event_q = EVENTQ_1,
>> };
>> static struct platform_device dm355_spi0_device = {
>> .name = "spi_davinci",
>> diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
>> index 02d2cc3..4604e72 100644
>> --- a/arch/arm/mach-davinci/dm365.c
>> +++ b/arch/arm/mach-davinci/dm365.c
>> @@ -625,6 +625,7 @@ static u64 dm365_spi0_dma_mask = DMA_BIT_MASK(32);
>> static struct davinci_spi_platform_data dm365_spi0_pdata = {
>> .version = SPI_VERSION_1,
>> .num_chipselect = 2,
>> + .dma_event_q = EVENTQ_3,
>> };
>>
>> static struct resource dm365_spi0_resources[] = {
>> @@ -645,10 +646,6 @@ static struct resource dm365_spi0_resources[] = {
>> .start = 16,
>> .flags = IORESOURCE_DMA,
>> },
>> - {
>> - .start = EVENTQ_3,
>> - .flags = IORESOURCE_DMA,
>> - },
>> };
>>
>> static struct platform_device dm365_spi0_device = {
>> diff --git a/arch/arm/mach-davinci/include/mach/spi.h b/arch/arm/mach-davinci/include/mach/spi.h
>> index 38f4da5..7af305b 100644
>> --- a/arch/arm/mach-davinci/include/mach/spi.h
>> +++ b/arch/arm/mach-davinci/include/mach/spi.h
>> @@ -19,6 +19,8 @@
>> #ifndef __ARCH_ARM_DAVINCI_SPI_H
>> #define __ARCH_ARM_DAVINCI_SPI_H
>>
>> +#include <mach/edma.h>
>> +
>> #define SPI_INTERN_CS 0xFF
>>
>> enum {
>> @@ -39,13 +41,16 @@ enum {
>> * to populate if all chip-selects are internal.
>> * @cshold_bug: set this to true if the SPI controller on your chip requires
>> * a write to CSHOLD bit in between transfers (like in DM355).
>> + * @dma_event_q: DMA event queue to use if SPI_IO_TYPE_DMA is used for any
>> + * device on the bus.
>> */
>> struct davinci_spi_platform_data {
>> - u8 version;
>> - u8 num_chipselect;
>> - u8 intr_line;
>> - u8 *chip_sel;
>> - bool cshold_bug;
>> + u8 version;
>> + u8 num_chipselect;
>> + u8 intr_line;
>> + u8 *chip_sel;
>> + bool cshold_bug;
>> + enum dma_event_q dma_event_q;
>> };
>>
>> /**
>> diff --git a/drivers/spi/davinci_spi.c b/drivers/spi/davinci_spi.c
>> index 6beab99..166a879 100644
>> --- a/drivers/spi/davinci_spi.c
>> +++ b/drivers/spi/davinci_spi.c
>> @@ -790,7 +790,6 @@ static int davinci_spi_probe(struct platform_device *pdev)
>> struct resource *r, *mem;
>> resource_size_t dma_rx_chan = SPI_NO_RESOURCE;
>> resource_size_t dma_tx_chan = SPI_NO_RESOURCE;
>> - resource_size_t dma_eventq = SPI_NO_RESOURCE;
>> int i = 0, ret = 0;
>> u32 spipc0;
>>
>> @@ -878,17 +877,13 @@ static int davinci_spi_probe(struct platform_device *pdev)
>> r = platform_get_resource(pdev, IORESOURCE_DMA, 1);
>> if (r)
>> dma_tx_chan = r->start;
>> - r = platform_get_resource(pdev, IORESOURCE_DMA, 2);
>> - if (r)
>> - dma_eventq = r->start;
>>
>> dspi->bitbang.txrx_bufs = davinci_spi_bufs;
>> if (dma_rx_chan != SPI_NO_RESOURCE &&
>> - dma_tx_chan != SPI_NO_RESOURCE &&
>> - dma_eventq != SPI_NO_RESOURCE) {
>> + dma_tx_chan != SPI_NO_RESOURCE) {
>> dspi->dma.rx_channel = dma_rx_chan;
>> dspi->dma.tx_channel = dma_tx_chan;
>> - dspi->dma.eventq = dma_eventq;
>> + dspi->dma.eventq = pdata->dma_event_q;
>>
>> ret = davinci_spi_request_dma(dspi);
>> if (ret)
>> @@ -897,7 +892,7 @@ static int davinci_spi_probe(struct platform_device *pdev)
>> dev_info(&pdev->dev, "DMA: supported\n");
>> dev_info(&pdev->dev, "DMA: RX channel: %d, TX channel: %d, "
>> "event queue: %d\n", dma_rx_chan, dma_tx_chan,
>> - dma_eventq);
>> + pdata->dma_event_q);
>> }
>>
>> dspi->get_rx = davinci_spi_rx_buf_u8;
>
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
More information about the linux-arm-kernel
mailing list