1
2
3
4
5
6
7
8#ifndef __SH_SPI_H__
9#define __SH_SPI_H__
10
11#include <spi.h>
12
13struct 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
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
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
43#define SH_SPI_MAX_BYTE 0xFF
44
45
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
57struct sh_spi {
58 struct spi_slave slave;
59 struct sh_spi_regs *regs;
60};
61
62static 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