]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
i2c: testunit: improve error handling for GPIO
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Mon, 9 Sep 2024 10:14:50 +0000 (12:14 +0200)
committerWolfram Sang <wsa+renesas@sang-engineering.com>
Tue, 8 Oct 2024 08:15:42 +0000 (10:15 +0200)
Bail out in probe if getting the optional GPIO returns an error. Bail
out in the test early if the optional GPIO is not present, otherwise the
timeout errno is misleading.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
drivers/i2c/i2c-slave-testunit.c

index 9fe3150378e8631640af9f0c27407f1aa320467c..0d6fbaa48248792ff989f9646f6e0bbc5691d603 100644 (file)
@@ -183,6 +183,10 @@ static void i2c_slave_testunit_work(struct work_struct *work)
                break;
 
        case TU_CMD_SMBUS_ALERT_REQUEST:
+               if (!tu->gpio) {
+                       ret = -ENOENT;
+                       break;
+               }
                i2c_slave_unregister(tu->client);
                orig_addr = tu->client->addr;
                tu->client->addr = 0x0c;
@@ -232,6 +236,9 @@ static int i2c_slave_testunit_probe(struct i2c_client *client)
        INIT_DELAYED_WORK(&tu->worker, i2c_slave_testunit_work);
 
        tu->gpio = devm_gpiod_get_index_optional(&client->dev, NULL, 0, GPIOD_OUT_LOW);
+       if (IS_ERR(tu->gpio))
+               return PTR_ERR(tu->gpio);
+
        if (gpiod_cansleep(tu->gpio)) {
                dev_err(&client->dev, "GPIO access which may sleep is not allowed\n");
                return -EDEADLK;