Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/* MCP23S08 SPI/I2C GPIO driver */
 3
 4#include <linux/gpio/driver.h>
 5#include <linux/irq.h>
 6#include <linux/mutex.h>
 7#include <linux/pinctrl/pinctrl.h>
 8#include <linux/types.h>
 9
10/*
11 * MCP types supported by driver
12 */
13#define MCP_TYPE_S08	1
14#define MCP_TYPE_S17	2
15#define MCP_TYPE_008	3
16#define MCP_TYPE_017	4
17#define MCP_TYPE_S18	5
18#define MCP_TYPE_018	6
19
20struct device;
21struct regmap;
22
23struct pinctrl_dev;
24
25struct mcp23s08 {
26	u8			addr;
27	bool			irq_active_high;
28	bool			reg_shift;
29
30	u16			irq_rise;
31	u16			irq_fall;
32	int			irq;
33	bool			irq_controller;
34	int			cached_gpio;
35	/* lock protects regmap access with bypass/cache flags */
36	struct mutex		lock;
37
38	struct gpio_chip	chip;
39	struct irq_chip		irq_chip;
40
41	struct regmap		*regmap;
42	struct device		*dev;
43
44	struct pinctrl_dev	*pctldev;
45	struct pinctrl_desc	pinctrl_desc;
46};
47
48extern const struct regmap_config mcp23x08_regmap;
49extern const struct regmap_config mcp23x17_regmap;
50
51int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
52		       unsigned int addr, unsigned int type, unsigned int base);