Linux Audio

Check our new training course

Loading...
 1
 2/* FIXME driver should be able to handle IRQs...  */
 3
 4struct mcp23s08_chip_info {
 5	bool		is_present;	/* true if populated */
 6	unsigned	pullups;	/* BIT(x) means enable pullup x */
 7};
 8
 9struct 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	/* Marks the device as a interrupt controller.
26	 * NOTE: The interrupt functionality is only supported for i2c
27	 * versions of the chips. The spi chips can also do the interrupts,
28	 * but this is not supported by the linux driver yet.
29	 */
30	bool		irq_controller;
31
32	/* Sets the mirror flag in the IOCON register. Devices
33	 * with two interrupt outputs (these are the devices ending with 17 and
34	 * those that have 16 IOs) have two IO banks: IO 0-7 form bank 1 and
35	 * IO 8-15 are bank 2. These chips have two different interrupt outputs:
36	 * One for bank 1 and another for bank 2. If irq-mirror is set, both
37	 * interrupts are generated regardless of the bank that an input change
38	 * occurred on. If it is not set, the interrupt are only generated for
39	 * the bank they belong to.
40	 * On devices with only one interrupt output this property is useless.
41	 */
42	bool		mirror;
43};