xref: /rk3399_rockchip-uboot/drivers/spi/sh_spi.h (revision 5b8031ccb4ed6e84457d883198d77efc307085dc)
16639562eSYoshihiro Shimoda /*
26639562eSYoshihiro Shimoda  * SH SPI driver
36639562eSYoshihiro Shimoda  *
46639562eSYoshihiro Shimoda  * Copyright (C) 2011 Renesas Solutions Corp.
56639562eSYoshihiro Shimoda  *
6*5b8031ccSTom Rini  * SPDX-License-Identifier:	GPL-2.0
76639562eSYoshihiro Shimoda  */
86639562eSYoshihiro Shimoda 
96639562eSYoshihiro Shimoda #ifndef __SH_SPI_H__
106639562eSYoshihiro Shimoda #define __SH_SPI_H__
116639562eSYoshihiro Shimoda 
126639562eSYoshihiro Shimoda #include <spi.h>
136639562eSYoshihiro Shimoda 
146639562eSYoshihiro Shimoda struct sh_spi_regs {
156639562eSYoshihiro Shimoda 	unsigned long tbr_rbr;
166639562eSYoshihiro Shimoda 	unsigned long resv1;
176639562eSYoshihiro Shimoda 	unsigned long cr1;
186639562eSYoshihiro Shimoda 	unsigned long resv2;
196639562eSYoshihiro Shimoda 	unsigned long cr2;
206639562eSYoshihiro Shimoda 	unsigned long resv3;
216639562eSYoshihiro Shimoda 	unsigned long cr3;
226639562eSYoshihiro Shimoda 	unsigned long resv4;
236639562eSYoshihiro Shimoda 	unsigned long cr4;
246639562eSYoshihiro Shimoda };
256639562eSYoshihiro Shimoda 
266639562eSYoshihiro Shimoda /* CR1 */
276639562eSYoshihiro Shimoda #define SH_SPI_TBE	0x80
286639562eSYoshihiro Shimoda #define SH_SPI_TBF	0x40
296639562eSYoshihiro Shimoda #define SH_SPI_RBE	0x20
306639562eSYoshihiro Shimoda #define SH_SPI_RBF	0x10
316639562eSYoshihiro Shimoda #define SH_SPI_PFONRD	0x08
326639562eSYoshihiro Shimoda #define SH_SPI_SSDB	0x04
336639562eSYoshihiro Shimoda #define SH_SPI_SSD	0x02
346639562eSYoshihiro Shimoda #define SH_SPI_SSA	0x01
356639562eSYoshihiro Shimoda 
366639562eSYoshihiro Shimoda /* CR2 */
376639562eSYoshihiro Shimoda #define SH_SPI_RSTF	0x80
386639562eSYoshihiro Shimoda #define SH_SPI_LOOPBK	0x40
396639562eSYoshihiro Shimoda #define SH_SPI_CPOL	0x20
406639562eSYoshihiro Shimoda #define SH_SPI_CPHA	0x10
416639562eSYoshihiro Shimoda #define SH_SPI_L1M0	0x08
426639562eSYoshihiro Shimoda 
436639562eSYoshihiro Shimoda /* CR3 */
446639562eSYoshihiro Shimoda #define SH_SPI_MAX_BYTE	0xFF
456639562eSYoshihiro Shimoda 
466639562eSYoshihiro Shimoda /* CR4 */
476639562eSYoshihiro Shimoda #define SH_SPI_TBEI	0x80
486639562eSYoshihiro Shimoda #define SH_SPI_TBFI	0x40
496639562eSYoshihiro Shimoda #define SH_SPI_RBEI	0x20
506639562eSYoshihiro Shimoda #define SH_SPI_RBFI	0x10
51c1d4ad94SYoshihiro Shimoda #define SH_SPI_SSS1	0x08
526639562eSYoshihiro Shimoda #define SH_SPI_WPABRT	0x04
53c1d4ad94SYoshihiro Shimoda #define SH_SPI_SSS0	0x01
546639562eSYoshihiro Shimoda 
556639562eSYoshihiro Shimoda #define SH_SPI_FIFO_SIZE	32
56c1d4ad94SYoshihiro Shimoda #define SH_SPI_NUM_CS		4
576639562eSYoshihiro Shimoda 
586639562eSYoshihiro Shimoda struct sh_spi {
596639562eSYoshihiro Shimoda 	struct spi_slave	slave;
606639562eSYoshihiro Shimoda 	struct sh_spi_regs	*regs;
616639562eSYoshihiro Shimoda };
626639562eSYoshihiro Shimoda 
to_sh_spi(struct spi_slave * slave)636639562eSYoshihiro Shimoda static inline struct sh_spi *to_sh_spi(struct spi_slave *slave)
646639562eSYoshihiro Shimoda {
656639562eSYoshihiro Shimoda 	return container_of(slave, struct sh_spi, slave);
666639562eSYoshihiro Shimoda }
676639562eSYoshihiro Shimoda 
686639562eSYoshihiro Shimoda #endif
69