2020-06-11 11:25:07 +08:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
/*
|
|
|
|
* Header File for Altera SPI Driver.
|
|
|
|
*/
|
|
|
|
#ifndef __LINUX_SPI_ALTERA_H
|
|
|
|
#define __LINUX_SPI_ALTERA_H
|
|
|
|
|
2021-04-17 00:57:19 +08:00
|
|
|
#include <linux/interrupt.h>
|
2020-06-11 11:25:07 +08:00
|
|
|
#include <linux/regmap.h>
|
|
|
|
#include <linux/spi/spi.h>
|
|
|
|
#include <linux/types.h>
|
|
|
|
|
2021-04-17 00:57:19 +08:00
|
|
|
#define ALTERA_SPI_MAX_CS 32
|
|
|
|
|
2020-06-11 11:25:07 +08:00
|
|
|
/**
|
|
|
|
* struct altera_spi_platform_data - Platform data of the Altera SPI driver
|
2022-12-29 18:38:35 +08:00
|
|
|
* @mode_bits: Mode bits of SPI host.
|
2020-06-11 11:25:07 +08:00
|
|
|
* @num_chipselect: Number of chipselects.
|
|
|
|
* @bits_per_word_mask: bitmask of supported bits_per_word for transfers.
|
2020-06-11 11:25:08 +08:00
|
|
|
* @num_devices: Number of devices that shall be added when the driver
|
|
|
|
* is probed.
|
|
|
|
* @devices: The devices to add.
|
2020-06-11 11:25:07 +08:00
|
|
|
*/
|
|
|
|
struct altera_spi_platform_data {
|
|
|
|
u16 mode_bits;
|
|
|
|
u16 num_chipselect;
|
|
|
|
u32 bits_per_word_mask;
|
2020-06-11 11:25:08 +08:00
|
|
|
u16 num_devices;
|
|
|
|
struct spi_board_info *devices;
|
2020-06-11 11:25:07 +08:00
|
|
|
};
|
|
|
|
|
2021-04-17 00:57:19 +08:00
|
|
|
struct altera_spi {
|
|
|
|
int irq;
|
|
|
|
int len;
|
|
|
|
int count;
|
|
|
|
int bytes_per_word;
|
|
|
|
u32 imr;
|
|
|
|
|
|
|
|
/* data buffers */
|
|
|
|
const unsigned char *tx;
|
|
|
|
unsigned char *rx;
|
|
|
|
|
|
|
|
struct regmap *regmap;
|
|
|
|
u32 regoff;
|
|
|
|
struct device *dev;
|
|
|
|
};
|
|
|
|
|
|
|
|
extern irqreturn_t altera_spi_irq(int irq, void *dev);
|
2022-12-29 18:38:35 +08:00
|
|
|
extern void altera_spi_init_host(struct spi_controller *host);
|
2020-06-11 11:25:07 +08:00
|
|
|
#endif /* __LINUX_SPI_ALTERA_H */
|