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 <
[email protected]
>
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 <
[email protected]
>
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