aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/phone_svn/ipc_spi/spi_main.h
blob: b15465a1b858828b0208d30d5f5b4a2cf3342419 (plain)
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
74
75
76
77
78
79
80
#ifndef __SPI_MAIN_H__
#define __SPI_MAIN_H__

#define SPI_FEATURE_S5PC210
#define SPI_FEATURE_MASTER

#define SPI_FEATURE_NOLOG
/* #define SPI_FEATURE_DEBUG */
#define SPI_GUARANTEE_MRDY_GAP

/*
#define SPI_FEATURE_TEST_SCENARIO		SPI_TEST_SCENARIO_MASTER_SENDING
#define SPI_FEATURE_TEST_SCENARIO		SPI_TEST_SCENARIO_SLAVE_SENDING
#define SPI_FEATURE_TEST_SCENARIO		SPI_TEST_SCENARIO_PHYSICAL
#define SPI_FEATURE_TEST_SCENARIO		SPI_TEST_SCENARIO_NONE
#define SPI_FEATURE_TEST_DURATION		1000
*/

#define SPI_SLAVE_TX 0
#define SPI_SLAVE_RX 0
#define SPI_MASTER_TX 0
#define SPI_MASTER_RX 0

#include "spi_os.h"

enum SPI_MAIN_MSG_T {
	SPI_MAIN_MSG_BASE,
	SPI_MAIN_MSG_SEND,
	SPI_MAIN_MSG_RECEIVE,
	SPI_MAIN_MSG_PACKET_SEND,
	SPI_MAIN_MSG_PACKET_RECEIVE,
	SPI_MAIN_MSG_IPC_SEND,	/* IPC sends message to SPI */
	SPI_MAIN_MSG_RAW_SEND,	/* RAW sends message to SPI */
	SPI_MAIN_MSG_RFS_SEND		/* RFS sends message to SPI */
};

enum SPI_MAIN_STATE_T {
	SPI_MAIN_STATE_START,		/* before init complete */
	SPI_MAIN_STATE_INIT,		/* initialising */
	SPI_MAIN_STATE_IDLE,		/* suspend. Waiting for event */

	/* state to start tx. Become from idle */
	SPI_MAIN_STATE_TX_START,
	SPI_MAIN_STATE_TX_CONFIRM,

	/* (in case of master) */
	/* wait srdy rising interrupt to check slave preparing */
	/* (in case of slave) */
	/* wait submrdy rising interrupt to check sync complete */
	SPI_MAIN_STATE_TX_WAIT,
	SPI_MAIN_STATE_TX_SENDING,	/* tx data sending  */
	SPI_MAIN_STATE_TX_TERMINATE,
	SPI_MAIN_STATE_TX_MORE,

	/* in case of slave, wait submrdy rising interrupt to */
	SPI_MAIN_STATE_RX_WAIT,

	/* check sync complete then it starts to read buffer */
	SPI_MAIN_STATE_RX_MORE,
	SPI_MAIN_STATE_RX_TERMINATE,
	SPI_MAIN_STATE_END			/* spi task is stopped */
};

extern struct workqueue_struct *ipc_spi_wq;
extern int send_modem_spi;
extern int boot_done;
extern struct semaphore srdy_sem;


extern enum SPI_MAIN_STATE_T spi_main_state;

extern void spi_main(unsigned long argc, void *argv);
extern void spi_main_init(void *data);
extern void spi_main_send_signal(enum SPI_MAIN_MSG_T  spi_sigs);
extern void spi_main_send_signalfront(enum SPI_MAIN_MSG_T  spi_sigs);
extern void spi_set_restart(void);
extern int get_console_suspended(void);

#endif