brintos

brintos / linux-shallow public Read only

0
0
Text · 1.2 KiB · 105bce9 Raw
61 lines · c
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 driver12 */13#define MCP_TYPE_S08	114#define MCP_TYPE_S17	215#define MCP_TYPE_008	316#define MCP_TYPE_017	417#define MCP_TYPE_S18	518#define MCP_TYPE_018	619 20struct device;21struct regmap;22 23struct pinctrl_dev;24 25struct mcp23s08_info {26	const struct regmap_config *regmap;27	const char *label;28	unsigned int type;29	u16 ngpio;30	bool reg_shift;31};32 33struct mcp23s08 {34	u8			addr;35	bool			irq_active_high;36	bool			reg_shift;37 38	u16			irq_rise;39	u16			irq_fall;40	int			irq;41	bool			irq_controller;42	int			cached_gpio;43	/* lock protects regmap access with bypass/cache flags */44	struct mutex		lock;45 46	struct gpio_chip	chip;47 48	struct regmap		*regmap;49	struct device		*dev;50 51	struct pinctrl_dev	*pctldev;52	struct pinctrl_desc	pinctrl_desc;53	struct gpio_desc        *reset_gpio;54};55 56extern const struct regmap_config mcp23x08_regmap;57extern const struct regmap_config mcp23x17_regmap;58 59int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,60		       unsigned int addr, unsigned int type, unsigned int base);61