1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef LINUX_SPI_MAX7301_H
3#define LINUX_SPI_MAX7301_H
4
5#include <linux/gpio.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 int __max730x_remove(struct device *dev);
35extern int __max730x_probe(struct max7301 *ts);
36#endif
37