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 (2):
Input: egalax_ts: get gpio from devicetree node
Input: add devicetree binding note for egalax_ts
.../bindings/input/touchscreen/egalax-ts.txt | 17 +++++++++++++++++
drivers/input/touchscreen/egalax_ts.c | 19 ++++++++++++++++---
2 files changed, 33 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,"irq-gpio",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 | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
create mode 100644 Documentation/devicetree/bindings/input/touchscreen/egalax-ts.txt
Hi Hui,
在 2012-8-8,下午5:10,Hui Wang [off-list ref]
写道:
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>