]>
Commit | Line | Data |
---|---|---|
6c7a8640 YZ |
1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
2 | /* Header File for Loongson SPI Driver. */ | |
3 | /* Copyright (C) 2023 Loongson Technology Corporation Limited */ | |
4 | ||
5 | #ifndef __LINUX_SPI_LOONGSON_H | |
6 | #define __LINUX_SPI_LOONGSON_H | |
7 | ||
8 | #include <linux/bits.h> | |
9 | #include <linux/pm.h> | |
10 | #include <linux/types.h> | |
11 | ||
12 | #define LOONGSON_SPI_SPCR_REG 0x00 | |
13 | #define LOONGSON_SPI_SPSR_REG 0x01 | |
14 | #define LOONGSON_SPI_FIFO_REG 0x02 | |
15 | #define LOONGSON_SPI_SPER_REG 0x03 | |
16 | #define LOONGSON_SPI_PARA_REG 0x04 | |
17 | #define LOONGSON_SPI_SFCS_REG 0x05 | |
18 | #define LOONGSON_SPI_TIMI_REG 0x06 | |
19 | ||
20 | /* Bits definition for Loongson SPI register */ | |
21 | #define LOONGSON_SPI_PARA_MEM_EN BIT(0) | |
22 | #define LOONGSON_SPI_SPCR_CPHA BIT(2) | |
23 | #define LOONGSON_SPI_SPCR_CPOL BIT(3) | |
24 | #define LOONGSON_SPI_SPCR_SPE BIT(6) | |
25 | #define LOONGSON_SPI_SPSR_RFEMPTY BIT(0) | |
26 | #define LOONGSON_SPI_SPSR_WCOL BIT(6) | |
27 | #define LOONGSON_SPI_SPSR_SPIF BIT(7) | |
28 | ||
29 | struct device; | |
30 | struct spi_controller; | |
31 | ||
32 | struct loongson_spi { | |
33 | struct spi_controller *controller; | |
34 | void __iomem *base; | |
35 | int cs_active; | |
36 | unsigned int hz; | |
37 | unsigned char spcr; | |
38 | unsigned char sper; | |
39 | unsigned char spsr; | |
40 | unsigned char para; | |
41 | unsigned char sfcs; | |
42 | unsigned char timi; | |
43 | unsigned int mode; | |
44 | u64 clk_rate; | |
45 | }; | |
46 | ||
47 | int loongson_spi_init_controller(struct device *dev, void __iomem *reg); | |
48 | extern const struct dev_pm_ops loongson_spi_dev_pm_ops; | |
49 | #endif /* __LINUX_SPI_LOONGSON_H */ |