Commit 73d4a542 authored by Nuno Sá's avatar Nuno Sá Committed by Dmitry Torokhov
Browse files

Input: adp5588-keys - add regulator support

parent cfacae58
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <linux/pinctrl/pinconf-generic.h>
#include <linux/platform_device.h>
#include <linux/pm.h>
#include <linux/regulator/consumer.h>
#include <linux/slab.h>
#include <linux/timekeeping.h>

@@ -712,12 +713,18 @@ static int adp5588_fw_parse(struct adp5588_kpad *kpad)
	return 0;
}

static void adp5588_disable_regulator(void *reg)
{
	regulator_disable(reg);
}

static int adp5588_probe(struct i2c_client *client,
			 const struct i2c_device_id *id)
{
	struct adp5588_kpad *kpad;
	struct input_dev *input;
	struct gpio_desc *gpio;
	struct regulator *vcc;
	unsigned int revid;
	int ret;
	int error;
@@ -743,6 +750,19 @@ static int adp5588_probe(struct i2c_client *client,
	if (error)
		return error;

	vcc = devm_regulator_get(&client->dev, "vcc");
	if (IS_ERR(vcc))
		return PTR_ERR(vcc);

	error = regulator_enable(vcc);
	if (error)
		return error;

	error = devm_add_action_or_reset(&client->dev,
					 adp5588_disable_regulator, vcc);
	if (error)
		return error;

	gpio = devm_gpiod_get_optional(&client->dev, "reset", GPIOD_OUT_HIGH);
	if (IS_ERR(gpio))
		return PTR_ERR(gpio);