提交 27cef8b4 编写于 作者: H Heiko Stübner 提交者: Dmitry Torokhov

Input: auo-pixcir-ts - handle reset gpio directly

Devicetree based platforms don't handle device callbacks very well
and until now no board has come along that needs more extended hwinit
than pulling the rst gpio high.

Therefore pull the reset handling directly into the driver and remove
the callbacks from the driver.

If extended device setup is needed at some later point, power-sequences
would probably be the solution of choice.
Signed-off-by: NHeiko Stuebner <heiko@sntech.de>
Signed-off-by: NDmitry Torokhov <dmitry.torokhov@gmail.com>
上级 fa656308
...@@ -511,8 +511,21 @@ static int auo_pixcir_probe(struct i2c_client *client, ...@@ -511,8 +511,21 @@ static int auo_pixcir_probe(struct i2c_client *client,
goto err_gpio_dir; goto err_gpio_dir;
} }
if (pdata->init_hw) ret = gpio_request(pdata->gpio_rst, "auo_pixcir_ts_rst");
pdata->init_hw(client); if (ret) {
dev_err(&client->dev, "request of gpio %d failed, %d\n",
pdata->gpio_rst, ret);
goto err_gpio_dir;
}
ret = gpio_direction_output(pdata->gpio_rst, 1);
if (ret) {
dev_err(&client->dev, "setting direction of gpio %d failed %d\n",
pdata->gpio_rst, ret);
goto err_gpio_rst;
}
msleep(200);
ts->client = client; ts->client = client;
ts->touch_ind_mode = 0; ts->touch_ind_mode = 0;
...@@ -597,8 +610,9 @@ static int auo_pixcir_probe(struct i2c_client *client, ...@@ -597,8 +610,9 @@ static int auo_pixcir_probe(struct i2c_client *client,
err_fw_vers: err_fw_vers:
input_free_device(input_dev); input_free_device(input_dev);
err_input_alloc: err_input_alloc:
if (pdata->exit_hw) gpio_set_value(pdata->gpio_rst, 0);
pdata->exit_hw(client); err_gpio_rst:
gpio_free(pdata->gpio_rst);
err_gpio_dir: err_gpio_dir:
gpio_free(pdata->gpio_int); gpio_free(pdata->gpio_int);
err_gpio_int: err_gpio_int:
...@@ -616,8 +630,8 @@ static int auo_pixcir_remove(struct i2c_client *client) ...@@ -616,8 +630,8 @@ static int auo_pixcir_remove(struct i2c_client *client)
input_unregister_device(ts->input); input_unregister_device(ts->input);
if (pdata->exit_hw) gpio_set_value(pdata->gpio_rst, 0);
pdata->exit_hw(client); gpio_free(pdata->gpio_rst);
gpio_free(pdata->gpio_int); gpio_free(pdata->gpio_int);
......
...@@ -43,12 +43,10 @@ ...@@ -43,12 +43,10 @@
*/ */
struct auo_pixcir_ts_platdata { struct auo_pixcir_ts_platdata {
int gpio_int; int gpio_int;
int gpio_rst;
int int_setting; int int_setting;
void (*init_hw)(struct i2c_client *);
void (*exit_hw)(struct i2c_client *);
unsigned int x_max; unsigned int x_max;
unsigned int y_max; unsigned int y_max;
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册