forked from Minki/linux
62f4666968
Add support for hardware which uses an I2C Serializer / Deserializer (SerDes) to communicate with the zFroce touch driver. In this case the SerDes will be configured as an interrupt controller and the zForce driver will have no access to poll the GPIO line. To support this, we add two dedicated new GPIOs in the device tree: reset-gpios and irq-gpios, with the irq-gpios being optional. To not break the existing device trees, the index based 'gpios' entries are still supported, but marked as deprecated. With this, if the interrupt GPIO is available, either via the old or new device tree style, the while loop will read and handle the packets as long as the GPIO indicates that the interrupt is asserted (existing, unchanged driver behavior). If the interrupt GPIO isn't available, i.e. not configured via the new device tree style, we are falling back to one read per ISR invocation (new behavior to support the SerDes). Note that the gpiod functions help to handle the optional GPIO: devm_gpiod_get_index_optional() will return NULL in case the interrupt GPIO isn't available. And gpiod_get_value_cansleep() does cover this, too, by returning 0 in this case. Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com> Reviewed-by: Heiko Stuebner <heiko.stuebner@bq.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
35 lines
784 B
Plaintext
35 lines
784 B
Plaintext
* Neonode infrared touchscreen controller
|
|
|
|
Required properties:
|
|
- compatible: must be "neonode,zforce"
|
|
- reg: I2C address of the chip
|
|
- interrupts: interrupt to which the chip is connected
|
|
- reset-gpios: reset gpio the chip is connected to
|
|
- x-size: horizontal resolution of touchscreen
|
|
- y-size: vertical resolution of touchscreen
|
|
|
|
Optional properties:
|
|
- irq-gpios : interrupt gpio the chip is connected to
|
|
- vdd-supply: Regulator controlling the controller supply
|
|
|
|
Example:
|
|
|
|
i2c@00000000 {
|
|
/* ... */
|
|
|
|
zforce_ts@50 {
|
|
compatible = "neonode,zforce";
|
|
reg = <0x50>;
|
|
interrupts = <2 0>;
|
|
vdd-supply = <®_zforce_vdd>;
|
|
|
|
reset-gpios = <&gpio5 9 0>; /* RST */
|
|
irq-gpios = <&gpio5 6 0>; /* IRQ, optional */
|
|
|
|
x-size = <800>;
|
|
y-size = <600>;
|
|
};
|
|
|
|
/* ... */
|
|
};
|