1 
2 /* FIXME driver should be able to handle IRQs...  */
3 
4 struct mcp23s08_chip_info {
5 	bool		is_present;	/* true if populated */
6 	unsigned	pullups;	/* BIT(x) means enable pullup x */
7 };
8 
9 struct mcp23s08_platform_data {
10 	/* For mcp23s08, up to 4 slaves (numbered 0..3) can share one SPI
11 	 * chipselect, each providing 1 gpio_chip instance with 8 gpios.
12 	 * For mpc23s17, up to 8 slaves (numbered 0..7) can share one SPI
13 	 * chipselect, each providing 1 gpio_chip (port A + port B) with
14 	 * 16 gpios.
15 	 */
16 	struct mcp23s08_chip_info	chip[8];
17 
18 	/* "base" is the number of the first GPIO.  Dynamic assignment is
19 	 * not currently supported, and even if there are gaps in chip
20 	 * addressing the GPIO numbers are sequential .. so for example
21 	 * if only slaves 0 and 3 are present, their GPIOs range from
22 	 * base to base+15 (or base+31 for s17 variant).
23 	 */
24 	unsigned	base;
25 
26 	void		*context;	/* param to setup/teardown */
27 
28 	int		(*setup)(struct spi_device *spi,
29 					int gpio, unsigned ngpio,
30 					void *context);
31 	int		(*teardown)(struct spi_device *spi,
32 					int gpio, unsigned ngpio,
33 					void *context);
34 };
35