#include <linux/bitfield.h>
#include <linux/bits.h>
#include <linux/fsi.h>
#include <linux/jiffies.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/spi/spi.h>
#define FSI_ENGID_SPI …
#define FSI_MBOX_ROOT_CTRL_8 …
#define FSI_MBOX_ROOT_CTRL_8_SPI_MUX …
#define FSI2SPI_DATA0 …
#define FSI2SPI_DATA1 …
#define FSI2SPI_CMD …
#define FSI2SPI_CMD_WRITE …
#define FSI2SPI_RESET …
#define FSI2SPI_STATUS …
#define FSI2SPI_STATUS_ANY_ERROR …
#define FSI2SPI_IRQ …
#define SPI_FSI_BASE …
#define SPI_FSI_TIMEOUT_MS …
#define SPI_FSI_MAX_RX_SIZE …
#define SPI_FSI_MAX_TX_SIZE …
#define SPI_FSI_ERROR …
#define SPI_FSI_COUNTER_CFG …
#define SPI_FSI_CFG1 …
#define SPI_FSI_CLOCK_CFG …
#define SPI_FSI_CLOCK_CFG_MM_ENABLE …
#define SPI_FSI_CLOCK_CFG_ECC_DISABLE …
#define SPI_FSI_CLOCK_CFG_RESET1 …
#define SPI_FSI_CLOCK_CFG_RESET2 …
#define SPI_FSI_CLOCK_CFG_MODE …
#define SPI_FSI_CLOCK_CFG_SCK_RECV_DEL …
#define SPI_FSI_CLOCK_CFG_SCK_NO_DEL …
#define SPI_FSI_CLOCK_CFG_SCK_DIV …
#define SPI_FSI_MMAP …
#define SPI_FSI_DATA_TX …
#define SPI_FSI_DATA_RX …
#define SPI_FSI_SEQUENCE …
#define SPI_FSI_SEQUENCE_STOP …
#define SPI_FSI_SEQUENCE_SEL_SLAVE(x) …
#define SPI_FSI_SEQUENCE_SHIFT_OUT(x) …
#define SPI_FSI_SEQUENCE_SHIFT_IN(x) …
#define SPI_FSI_SEQUENCE_COPY_DATA_TX …
#define SPI_FSI_SEQUENCE_BRANCH(x) …
#define SPI_FSI_STATUS …
#define SPI_FSI_STATUS_ERROR …
#define SPI_FSI_STATUS_SEQ_STATE …
#define SPI_FSI_STATUS_SEQ_STATE_IDLE …
#define SPI_FSI_STATUS_TDR_UNDERRUN …
#define SPI_FSI_STATUS_TDR_OVERRUN …
#define SPI_FSI_STATUS_TDR_FULL …
#define SPI_FSI_STATUS_RDR_UNDERRUN …
#define SPI_FSI_STATUS_RDR_OVERRUN …
#define SPI_FSI_STATUS_RDR_FULL …
#define SPI_FSI_STATUS_ANY_ERROR …
#define SPI_FSI_PORT_CTRL …
struct fsi2spi { … };
struct fsi_spi { … };
struct fsi_spi_sequence { … };
static int fsi_spi_check_mux(struct fsi_device *fsi, struct device *dev)
{ … }
static int fsi_spi_check_status(struct fsi_spi *ctx)
{ … }
static int fsi_spi_read_reg(struct fsi_spi *ctx, u32 offset, u64 *value)
{ … }
static int fsi_spi_write_reg(struct fsi_spi *ctx, u32 offset, u64 value)
{ … }
static int fsi_spi_data_in(u64 in, u8 *rx, int len)
{ … }
static int fsi_spi_data_out(u64 *out, const u8 *tx, int len)
{ … }
static int fsi_spi_reset(struct fsi_spi *ctx)
{ … }
static int fsi_spi_status(struct fsi_spi *ctx, u64 *status, const char *dir)
{ … }
static void fsi_spi_sequence_add(struct fsi_spi_sequence *seq, u8 val)
{ … }
static void fsi_spi_sequence_init(struct fsi_spi_sequence *seq)
{ … }
static int fsi_spi_transfer_data(struct fsi_spi *ctx,
struct spi_transfer *transfer)
{ … }
static int fsi_spi_transfer_init(struct fsi_spi *ctx)
{ … }
static int fsi_spi_transfer_one_message(struct spi_controller *ctlr,
struct spi_message *mesg)
{ … }
static size_t fsi_spi_max_transfer_size(struct spi_device *spi)
{ … }
static int fsi_spi_probe(struct device *dev)
{ … }
static const struct fsi_device_id fsi_spi_ids[] = …;
MODULE_DEVICE_TABLE(fsi, fsi_spi_ids);
static struct fsi_driver fsi_spi_driver = …;
module_fsi_driver(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;