diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2010-12-29 02:47:29 -0500 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2010-12-29 02:47:38 -0500 |
commit | 496a2e360a34e1f41c336d23947f800216cb9bdf (patch) | |
tree | 697a68cc1da218c295072a349edfc3e3f57a7c5e /arch | |
parent | 5aa68b85951aec91d6a955d1de861325fc9a3ba1 (diff) | |
parent | 23ce17adb7fc33a4353abe4b57a03f555cced57b (diff) |
Merge branch 'for-grant' of git://arago-project.org/git/projects/linux-davinci into spi/next
* 'for-grant' of git://arago-project.org/git/projects/linux-davinci into spi/next
spi: davinci: fix checkpatch errors
spi: davinci: whitespace cleanup
spi: davinci: remove unused variable 'pdata'
spi: davinci: set chip-select mode in SPIDEF only once
spi: davinci: enable both activation and deactivation of chip-selects
spi: davinci: remove unnecessary data transmit on CS disable
spi: davinci: enable GPIO lines to be used as chip selects
spi: davinci: simplify prescalar calculation
spi: davinci: remove 'wait_enable' platform data member
spi: davinci: make chip-slect specific parameters really chip-select specific
spi: davinci: consolidate setup of SPIFMTn in one function
spi: davinci: setup chip-select timers values only if timer enabled
spi: davinci: add support for wait enable timeouts
spi: davinci: remove unused members of davinci_spi_slave
spi: davinci: eliminate the single member structure davinci_spi_slave
spi: davinci: eliminate unnecessary update of davinci_spi->count
spi: davinci: simplify calculation of edma acount value
spi: davinci: check for NULL buffer pointer before using it
spi: davinci: remove unnecessary disable of SPI
spi: davinci: remove unnecessary 'count' variable in driver private data
spi: davinci: remove unnecessary completion variable initialization
spi: davinci: remove non-useful interrupt mode support
spi: davinci: simplify poll mode transfers
spi: davinci: add support for interrupt mode
spi: davinci: configure the invariable bits in spipc0 only once
spi: davinci: remove unnecessary function davinci_spi_bufs_prep()
spi: davinci: remove unnecessary call to davinci_spi_setup_transfer()
spi: davinci: do not store DMA channel information per chip select
spi: davinci: always start transmit DMA
spi: davinci: do not use temporary buffer if no transmit data provided
spi: davinci: always start receive DMA
spi: davinci: use edma_write_slot() to setup EDMA PaRAM slot
spi: davinci: fix DMA event generation stoppage
spi: davinci: fix EDMA CC errors at end of transfers
spi: davinci: handle DMA completion errors correctly
spi: davinci: remove usage of additional completion variables for DMA
spi: davinci: let DMA operation be specified on per-device basis
spi: davinci: remove non-useful "clk_internal" platform data
spi: davinci: enable and power-up SPI only when required
spi: davinci: setup the driver owner
spi: davinci: add additional comments
spi: davinci: add EF Johnson Technologies copyright
spi: davinci: removed unused #defines
spi: davinci: remove unnecessary typecast
spi: davinci: do not treat Tx interrupt being set as error
spi: davinci: do not allocate DMA channels during SPI device setup
spi: davinci: remove unnecessary private data member 'region_size'
spi: davinci: shorten variable names
spi: davinci: kconfig: add manufacturer name to prompt string
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-davinci/dm355.c | 7 | ||||
-rw-r--r-- | arch/arm/mach-davinci/dm365.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-davinci/include/mach/spi.h | 52 |
3 files changed, 47 insertions, 18 deletions
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c index 2652af124acd..a5f8a80c1f28 100644 --- a/arch/arm/mach-davinci/dm355.c +++ b/arch/arm/mach-davinci/dm355.c | |||
@@ -412,12 +412,7 @@ static struct resource dm355_spi0_resources[] = { | |||
412 | static struct davinci_spi_platform_data dm355_spi0_pdata = { | 412 | static struct davinci_spi_platform_data dm355_spi0_pdata = { |
413 | .version = SPI_VERSION_1, | 413 | .version = SPI_VERSION_1, |
414 | .num_chipselect = 2, | 414 | .num_chipselect = 2, |
415 | .clk_internal = 1, | 415 | .cshold_bug = true, |
416 | .cs_hold = 1, | ||
417 | .intr_level = 0, | ||
418 | .poll_mode = 1, /* 0 -> interrupt mode 1-> polling mode */ | ||
419 | .c2tdelay = 0, | ||
420 | .t2cdelay = 0, | ||
421 | }; | 416 | }; |
422 | static struct platform_device dm355_spi0_device = { | 417 | static struct platform_device dm355_spi0_device = { |
423 | .name = "spi_davinci", | 418 | .name = "spi_davinci", |
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c index c466d710d3c1..02d2cc380df7 100644 --- a/arch/arm/mach-davinci/dm365.c +++ b/arch/arm/mach-davinci/dm365.c | |||
@@ -625,12 +625,6 @@ static u64 dm365_spi0_dma_mask = DMA_BIT_MASK(32); | |||
625 | static struct davinci_spi_platform_data dm365_spi0_pdata = { | 625 | static struct davinci_spi_platform_data dm365_spi0_pdata = { |
626 | .version = SPI_VERSION_1, | 626 | .version = SPI_VERSION_1, |
627 | .num_chipselect = 2, | 627 | .num_chipselect = 2, |
628 | .clk_internal = 1, | ||
629 | .cs_hold = 1, | ||
630 | .intr_level = 0, | ||
631 | .poll_mode = 1, /* 0 -> interrupt mode 1-> polling mode */ | ||
632 | .c2tdelay = 0, | ||
633 | .t2cdelay = 0, | ||
634 | }; | 628 | }; |
635 | 629 | ||
636 | static struct resource dm365_spi0_resources[] = { | 630 | static struct resource dm365_spi0_resources[] = { |
diff --git a/arch/arm/mach-davinci/include/mach/spi.h b/arch/arm/mach-davinci/include/mach/spi.h index 910efbf099c0..38f4da5ca135 100644 --- a/arch/arm/mach-davinci/include/mach/spi.h +++ b/arch/arm/mach-davinci/include/mach/spi.h | |||
@@ -19,26 +19,66 @@ | |||
19 | #ifndef __ARCH_ARM_DAVINCI_SPI_H | 19 | #ifndef __ARCH_ARM_DAVINCI_SPI_H |
20 | #define __ARCH_ARM_DAVINCI_SPI_H | 20 | #define __ARCH_ARM_DAVINCI_SPI_H |
21 | 21 | ||
22 | #define SPI_INTERN_CS 0xFF | ||
23 | |||
22 | enum { | 24 | enum { |
23 | SPI_VERSION_1, /* For DM355/DM365/DM6467 */ | 25 | SPI_VERSION_1, /* For DM355/DM365/DM6467 */ |
24 | SPI_VERSION_2, /* For DA8xx */ | 26 | SPI_VERSION_2, /* For DA8xx */ |
25 | }; | 27 | }; |
26 | 28 | ||
29 | /** | ||
30 | * davinci_spi_platform_data - Platform data for SPI master device on DaVinci | ||
31 | * | ||
32 | * @version: version of the SPI IP. Different DaVinci devices have slightly | ||
33 | * varying versions of the same IP. | ||
34 | * @num_chipselect: number of chipselects supported by this SPI master | ||
35 | * @intr_line: interrupt line used to connect the SPI IP to the ARM interrupt | ||
36 | * controller withn the SoC. Possible values are 0 and 1. | ||
37 | * @chip_sel: list of GPIOs which can act as chip-selects for the SPI. | ||
38 | * SPI_INTERN_CS denotes internal SPI chip-select. Not necessary | ||
39 | * to populate if all chip-selects are internal. | ||
40 | * @cshold_bug: set this to true if the SPI controller on your chip requires | ||
41 | * a write to CSHOLD bit in between transfers (like in DM355). | ||
42 | */ | ||
27 | struct davinci_spi_platform_data { | 43 | struct davinci_spi_platform_data { |
28 | u8 version; | 44 | u8 version; |
29 | u8 num_chipselect; | 45 | u8 num_chipselect; |
46 | u8 intr_line; | ||
47 | u8 *chip_sel; | ||
48 | bool cshold_bug; | ||
49 | }; | ||
50 | |||
51 | /** | ||
52 | * davinci_spi_config - Per-chip-select configuration for SPI slave devices | ||
53 | * | ||
54 | * @wdelay: amount of delay between transmissions. Measured in number of | ||
55 | * SPI module clocks. | ||
56 | * @odd_parity: polarity of parity flag at the end of transmit data stream. | ||
57 | * 0 - odd parity, 1 - even parity. | ||
58 | * @parity_enable: enable transmission of parity at end of each transmit | ||
59 | * data stream. | ||
60 | * @io_type: type of IO transfer. Choose between polled, interrupt and DMA. | ||
61 | * @timer_disable: disable chip-select timers (setup and hold) | ||
62 | * @c2tdelay: chip-select setup time. Measured in number of SPI module clocks. | ||
63 | * @t2cdelay: chip-select hold time. Measured in number of SPI module clocks. | ||
64 | * @t2edelay: transmit data finished to SPI ENAn pin inactive time. Measured | ||
65 | * in number of SPI clocks. | ||
66 | * @c2edelay: chip-select active to SPI ENAn signal active time. Measured in | ||
67 | * number of SPI clocks. | ||
68 | */ | ||
69 | struct davinci_spi_config { | ||
30 | u8 wdelay; | 70 | u8 wdelay; |
31 | u8 odd_parity; | 71 | u8 odd_parity; |
32 | u8 parity_enable; | 72 | u8 parity_enable; |
33 | u8 wait_enable; | 73 | #define SPI_IO_TYPE_INTR 0 |
74 | #define SPI_IO_TYPE_POLL 1 | ||
75 | #define SPI_IO_TYPE_DMA 2 | ||
76 | u8 io_type; | ||
34 | u8 timer_disable; | 77 | u8 timer_disable; |
35 | u8 clk_internal; | ||
36 | u8 cs_hold; | ||
37 | u8 intr_level; | ||
38 | u8 poll_mode; | ||
39 | u8 use_dma; | ||
40 | u8 c2tdelay; | 78 | u8 c2tdelay; |
41 | u8 t2cdelay; | 79 | u8 t2cdelay; |
80 | u8 t2edelay; | ||
81 | u8 c2edelay; | ||
42 | }; | 82 | }; |
43 | 83 | ||
44 | #endif /* __ARCH_ARM_DAVINCI_SPI_H */ | 84 | #endif /* __ARCH_ARM_DAVINCI_SPI_H */ |