1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef LINUX_SPI_MAX7301_H
3 #define LINUX_SPI_MAX7301_H
4 
5 #include <linux/gpio/driver.h>
6 
7 /*
8  * Some registers must be read back to modify.
9  * To save time we cache them here in memory
10  */
11 struct max7301 {
12 	struct mutex	lock;
13 	u8		port_config[8];	/* field 0 is unused */
14 	u32		out_level;	/* cached output levels */
15 	u32		input_pullup_active;
16 	struct gpio_chip chip;
17 	struct device *dev;
18 	int (*write)(struct device *dev, unsigned int reg, unsigned int val);
19 	int (*read)(struct device *dev, unsigned int reg);
20 };
21 
22 struct max7301_platform_data {
23 	/* number assigned to the first GPIO */
24 	unsigned	base;
25 	/*
26 	 * bitmask controlling the pullup configuration,
27 	 *
28 	 * _note_ the 4 lowest bits are unused, because the first 4
29 	 * ports of the controller are not used, too.
30 	 */
31 	u32		input_pullup_active;
32 };
33 
34 extern void __max730x_remove(struct device *dev);
35 extern int __max730x_probe(struct max7301 *ts);
36 #endif
37