|  | /* SPDX-License-Identifier: GPL-2.0+ */ | 
|  | /* Header File for Loongson SPI Driver. */ | 
|  | /* Copyright (C) 2023 Loongson Technology Corporation Limited */ | 
|  |  | 
|  | #ifndef __LINUX_SPI_LOONGSON_H | 
|  | #define __LINUX_SPI_LOONGSON_H | 
|  |  | 
|  | #include <linux/bits.h> | 
|  | #include <linux/pm.h> | 
|  | #include <linux/types.h> | 
|  |  | 
|  | #define	LOONGSON_SPI_SPCR_REG	0x00 | 
|  | #define	LOONGSON_SPI_SPSR_REG	0x01 | 
|  | #define	LOONGSON_SPI_FIFO_REG	0x02 | 
|  | #define	LOONGSON_SPI_SPER_REG	0x03 | 
|  | #define	LOONGSON_SPI_PARA_REG	0x04 | 
|  | #define	LOONGSON_SPI_SFCS_REG	0x05 | 
|  | #define	LOONGSON_SPI_TIMI_REG	0x06 | 
|  |  | 
|  | /* Bits definition for Loongson SPI register */ | 
|  | #define	LOONGSON_SPI_PARA_MEM_EN	BIT(0) | 
|  | #define	LOONGSON_SPI_SPCR_CPHA	BIT(2) | 
|  | #define	LOONGSON_SPI_SPCR_CPOL	BIT(3) | 
|  | #define	LOONGSON_SPI_SPCR_SPE	BIT(6) | 
|  | #define	LOONGSON_SPI_SPSR_RFEMPTY	BIT(0) | 
|  | #define	LOONGSON_SPI_SPSR_WCOL	BIT(6) | 
|  | #define	LOONGSON_SPI_SPSR_SPIF	BIT(7) | 
|  |  | 
|  | struct device; | 
|  | struct spi_controller; | 
|  |  | 
|  | struct loongson_spi { | 
|  | struct	spi_controller	*controller; | 
|  | void __iomem		*base; | 
|  | int			cs_active; | 
|  | unsigned int		hz; | 
|  | unsigned char		spcr; | 
|  | unsigned char		sper; | 
|  | unsigned char		spsr; | 
|  | unsigned char		para; | 
|  | unsigned char		sfcs; | 
|  | unsigned char		timi; | 
|  | unsigned int		mode; | 
|  | u64			clk_rate; | 
|  | }; | 
|  |  | 
|  | int loongson_spi_init_controller(struct device *dev, void __iomem *reg); | 
|  | extern const struct dev_pm_ops loongson_spi_dev_pm_ops; | 
|  | #endif /* __LINUX_SPI_LOONGSON_H */ |