1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
25877457aSVivien Didelot #ifndef _LINUX_PCA953X_H
35877457aSVivien Didelot #define _LINUX_PCA953X_H
45877457aSVivien Didelot 
55877457aSVivien Didelot #include <linux/types.h>
65877457aSVivien Didelot #include <linux/i2c.h>
75877457aSVivien Didelot 
85877457aSVivien Didelot /* platform data for the PCA9539 16-bit I/O expander driver */
95877457aSVivien Didelot 
105877457aSVivien Didelot struct pca953x_platform_data {
115877457aSVivien Didelot 	/* number of the first GPIO */
125877457aSVivien Didelot 	unsigned	gpio_base;
135877457aSVivien Didelot 
145877457aSVivien Didelot 	/* initial polarity inversion setting */
155877457aSVivien Didelot 	u32		invert;
165877457aSVivien Didelot 
175877457aSVivien Didelot 	/* interrupt base */
185877457aSVivien Didelot 	int		irq_base;
195877457aSVivien Didelot 
205877457aSVivien Didelot 	void		*context;	/* param to setup/teardown */
215877457aSVivien Didelot 
225877457aSVivien Didelot 	int		(*setup)(struct i2c_client *client,
235877457aSVivien Didelot 				unsigned gpio, unsigned ngpio,
245877457aSVivien Didelot 				void *context);
25*6a8f359cSUwe Kleine-König 	void		(*teardown)(struct i2c_client *client,
265877457aSVivien Didelot 				unsigned gpio, unsigned ngpio,
275877457aSVivien Didelot 				void *context);
285877457aSVivien Didelot 	const char	*const *names;
295877457aSVivien Didelot };
305877457aSVivien Didelot 
315877457aSVivien Didelot #endif /* _LINUX_PCA953X_H */
32