From: Alistair Francis <alist...@alistair22.me>

Signed-off-by: Alistair Francis <alist...@alistair22.me>
---
v4:
 - Initial commit

 drivers/input/touchscreen/wacom_i2c.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/input/touchscreen/wacom_i2c.c 
b/drivers/input/touchscreen/wacom_i2c.c
index 84c7ccb737bd..28004b1180c9 100644
--- a/drivers/input/touchscreen/wacom_i2c.c
+++ b/drivers/input/touchscreen/wacom_i2c.c
@@ -55,6 +55,7 @@ struct wacom_features {
 struct wacom_i2c {
        struct i2c_client *client;
        struct input_dev *input;
+       struct reset_control *rstc;
        struct touchscreen_properties props;
        u8 data[WACOM_QUERY_SIZE];
        bool prox;
@@ -175,6 +176,8 @@ static int wacom_i2c_open(struct input_dev *dev)
        struct wacom_i2c *wac_i2c = input_get_drvdata(dev);
        struct i2c_client *client = wac_i2c->client;
 
+       reset_control_reset(wac_i2c->rstc);
+
        enable_irq(client->irq);
 
        return 0;
@@ -193,6 +196,7 @@ static int wacom_i2c_probe(struct i2c_client *client,
 {
        struct wacom_i2c *wac_i2c;
        struct input_dev *input;
+       struct reset_control *rstc;
        struct wacom_features features = { 0 };
        int error;
 
@@ -201,6 +205,12 @@ static int wacom_i2c_probe(struct i2c_client *client,
                return -EIO;
        }
 
+       rstc = devm_reset_control_get_optional_exclusive(&client->dev, NULL);
+       if (IS_ERR(rstc)) {
+               dev_err(&client->dev, "Failed to get reset control before 
init\n");
+               return PTR_ERR(rstc);
+       }
+
        error = wacom_query_device(client, &features);
        if (error)
                return error;
@@ -214,6 +224,7 @@ static int wacom_i2c_probe(struct i2c_client *client,
 
        wac_i2c->client = client;
        wac_i2c->input = input;
+       wac_i2c->rstc = rstc;
 
        input->name = "Wacom I2C Digitizer";
        input->id.bustype = BUS_I2C;
-- 
2.31.0

Reply via email to