1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _LINUX_PCA953X_H 3*4882a593Smuzhiyun #define _LINUX_PCA953X_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <linux/types.h> 6*4882a593Smuzhiyun #include <linux/i2c.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* platform data for the PCA9539 16-bit I/O expander driver */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun struct pca953x_platform_data { 11*4882a593Smuzhiyun /* number of the first GPIO */ 12*4882a593Smuzhiyun unsigned gpio_base; 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun /* initial polarity inversion setting */ 15*4882a593Smuzhiyun u32 invert; 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /* interrupt base */ 18*4882a593Smuzhiyun int irq_base; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun void *context; /* param to setup/teardown */ 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun int (*setup)(struct i2c_client *client, 23*4882a593Smuzhiyun unsigned gpio, unsigned ngpio, 24*4882a593Smuzhiyun void *context); 25*4882a593Smuzhiyun int (*teardown)(struct i2c_client *client, 26*4882a593Smuzhiyun unsigned gpio, unsigned ngpio, 27*4882a593Smuzhiyun void *context); 28*4882a593Smuzhiyun const char *const *names; 29*4882a593Smuzhiyun }; 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun #endif /* _LINUX_PCA953X_H */ 32