xref: /openbmc/u-boot/drivers/spi/sh_spi.h (revision ee7bb5be)
1 /*
2  * SH SPI driver
3  *
4  * Copyright (C) 2011 Renesas Solutions Corp.
5  *
6  * SPDX-License-Identifier:	GPL-2.0
7  */
8 
9 #ifndef __SH_SPI_H__
10 #define __SH_SPI_H__
11 
12 #include <spi.h>
13 
14 struct sh_spi_regs {
15 	unsigned long tbr_rbr;
16 	unsigned long resv1;
17 	unsigned long cr1;
18 	unsigned long resv2;
19 	unsigned long cr2;
20 	unsigned long resv3;
21 	unsigned long cr3;
22 	unsigned long resv4;
23 	unsigned long cr4;
24 };
25 
26 /* CR1 */
27 #define SH_SPI_TBE	0x80
28 #define SH_SPI_TBF	0x40
29 #define SH_SPI_RBE	0x20
30 #define SH_SPI_RBF	0x10
31 #define SH_SPI_PFONRD	0x08
32 #define SH_SPI_SSDB	0x04
33 #define SH_SPI_SSD	0x02
34 #define SH_SPI_SSA	0x01
35 
36 /* CR2 */
37 #define SH_SPI_RSTF	0x80
38 #define SH_SPI_LOOPBK	0x40
39 #define SH_SPI_CPOL	0x20
40 #define SH_SPI_CPHA	0x10
41 #define SH_SPI_L1M0	0x08
42 
43 /* CR3 */
44 #define SH_SPI_MAX_BYTE	0xFF
45 
46 /* CR4 */
47 #define SH_SPI_TBEI	0x80
48 #define SH_SPI_TBFI	0x40
49 #define SH_SPI_RBEI	0x20
50 #define SH_SPI_RBFI	0x10
51 #define SH_SPI_SSS1	0x08
52 #define SH_SPI_WPABRT	0x04
53 #define SH_SPI_SSS0	0x01
54 
55 #define SH_SPI_FIFO_SIZE	32
56 #define SH_SPI_NUM_CS		4
57 
58 struct sh_spi {
59 	struct spi_slave	slave;
60 	struct sh_spi_regs	*regs;
61 };
62 
63 static inline struct sh_spi *to_sh_spi(struct spi_slave *slave)
64 {
65 	return container_of(slave, struct sh_spi, slave);
66 }
67 
68 #endif
69