davinci: spi: move event queue parameter to platform data
Subsystems (4)
PATCH v2 1/1 davinci: spi: move event queue parameter to platform data
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.
---
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(-)
arch/arm/mach-davinci/dm355.c +1 -4
@@ -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",
arch/arm/mach-davinci/dm365.c +1 -4
@@ -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 = {
arch/arm/mach-davinci/include/mach/spi.h +10 -5
@@ -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; };/**
drivers/spi/davinci_spi.c +3 -8
@@ -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;
Signature · 1 line
1.7.0.4
PATCH v2 1/1 davinci: spi: move event queue parameter to platform data
Quoted 10 lines · Michael Williamson
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 <[email protected]>Acked-by Sekhar Nori <[email protected]>
With Grant's ack, will merge this through davinci tree.
Kevin
Quoted 133 lines
---
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(-)arch/arm/mach-davinci/dm355.c +1
-4@@ -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",arch/arm/mach-davinci/dm365.c +1
-4@@ -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 = {arch/arm/mach-davinci/include/mach/spi.h +10
-5@@ -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; };/** drivers/spi/davinci_spi.c +3
-8@@ -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;
PATCH v2 1/1 davinci: spi: move event queue parameter to platform data
Quoted 7 lines · Kevin Hilman
Quoted 5 lines · Michael Williamson
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.
Quoted 7 lines
Quoted 5 lines
On dm355 and dm365, move the eventq assignment for spi0 out of resources array and into platform data.
Signed-off-by Michael Williamson <[email protected]>Acked-by Sekhar Nori <[email protected]>With Grant's ack, will merge this through davinci tree.
Quoted 137 lines
Kevin
Quoted 133 lines
---
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(-)
arch/arm/mach-davinci/dm355.c +1
-4@@ -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",arch/arm/mach-davinci/dm365.c +1
-4@@ -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 = {arch/arm/mach-davinci/include/mach/spi.h +0
-0@@ -19,6 +19,8 @@?#ifndef
__ARCH_ARM_DAVINCI_SPI_H
?#define__ARCH_ARM_DAVINCI_SPI_Harch/arm/mach-davinci/include/mach/spi.h +2
-0+#include <mach/edma.h> +?#define
SPI_INTERN_CS? ? ? ?0xFF?enum {
arch/arm/mach-davinci/include/mach/spi.h +0
-0@@ -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 ifSPI_IO_TYPE_DMAis used for any
+ * ? ? ? ? ? device on the bus.
? */
?structdavinci_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;
+ ? ? enumdma_event_q? ? ? ?dma_event_q;
?};?/**
drivers/spi/davinci_spi.c +0
-4@@ -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)drivers/spi/davinci_spi.c +0
-0@@ -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;
Signature · 2 lines
Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd.