summaryrefslogtreecommitdiffstats
path: root/drivers/input/keyboard/tm2-touchkey.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2019-02-06 19:10:12 +0100
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2019-02-08 08:41:12 +0100
commit0ab0e5a383a78a9e3bd9a02a1b06237fe75fd6a1 (patch)
treea581b30ce3d034d3b2fe8c2713bd5e86d5e88fd2 /drivers/input/keyboard/tm2-touchkey.c
parentInput: stmfts - acknowledge that setting brightness is a blocking call (diff)
downloadlinux-0ab0e5a383a78a9e3bd9a02a1b06237fe75fd6a1.tar.xz
linux-0ab0e5a383a78a9e3bd9a02a1b06237fe75fd6a1.zip
Input: tm2-touchkey - acknowledge that setting brightness is a blocking call
We need to access I2C bus when switching brightness, and that may block, therefore we have to set stmfts_brightness_set() as LED's brightness_set_blocking() method. Fixes: 72d1f2346ded ("Input: tm2-touchkey - add touchkey driver support for TM2") Acked-by: Andi Shyti <andi@etezian.org> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to '')
-rw-r--r--drivers/input/keyboard/tm2-touchkey.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/input/keyboard/tm2-touchkey.c b/drivers/input/keyboard/tm2-touchkey.c
index 7dbef96559d2..d4455f3a5cf1 100644
--- a/drivers/input/keyboard/tm2-touchkey.c
+++ b/drivers/input/keyboard/tm2-touchkey.c
@@ -78,7 +78,7 @@ static struct touchkey_variant aries_touchkey_variant = {
.cmd_led_off = ARIES_TOUCHKEY_CMD_LED_OFF,
};
-static void tm2_touchkey_led_brightness_set(struct led_classdev *led_dev,
+static int tm2_touchkey_led_brightness_set(struct led_classdev *led_dev,
enum led_brightness brightness)
{
struct tm2_touchkey_data *touchkey =
@@ -97,9 +97,8 @@ static void tm2_touchkey_led_brightness_set(struct led_classdev *led_dev,
if (!touchkey->variant->fixed_regulator)
regulator_set_voltage(touchkey->vdd, volt, volt);
- if (touchkey->variant->no_reg)
- i2c_smbus_write_byte(touchkey->client, data);
- else
+ return touchkey->variant->no_reg ?
+ i2c_smbus_write_byte(touchkey->client, data) :
i2c_smbus_write_byte_data(touchkey->client,
touchkey->variant->base_reg, data);
}
@@ -270,7 +269,8 @@ static int tm2_touchkey_probe(struct i2c_client *client,
touchkey->led_dev.name = TM2_TOUCHKEY_DEV_NAME;
touchkey->led_dev.brightness = LED_ON;
touchkey->led_dev.max_brightness = LED_ON;
- touchkey->led_dev.brightness_set = tm2_touchkey_led_brightness_set;
+ touchkey->led_dev.brightness_set_blocking =
+ tm2_touchkey_led_brightness_set;
error = devm_led_classdev_register(&client->dev, &touchkey->led_dev);
if (error) {