Commit 04337738 authored by David Lechner's avatar David Lechner Committed by Dmitry Torokhov
Browse files

Input: mpr121 - use devm_regulator_get_enable_read_voltage()

parent 048b3ae0
Loading
Loading
Loading
Loading
+3 −42
Original line number Diff line number Diff line
@@ -82,42 +82,6 @@ static const struct mpr121_init_register init_reg_table[] = {
	{ AUTO_CONFIG_CTRL_ADDR, 0x0b },
};

static void mpr121_vdd_supply_disable(void *data)
{
	struct regulator *vdd_supply = data;

	regulator_disable(vdd_supply);
}

static struct regulator *mpr121_vdd_supply_init(struct device *dev)
{
	struct regulator *vdd_supply;
	int err;

	vdd_supply = devm_regulator_get(dev, "vdd");
	if (IS_ERR(vdd_supply)) {
		dev_err(dev, "failed to get vdd regulator: %ld\n",
			PTR_ERR(vdd_supply));
		return vdd_supply;
	}

	err = regulator_enable(vdd_supply);
	if (err) {
		dev_err(dev, "failed to enable vdd regulator: %d\n", err);
		return ERR_PTR(err);
	}

	err = devm_add_action_or_reset(dev, mpr121_vdd_supply_disable,
				       vdd_supply);
	if (err) {
		dev_err(dev, "failed to add disable regulator action: %d\n",
			err);
		return ERR_PTR(err);
	}

	return vdd_supply;
}

static void mpr_touchkey_report(struct input_dev *dev)
{
	struct mpr121_touchkey *mpr121 = input_get_drvdata(dev);
@@ -233,7 +197,6 @@ static int mpr121_phys_init(struct mpr121_touchkey *mpr121,
static int mpr_touchkey_probe(struct i2c_client *client)
{
	struct device *dev = &client->dev;
	struct regulator *vdd_supply;
	int vdd_uv;
	struct mpr121_touchkey *mpr121;
	struct input_dev *input_dev;
@@ -241,11 +204,9 @@ static int mpr_touchkey_probe(struct i2c_client *client)
	int error;
	int i;

	vdd_supply = mpr121_vdd_supply_init(dev);
	if (IS_ERR(vdd_supply))
		return PTR_ERR(vdd_supply);

	vdd_uv = regulator_get_voltage(vdd_supply);
	vdd_uv = devm_regulator_get_enable_read_voltage(dev, "vdd");
	if (vdd_uv < 0)
		return dev_err_probe(dev, vdd_uv, "failed to get vdd voltage\n");

	mpr121 = devm_kzalloc(dev, sizeof(*mpr121), GFP_KERNEL);
	if (!mpr121)