1  /* SPDX-License-Identifier: GPL-2.0 */
2  /*
3   * Header File for Altera SPI Driver.
4   */
5  #ifndef __LINUX_SPI_ALTERA_H
6  #define __LINUX_SPI_ALTERA_H
7  
8  #include <linux/interrupt.h>
9  #include <linux/regmap.h>
10  #include <linux/spi/spi.h>
11  #include <linux/types.h>
12  
13  #define ALTERA_SPI_MAX_CS		32
14  
15  /**
16   * struct altera_spi_platform_data - Platform data of the Altera SPI driver
17   * @mode_bits:		Mode bits of SPI host.
18   * @num_chipselect:	Number of chipselects.
19   * @bits_per_word_mask:	bitmask of supported bits_per_word for transfers.
20   * @num_devices:	Number of devices that shall be added when the driver
21   *			is probed.
22   * @devices:		The devices to add.
23   */
24  struct altera_spi_platform_data {
25  	u16				mode_bits;
26  	u16				num_chipselect;
27  	u32				bits_per_word_mask;
28  	u16				num_devices;
29  	struct spi_board_info		*devices;
30  };
31  
32  struct altera_spi {
33  	int irq;
34  	int len;
35  	int count;
36  	int bytes_per_word;
37  	u32 imr;
38  
39  	/* data buffers */
40  	const unsigned char *tx;
41  	unsigned char *rx;
42  
43  	struct regmap *regmap;
44  	u32 regoff;
45  	struct device *dev;
46  };
47  
48  extern irqreturn_t altera_spi_irq(int irq, void *dev);
49  extern void altera_spi_init_host(struct spi_controller *host);
50  #endif /* __LINUX_SPI_ALTERA_H */
51