Merge branch 'master' of git://git.denx.de/u-boot-spi
[platform/kernel/u-boot.git] / drivers / spi / sh_spi.h
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
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