| /* 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 */ |