blob: 33a4630c8daf6a0c479d1d97256e1af36526dbee [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0 */
Yoshihiro Shimoda65bd9b42011-01-31 16:50:43 +09002/*
3 * SH SPI driver
4 *
5 * Copyright (C) 2011 Renesas Solutions Corp.
Yoshihiro Shimoda65bd9b42011-01-31 16:50:43 +09006 */
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/* 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
Yoshihiro Shimoda41153eb2012-03-05 19:27:13 +000050#define SH_SPI_SSS1 0x08
Yoshihiro Shimoda65bd9b42011-01-31 16:50:43 +090051#define SH_SPI_WPABRT 0x04
Yoshihiro Shimoda41153eb2012-03-05 19:27:13 +000052#define SH_SPI_SSS0 0x01
Yoshihiro Shimoda65bd9b42011-01-31 16:50:43 +090053
54#define SH_SPI_FIFO_SIZE 32
Yoshihiro Shimoda41153eb2012-03-05 19:27:13 +000055#define SH_SPI_NUM_CS 4
Yoshihiro Shimoda65bd9b42011-01-31 16:50:43 +090056
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