V3:
Although have got Ack-by from driver author in the V2, i have to send
V3 since the driver is changed due to the change of a property name
in the dts.
As Shawn.guo suggested, i renamed property "irq-gpio" to "wakeup-gpios".
The reason is that, firstly the idiom of gpio naming in DT is *-gpios,
even though most of time, it could be just one gpio, secondly as the pin is
accessed as a gpio only in egalax_wake_up_device for waking up the device.
This time i send the patches both to linux-input and linux-arm, 0001 and
0002 belongs to linux-input, while the 0003 belongs to linux-arm.
V2:
Add return value checking for waking up the controller in the probe
function.
V1:
eeti touch screen controller is an external chip for most platforms,
it connect to CPU via i2c bus, and it has a irq request pin need to be
connected to a gpio of the CPU, this irq request pin also act as a
wake up signal for touch screen controller, we need to get this gpio
number and operate it to wake up the controller, the old way to get
gpio is irq_to_gpio(), this API is dying and most platforms don't support
it, we change it to a more generic way to use devcietree.
Hui Wang (3):
Input: egalax_ts: get gpio from devicetree node
Input: add devicetree binding note for egalax_ts
ARM: dts: imx6q-sabrelite: add eeti egalax touchscreen
.../bindings/input/touchscreen/egalax-ts.txt | 19 +++++++++++++++++++
arch/arm/boot/dts/imx6q-sabrelite.dts | 16 ++++++++++++++++
arch/arm/boot/dts/imx6q.dtsi | 7 +++++++
drivers/input/touchscreen/egalax_ts.c | 19 ++++++++++++++++---
4 files changed, 58 insertions(+), 3 deletions(-)
create mode 100644 Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt
--
1.7.6
The irq_to_gpio() is old, most platforms use GENERIC_GPIO framework
and don't support this API anymore.
The i.MX6q sabrelite platform equips an egalax touchscreen controller,
and this platform already transfered to GENERIC_GPIO framework, to
support this driver, we use a more generic way to get gpio.
Add a return value checking for waking up the controller in the probe
function, this guarantee only a workable device can pass init.
Signed-off-by: Hui Wang <redacted>
---
drivers/input/touchscreen/egalax_ts.c | 19 ++++++++++++++++---
1 files changed, 16 insertions(+), 3 deletions(-)
@@ -122,8 +123,15 @@ static irqreturn_t egalax_ts_interrupt(int irq, void *dev_id)/* wake up controller by an falling edge of interrupt gpio. */staticintegalax_wake_up_device(structi2c_client*client){-intgpio=irq_to_gpio(client->irq);-intret;+structdevice_node*np=client->dev.of_node;+intgpio,ret;++if(!np)+return-ENODEV;++gpio=of_get_named_gpio(np,"wakeup-gpios",0);+if(!gpio_is_valid(gpio))+return-ENODEV;ret=gpio_request(gpio,"egalax_irq");if(ret<0){
@@ -181,7 +189,12 @@ static int __devinit egalax_ts_probe(struct i2c_client *client,ts->input_dev=input_dev;/* controller may be in sleep, wake it up. */-egalax_wake_up_device(client);+ret=egalax_wake_up_device(client);+if(ret<0){+dev_err(&client->dev,"Failed to wake up the controller\n");+error=ret;+gotoerr_free_dev;+}ret=egalax_firmware_version(client);if(ret<0){
The egalax_ts driver needs to get the gpio number of the irq pin,
and use this gpio to wake up the controller. So add a note
for this change.
Signed-off-by: Hui Wang <redacted>
---
.../bindings/input/touchscreen/egalax-ts.txt | 19 +++++++++++++++++++
1 files changed, 19 insertions(+), 0 deletions(-)
create mode 100644 Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt
@@ -0,0 +1,19 @@+* EETI eGalax Multiple Touch Controller++Required properties:+- compatible: must be "eeti,egalax_ts"+- reg: i2c slave address+- interrupt-parent: the phandle for the interrupt controller+- interrupts: touch controller interrupt+- wakeup-gpios: the gpio pin to be used for waking up the controller+ as well as uased as irq pin++Example:++ egalax_ts@04 {+ compatible = "eeti,egalax_ts";+ reg = <0x04>;+ interrupt-parent = <&gpio1>;+ interrupts = <9 2>;+ wakeup-gpios = <&gpio1 9 0>;+ };