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 */
11struct 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
22struct 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
34extern void __max730x_remove(struct device *dev);
35extern int __max730x_probe(struct max7301 *ts);
36#endif
37