|  | /* SPDX-License-Identifier: GPL-2.0-only */ | 
|  | /* MCP23S08 SPI/I2C GPIO driver */ | 
|  |  | 
|  | #include <linux/gpio/driver.h> | 
|  | #include <linux/irq.h> | 
|  | #include <linux/mutex.h> | 
|  | #include <linux/pinctrl/pinctrl.h> | 
|  | #include <linux/types.h> | 
|  |  | 
|  | /* | 
|  | * MCP types supported by driver | 
|  | */ | 
|  | #define MCP_TYPE_S08	1 | 
|  | #define MCP_TYPE_S17	2 | 
|  | #define MCP_TYPE_008	3 | 
|  | #define MCP_TYPE_017	4 | 
|  | #define MCP_TYPE_S18	5 | 
|  | #define MCP_TYPE_018	6 | 
|  |  | 
|  | struct device; | 
|  | struct regmap; | 
|  |  | 
|  | struct pinctrl_dev; | 
|  |  | 
|  | struct mcp23s08 { | 
|  | u8			addr; | 
|  | bool			irq_active_high; | 
|  | bool			reg_shift; | 
|  |  | 
|  | u16			irq_rise; | 
|  | u16			irq_fall; | 
|  | int			irq; | 
|  | bool			irq_controller; | 
|  | int			cached_gpio; | 
|  | /* lock protects regmap access with bypass/cache flags */ | 
|  | struct mutex		lock; | 
|  |  | 
|  | struct gpio_chip	chip; | 
|  | struct irq_chip		irq_chip; | 
|  |  | 
|  | struct regmap		*regmap; | 
|  | struct device		*dev; | 
|  |  | 
|  | struct pinctrl_dev	*pctldev; | 
|  | struct pinctrl_desc	pinctrl_desc; | 
|  | struct gpio_desc        *reset_gpio; | 
|  | }; | 
|  |  | 
|  | extern const struct regmap_config mcp23x08_regmap; | 
|  | extern const struct regmap_config mcp23x17_regmap; | 
|  |  | 
|  | int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev, | 
|  | unsigned int addr, unsigned int type, unsigned int base); |