1 /* define spi-uart debug constrains */
2 /* code for MRST early printk */
3 #ifndef _SPI_UART
4 #define _SPI_UART
5 
6 #include "types.h"
7 
8 #define MRST_REGBASE_SPI0	0xff128000
9 #define MRST_REGBASE_SPI1	0xff128400
10 #define MRST_REGBASE_SPI2	0xff128800
11 
12 #define CTP_REGBASE_SPI0	0xff128000
13 #define CTP_REGBASE_SPI1	0xff135000
14 #define CTP_REGBASE_SPI2	0xff136000
15 
16 /* HW info for MRST CLk Control Unit, one 32b reg */
17 #define MRST_SPI_CLK_BASE	100000000	/* 100m */
18 #define MRST_CLK_SPI0_REG	0xff11d86c
19 #define CLK_SPI_BDIV_OFFSET	0
20 #define CLK_SPI_BDIV_MASK	0x00000007
21 #define CLK_SPI_CDIV_OFFSET	9
22 #define CLK_SPI_CDIV_MASK	0x00000e00
23 #define CLK_SPI_CDIV_100M	0x0
24 #define CLK_SPI_CDIV_50M	0x1
25 #define CLK_SPI_CDIV_33M	0x2
26 #define CLK_SPI_CDIV_25M	0x3
27 #define CLK_SPI_DISABLE_OFFSET	8
28 
29 struct mrst_spi_reg {
30 	vu32 ctrlr0;	/* control reg 0 */
31 	vu32 ctrlr1;	/* control reg 1 */
32 	vu32 ssienr;	/* SSI enable reg */
33 	vu32 mwcr;	/* Microwire control reg */
34 
35 	vu32 ser;	/* slave enable reg */
36 	vu32 baudr;
37 	vu32 txftlr;
38 	vu32 rxftlr;
39 
40 	vu32 txflr;
41 	vu32 rxflr;
42 	vu32 sr;
43 	vu32 imr;
44 
45 	vu32 isr;
46 	vu32 risr;
47 	vu32 txoicr;
48 	vu32 rxoicr;
49 
50 	vu32 rxuicr;
51 	vu32 msticr;
52 	vu32 icr;
53 	vu32 dmacr;
54 
55 	vu32 dmatdlr;
56 	vu32 dmardlr;
57 	vu32 idr;
58 	vu32 ssi_comp_version;
59 
60 	vu32 dr[16];	/* 16 bits access for each 32bit space */
61 };
62 
63 /* bit fields in CTRLR0 */
64 #define SPI_DFS_OFFSET			0
65 #define SPI_FRF_OFFSET			4
66 #define FRF_SPI				0x0
67 #define FRF_SSP				0x1
68 #define FRF_MICROWIRE			0x2
69 #define FRF_RESV			0x3
70 #define SPI_SCPH_OFFSET			6
71 #define SPI_SCOL_OFFSET			7
72 #define SPI_TMOD_OFFSET			8
73 #define	TMOD_TR				0x0		/* xmit & recv */
74 #define	TMOD_TO				0x1		/* xmit only */
75 #define	TMOD_RO				0x2		/* recv only */
76 #define	TMOD_EPROMREAD			0x3		/* eeprom read mode */
77 
78 #define SPI_SLVOE_OFFSET		10
79 #define SPI_SRL_OFFSET			11
80 #define SPI_CFS_OFFSET			12
81 
82 /* bit fields in SR, 7 bits */
83 #define SR_MASK				0x7f		/* cover 7 bits */
84 #define SR_BUSY				(1 << 0)
85 #define SR_TF_NOT_FULL			(1 << 1)
86 #define SR_TF_EMPT			(1 << 2)
87 #define SR_RF_NOT_EMPT			(1 << 3)
88 #define SR_RF_FULL			(1 << 4)
89 #define SR_TX_ERR			(1 << 5)
90 #define SR_DCOL				(1 << 6)
91 
92 /* bit fields in ISR, IMR, RISR, 7 bits */
93 #define SPI_INT_TXEI			(1 << 0)
94 #define SPI_INT_TXOI			(1 << 1)
95 #define SPI_INT_RXUI			(1 << 2)
96 #define SPI_INT_RXOI			(1 << 3)
97 #define SPI_INT_RXFI			(1 << 4)
98 #define SPI_INT_MSTI			(1 << 5)
99 
100 extern void bs_spi_printk(const char *str);
101 
102 #endif
103