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 69