Input: wacom_i2c - Add support for vdd regulator
Add support for a VDD regulator. This allows the kernel to prove the Wacom-I2C device on the rM2. Signed-off-by: Alistair Francis <alistair@alistair23.me>rM2-mainline
parent
42f9e302e1
commit
b54e976e77
|
@ -13,6 +13,7 @@
|
|||
#include <linux/irq.h>
|
||||
#include <linux/input/touchscreen.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/reset.h>
|
||||
#include <linux/of.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
@ -56,6 +57,7 @@ struct wacom_i2c {
|
|||
struct i2c_client *client;
|
||||
struct input_dev *input;
|
||||
struct touchscreen_properties props;
|
||||
struct regulator *vdd;
|
||||
u8 data[WACOM_QUERY_SIZE];
|
||||
bool prox;
|
||||
int tool;
|
||||
|
@ -221,6 +223,20 @@ static int wacom_i2c_probe(struct i2c_client *client,
|
|||
goto err_free_mem;
|
||||
}
|
||||
|
||||
wac_i2c->vdd = regulator_get(&client->dev, "vdd");
|
||||
if (IS_ERR(wac_i2c->vdd)) {
|
||||
error = PTR_ERR(wac_i2c->vdd);
|
||||
kfree(wac_i2c);
|
||||
return error;
|
||||
}
|
||||
|
||||
error = regulator_enable(wac_i2c->vdd);
|
||||
if (error) {
|
||||
regulator_put(wac_i2c->vdd);
|
||||
kfree(wac_i2c);
|
||||
return error;
|
||||
}
|
||||
|
||||
wac_i2c->client = client;
|
||||
wac_i2c->input = input;
|
||||
|
||||
|
@ -277,6 +293,8 @@ static int wacom_i2c_probe(struct i2c_client *client,
|
|||
err_free_irq:
|
||||
free_irq(client->irq, wac_i2c);
|
||||
err_free_mem:
|
||||
regulator_disable(wac_i2c->vdd);
|
||||
regulator_put(wac_i2c->vdd);
|
||||
input_free_device(input);
|
||||
kfree(wac_i2c);
|
||||
|
||||
|
|
Loading…
Reference in New Issue