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