50 lines · c
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_H6#define __LINUX_SPI_LOONGSON_H7 8#include <linux/bits.h>9#include <linux/pm.h>10#include <linux/types.h>11 12#define LOONGSON_SPI_SPCR_REG 0x0013#define LOONGSON_SPI_SPSR_REG 0x0114#define LOONGSON_SPI_FIFO_REG 0x0215#define LOONGSON_SPI_SPER_REG 0x0316#define LOONGSON_SPI_PARA_REG 0x0417#define LOONGSON_SPI_SFCS_REG 0x0518#define LOONGSON_SPI_TIMI_REG 0x0619 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 29struct device;30struct spi_controller;31 32struct 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 47int loongson_spi_init_controller(struct device *dev, void __iomem *reg);48extern const struct dev_pm_ops loongson_spi_dev_pm_ops;49#endif /* __LINUX_SPI_LOONGSON_H */50