Merge tag 'xtensa-20210902' of git://github.com/jcmvbkbc/linux-xtensa
[linux-2.6-microblaze.git] / include / linux / platform_data / spi-davinci.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copyright 2009 Texas Instruments.
4  */
5
6 #ifndef __ARCH_ARM_DAVINCI_SPI_H
7 #define __ARCH_ARM_DAVINCI_SPI_H
8
9 #include <linux/platform_data/edma.h>
10
11 #define SPI_INTERN_CS   0xFF
12
13 enum {
14         SPI_VERSION_1, /* For DM355/DM365/DM6467 */
15         SPI_VERSION_2, /* For DA8xx */
16 };
17
18 /**
19  * davinci_spi_platform_data - Platform data for SPI master device on DaVinci
20  *
21  * @version:    version of the SPI IP. Different DaVinci devices have slightly
22  *              varying versions of the same IP.
23  * @num_chipselect: number of chipselects supported by this SPI master
24  * @intr_line:  interrupt line used to connect the SPI IP to the ARM interrupt
25  *              controller withn the SoC. Possible values are 0 and 1.
26  * @cshold_bug: set this to true if the SPI controller on your chip requires
27  *              a write to CSHOLD bit in between transfers (like in DM355).
28  * @dma_event_q: DMA event queue to use if SPI_IO_TYPE_DMA is used for any
29  *              device on the bus.
30  */
31 struct davinci_spi_platform_data {
32         u8                      version;
33         u8                      num_chipselect;
34         u8                      intr_line;
35         u8                      prescaler_limit;
36         bool                    cshold_bug;
37         enum dma_event_q        dma_event_q;
38 };
39
40 /**
41  * davinci_spi_config - Per-chip-select configuration for SPI slave devices
42  *
43  * @wdelay:     amount of delay between transmissions. Measured in number of
44  *              SPI module clocks.
45  * @odd_parity: polarity of parity flag at the end of transmit data stream.
46  *              0 - odd parity, 1 - even parity.
47  * @parity_enable: enable transmission of parity at end of each transmit
48  *              data stream.
49  * @io_type:    type of IO transfer. Choose between polled, interrupt and DMA.
50  * @timer_disable: disable chip-select timers (setup and hold)
51  * @c2tdelay:   chip-select setup time. Measured in number of SPI module clocks.
52  * @t2cdelay:   chip-select hold time. Measured in number of SPI module clocks.
53  * @t2edelay:   transmit data finished to SPI ENAn pin inactive time. Measured
54  *              in number of SPI clocks.
55  * @c2edelay:   chip-select active to SPI ENAn signal active time. Measured in
56  *              number of SPI clocks.
57  */
58 struct davinci_spi_config {
59         u8      wdelay;
60         u8      odd_parity;
61         u8      parity_enable;
62 #define SPI_IO_TYPE_INTR        0
63 #define SPI_IO_TYPE_POLL        1
64 #define SPI_IO_TYPE_DMA         2
65         u8      io_type;
66         u8      timer_disable;
67         u8      c2tdelay;
68         u8      t2cdelay;
69         u8      t2edelay;
70         u8      c2edelay;
71 };
72
73 #endif  /* __ARCH_ARM_DAVINCI_SPI_H */