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