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
spi
spi_bitbang.h
Go to the documentation of this file.
1
#ifndef __SPI_BITBANG_H
2
#define __SPI_BITBANG_H
3
4
#include <
linux/workqueue.h
>
5
6
struct
spi_bitbang
{
7
struct
workqueue_struct
*
workqueue
;
8
struct
work_struct
work
;
9
10
spinlock_t
lock
;
11
struct
list_head
queue
;
12
u8
busy
;
13
u8
use_dma
;
14
u8
flags
;
/* extra spi->mode support */
15
16
struct
spi_master
*
master
;
17
18
/* setup_transfer() changes clock and/or wordsize to match settings
19
* for this transfer; zeroes restore defaults from spi_device.
20
*/
21
int
(*
setup_transfer
)(
struct
spi_device
*
spi
,
22
struct
spi_transfer
*
t
);
23
24
void
(*
chipselect
)(
struct
spi_device
*
spi
,
int
is_on);
25
#define BITBANG_CS_ACTIVE 1
/* normally nCS, active low */
26
#define BITBANG_CS_INACTIVE 0
27
28
/* txrx_bufs() may handle dma mapping for transfers that don't
29
* already have one (transfer.{tx,rx}_dma is zero), or use PIO
30
*/
31
int
(*
txrx_bufs
)(
struct
spi_device
*
spi
,
struct
spi_transfer
*
t
);
32
33
/* txrx_word[SPI_MODE_*]() just looks like a shift register */
34
u32
(*
txrx_word
[4])(
struct
spi_device
*
spi
,
35
unsigned
nsecs
,
36
u32
word
,
u8
bits
);
37
};
38
39
/* you can call these default bitbang->master methods from your custom
40
* methods, if you like.
41
*/
42
extern
int
spi_bitbang_setup
(
struct
spi_device
*
spi
);
43
extern
void
spi_bitbang_cleanup
(
struct
spi_device
*
spi
);
44
extern
int
spi_bitbang_transfer
(
struct
spi_device
*
spi
,
struct
spi_message
*
m
);
45
extern
int
spi_bitbang_setup_transfer
(
struct
spi_device
*
spi
,
46
struct
spi_transfer
*
t
);
47
48
/* start or stop queue processing */
49
extern
int
spi_bitbang_start
(
struct
spi_bitbang
*
spi
);
50
extern
int
spi_bitbang_stop
(
struct
spi_bitbang
*
spi
);
51
52
#endif
/* __SPI_BITBANG_H */
Generated on Thu Jan 10 2013 14:52:37 for Linux Kernel by
1.8.2