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 68