]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Input: stmfts - abstract reading information from the firmware
authorDavid Heidelberg <david@ixit.cz>
Sun, 26 Apr 2026 20:08:55 +0000 (13:08 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Sun, 26 Apr 2026 21:32:54 +0000 (14:32 -0700)
Improves readability and makes splitting power on function in following
commit easier.

Signed-off-by: David Heidelberg <david@ixit.cz>
Link: https://patch.msgid.link/20260409-stmfts5-v4-4-64fe62027db5@ixit.cz
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/touchscreen/stmfts.c

index b01d363ad3e20db5a0bd8fc1bee3918a978b3239..1381a9ce23f2d985edcf156b71a32486956625e8 100644 (file)
@@ -518,22 +518,11 @@ static struct attribute *stmfts_sysfs_attrs[] = {
 };
 ATTRIBUTE_GROUPS(stmfts_sysfs);
 
-static int stmfts_power_on(struct stmfts_data *sdata)
+static int stmfts_read_system_info(struct stmfts_data *sdata)
 {
        int err;
        u8 reg[8];
 
-       err = regulator_bulk_enable(ARRAY_SIZE(stmfts_supplies),
-                                   sdata->supplies);
-       if (err)
-               return err;
-
-       /*
-        * The datasheet does not specify the power on time, but considering
-        * that the reset time is < 10ms, I sleep 20ms to be sure
-        */
-       msleep(20);
-
        err = i2c_smbus_read_i2c_block_data(sdata->client, STMFTS_READ_INFO,
                                            sizeof(reg), reg);
        if (err < 0)
@@ -547,6 +536,28 @@ static int stmfts_power_on(struct stmfts_data *sdata)
        sdata->config_id = reg[4];
        sdata->config_ver = reg[5];
 
+       return 0;
+}
+
+static int stmfts_power_on(struct stmfts_data *sdata)
+{
+       int err;
+
+       err = regulator_bulk_enable(ARRAY_SIZE(stmfts_supplies),
+                                   sdata->supplies);
+       if (err)
+               return err;
+
+       /*
+        * The datasheet does not specify the power on time, but considering
+        * that the reset time is < 10ms, I sleep 20ms to be sure
+        */
+       msleep(20);
+
+       err = stmfts_read_system_info(sdata);
+       if (err)
+               return err;
+
        enable_irq(sdata->client->irq);
 
        msleep(50);