Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
amba
pl022.h
Go to the documentation of this file.
1
/*
2
* include/linux/amba/pl022.h
3
*
4
* Copyright (C) 2008-2009 ST-Ericsson AB
5
* Copyright (C) 2006 STMicroelectronics Pvt. Ltd.
6
*
7
* Author: Linus Walleij <linus.walleij@stericsson.com>
8
*
9
* Initial version inspired by:
10
* linux-2.6.17-rc3-mm1/drivers/spi/pxa2xx_spi.c
11
* Initial adoption to PL022 by:
12
* Sachin Verma <sachin.verma@st.com>
13
*
14
* This program is free software; you can redistribute it and/or modify
15
* it under the terms of the GNU General Public License as published by
16
* the Free Software Foundation; either version 2 of the License, or
17
* (at your option) any later version.
18
*
19
* This program is distributed in the hope that it will be useful,
20
* but WITHOUT ANY WARRANTY; without even the implied warranty of
21
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
* GNU General Public License for more details.
23
*/
24
25
#ifndef _SSP_PL022_H
26
#define _SSP_PL022_H
27
28
#include <linux/types.h>
29
33
enum
ssp_loopback
{
34
LOOPBACK_DISABLED
,
35
LOOPBACK_ENABLED
36
};
37
48
enum
ssp_interface
{
49
SSP_INTERFACE_MOTOROLA_SPI
,
50
SSP_INTERFACE_TI_SYNC_SERIAL
,
51
SSP_INTERFACE_NATIONAL_MICROWIRE
,
52
SSP_INTERFACE_UNIDIRECTIONAL
53
};
54
58
enum
ssp_hierarchy
{
59
SSP_MASTER
,
60
SSP_SLAVE
61
};
62
67
struct
ssp_clock_params
{
68
u8
cpsdvsr
;
/* value from 2 to 254 (even only!) */
69
u8
scr
;
/* value from 0 to 255 */
70
};
71
76
enum
ssp_rx_endian
{
77
SSP_RX_MSB
,
78
SSP_RX_LSB
79
};
80
84
enum
ssp_tx_endian
{
85
SSP_TX_MSB
,
86
SSP_TX_LSB
87
};
88
92
enum
ssp_data_size
{
93
SSP_DATA_BITS_4
= 0x03,
SSP_DATA_BITS_5
,
SSP_DATA_BITS_6
,
94
SSP_DATA_BITS_7
,
SSP_DATA_BITS_8
,
SSP_DATA_BITS_9
,
95
SSP_DATA_BITS_10
,
SSP_DATA_BITS_11
,
SSP_DATA_BITS_12
,
96
SSP_DATA_BITS_13
,
SSP_DATA_BITS_14
,
SSP_DATA_BITS_15
,
97
SSP_DATA_BITS_16
,
SSP_DATA_BITS_17
,
SSP_DATA_BITS_18
,
98
SSP_DATA_BITS_19
,
SSP_DATA_BITS_20
,
SSP_DATA_BITS_21
,
99
SSP_DATA_BITS_22
,
SSP_DATA_BITS_23
,
SSP_DATA_BITS_24
,
100
SSP_DATA_BITS_25
,
SSP_DATA_BITS_26
,
SSP_DATA_BITS_27
,
101
SSP_DATA_BITS_28
,
SSP_DATA_BITS_29
,
SSP_DATA_BITS_30
,
102
SSP_DATA_BITS_31
,
SSP_DATA_BITS_32
103
};
104
108
enum
ssp_mode
{
109
INTERRUPT_TRANSFER
,
110
POLLING_TRANSFER
,
111
DMA_TRANSFER
112
};
113
118
enum
ssp_rx_level_trig
{
119
SSP_RX_1_OR_MORE_ELEM
,
120
SSP_RX_4_OR_MORE_ELEM
,
121
SSP_RX_8_OR_MORE_ELEM
,
122
SSP_RX_16_OR_MORE_ELEM
,
123
SSP_RX_32_OR_MORE_ELEM
124
};
125
130
enum
ssp_tx_level_trig
{
131
SSP_TX_1_OR_MORE_EMPTY_LOC
,
132
SSP_TX_4_OR_MORE_EMPTY_LOC
,
133
SSP_TX_8_OR_MORE_EMPTY_LOC
,
134
SSP_TX_16_OR_MORE_EMPTY_LOC
,
135
SSP_TX_32_OR_MORE_EMPTY_LOC
136
};
137
143
enum
ssp_spi_clk_phase
{
144
SSP_CLK_FIRST_EDGE
,
145
SSP_CLK_SECOND_EDGE
146
};
147
153
enum
ssp_spi_clk_pol
{
154
SSP_CLK_POL_IDLE_LOW
,
155
SSP_CLK_POL_IDLE_HIGH
156
};
157
161
enum
ssp_microwire_ctrl_len
{
162
SSP_BITS_4
= 0x03,
SSP_BITS_5
,
SSP_BITS_6
,
163
SSP_BITS_7
,
SSP_BITS_8
,
SSP_BITS_9
,
164
SSP_BITS_10
,
SSP_BITS_11
,
SSP_BITS_12
,
165
SSP_BITS_13
,
SSP_BITS_14
,
SSP_BITS_15
,
166
SSP_BITS_16
,
SSP_BITS_17
,
SSP_BITS_18
,
167
SSP_BITS_19
,
SSP_BITS_20
,
SSP_BITS_21
,
168
SSP_BITS_22
,
SSP_BITS_23
,
SSP_BITS_24
,
169
SSP_BITS_25
,
SSP_BITS_26
,
SSP_BITS_27
,
170
SSP_BITS_28
,
SSP_BITS_29
,
SSP_BITS_30
,
171
SSP_BITS_31
,
SSP_BITS_32
172
};
173
179
enum
ssp_microwire_wait_state
{
180
SSP_MWIRE_WAIT_ZERO
,
181
SSP_MWIRE_WAIT_ONE
182
};
183
192
enum
ssp_duplex
{
193
SSP_MICROWIRE_CHANNEL_FULL_DUPLEX
,
194
SSP_MICROWIRE_CHANNEL_HALF_DUPLEX
195
};
196
211
enum
ssp_clkdelay
{
212
SSP_FEEDBACK_CLK_DELAY_NONE
,
213
SSP_FEEDBACK_CLK_DELAY_1T
,
214
SSP_FEEDBACK_CLK_DELAY_2T
,
215
SSP_FEEDBACK_CLK_DELAY_3T
,
216
SSP_FEEDBACK_CLK_DELAY_4T
,
217
SSP_FEEDBACK_CLK_DELAY_5T
,
218
SSP_FEEDBACK_CLK_DELAY_6T
,
219
SSP_FEEDBACK_CLK_DELAY_7T
220
};
221
225
enum
ssp_chip_select
{
226
SSP_CHIP_SELECT
,
227
SSP_CHIP_DESELECT
228
};
229
230
231
struct
dma_chan
;
249
struct
pl022_ssp_controller
{
250
u16
bus_id
;
251
u8
num_chipselect
;
252
u8
enable_dma
:1;
253
bool
(*
dma_filter
)(
struct
dma_chan
*
chan
,
void
*filter_param);
254
void
*
dma_rx_param
;
255
void
*
dma_tx_param
;
256
int
autosuspend_delay
;
257
bool
rt
;
258
int
*
chipselects
;
259
};
260
280
struct
pl022_config_chip
{
281
enum
ssp_interface
iface
;
282
enum
ssp_hierarchy
hierarchy
;
283
bool
slave_tx_disable
;
284
struct
ssp_clock_params
clk_freq
;
285
enum
ssp_mode
com_mode
;
286
enum
ssp_rx_level_trig
rx_lev_trig
;
287
enum
ssp_tx_level_trig
tx_lev_trig
;
288
enum
ssp_microwire_ctrl_len
ctrl_len
;
289
enum
ssp_microwire_wait_state
wait_state
;
290
enum
ssp_duplex
duplex
;
291
enum
ssp_clkdelay
clkdelay
;
292
void
(*
cs_control
) (
u32
control
);
293
};
294
295
#endif
/* _SSP_PL022_H */
Generated on Thu Jan 10 2013 14:51:01 for Linux Kernel by
1.8.2