diff options
Diffstat (limited to 'drivers/input/keyboard/mpr121_touchkey.c')
| -rw-r--r-- | drivers/input/keyboard/mpr121_touchkey.c | 58 |
1 files changed, 9 insertions, 49 deletions
diff --git a/drivers/input/keyboard/mpr121_touchkey.c b/drivers/input/keyboard/mpr121_touchkey.c index 40d6e5087cde..bd1a944ded46 100644 --- a/drivers/input/keyboard/mpr121_touchkey.c +++ b/drivers/input/keyboard/mpr121_touchkey.c @@ -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(dev, mpr121_vdd_supply_disable, vdd_supply); - if (err) { - regulator_disable(vdd_supply); - 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); @@ -230,11 +194,9 @@ err_i2c_write: return ret; } -static int mpr_touchkey_probe(struct i2c_client *client, - const struct i2c_device_id *id) +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; @@ -242,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) @@ -341,7 +301,7 @@ static int mpr_touchkey_probe(struct i2c_client *client, return 0; } -static int __maybe_unused mpr_suspend(struct device *dev) +static int mpr_suspend(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); @@ -353,7 +313,7 @@ static int __maybe_unused mpr_suspend(struct device *dev) return 0; } -static int __maybe_unused mpr_resume(struct device *dev) +static int mpr_resume(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct mpr121_touchkey *mpr121 = i2c_get_clientdata(client); @@ -367,10 +327,10 @@ static int __maybe_unused mpr_resume(struct device *dev) return 0; } -static SIMPLE_DEV_PM_OPS(mpr121_touchkey_pm_ops, mpr_suspend, mpr_resume); +static DEFINE_SIMPLE_DEV_PM_OPS(mpr121_touchkey_pm_ops, mpr_suspend, mpr_resume); static const struct i2c_device_id mpr121_id[] = { - { "mpr121_touchkey", 0 }, + { "mpr121_touchkey" }, { } }; MODULE_DEVICE_TABLE(i2c, mpr121_id); @@ -386,7 +346,7 @@ MODULE_DEVICE_TABLE(of, mpr121_touchkey_dt_match_table); static struct i2c_driver mpr_touchkey_driver = { .driver = { .name = "mpr121", - .pm = &mpr121_touchkey_pm_ops, + .pm = pm_sleep_ptr(&mpr121_touchkey_pm_ops), .of_match_table = of_match_ptr(mpr121_touchkey_dt_match_table), }, .id_table = mpr121_id, |
