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