Input: tm2-touchkey - add vddio regulator
authorStephan Gerhold <stephan@gerhold.net>
Thu, 10 Dec 2020 03:39:07 +0000 (19:39 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 10 Dec 2020 03:47:11 +0000 (19:47 -0800)
The Samsung touchkey controllers are often used with external pull-up
for the interrupt line and the I2C lines, so we might need to enable
a regulator to bring the lines into usable state. Otherwise, this might
cause spurious interrupts and reading from I2C will fail.

Implement support for a "vddio-supply" that is enabled by the
tm2-touchkey driver so that the regulator gets enabled when needed.

Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20201203131242.44397-3-stephan@gerhold.net
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/keyboard/tm2-touchkey.c

index fb078e049413ffe8c035bc87fd96c0b7a5e91f8b..6218b1c682ef66be2aafea0a871de11092e42b87 100644 (file)
@@ -48,7 +48,7 @@ struct tm2_touchkey_data {
        struct input_dev *input_dev;
        struct led_classdev led_dev;
        struct regulator *vdd;
-       struct regulator_bulk_data regulators[2];
+       struct regulator_bulk_data regulators[3];
        const struct touchkey_variant *variant;
        u32 keycodes[4];
        int num_keycodes;
@@ -204,6 +204,7 @@ static int tm2_touchkey_probe(struct i2c_client *client,
 
        touchkey->regulators[0].supply = "vcc";
        touchkey->regulators[1].supply = "vdd";
+       touchkey->regulators[2].supply = "vddio";
        error = devm_regulator_bulk_get(&client->dev,
                                        ARRAY_SIZE(touchkey->regulators),
                                        touchkey->regulators);