Home | History | Annotate | Download | only in spi
      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