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