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