a0e949fa927bdec04843dbe83277ea203e57e109
[oweals/u-boot.git] / drivers / spi / sh_spi.h
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