]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
greybus: gpio: add error messages to callbacks not propagating errors
authorJohan Hovold <johan@hovoldconsulting.com>
Thu, 19 Mar 2015 15:55:23 +0000 (16:55 +0100)
committerGreg Kroah-Hartman <greg@kroah.com>
Thu, 19 Mar 2015 16:30:38 +0000 (17:30 +0100)
Add error messages on failures to deactivate, set and get operation
handlers as any errors would not be detected by the upper layers (either
because the callbacks are declared void or expected to return a boolean
value).

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
drivers/staging/greybus/gpio.c

index 7e51840cd262e99a1f061f32cdb2bddd3094c492..2bac28ec7f853d37919c9a1048708d63ab6f085a 100644 (file)
@@ -184,8 +184,13 @@ static void gb_gpio_deactivate_operation(struct gb_gpio_controller *ggc,
        request.which = which;
        ret = gb_operation_sync(ggc->connection, GB_GPIO_TYPE_DEACTIVATE,
                                 &request, sizeof(request), NULL, 0);
-       if (!ret)
-               ggc->lines[which].active = false;
+       if (ret) {
+               dev_err(ggc->chip.dev, "failed to deactivate gpio %u\n",
+                       which);
+               return;
+       }
+
+       ggc->lines[which].active = false;
 }
 
 static int gb_gpio_get_direction_operation(struct gb_gpio_controller *ggc,
@@ -254,8 +259,11 @@ static int gb_gpio_get_value_operation(struct gb_gpio_controller *ggc,
        ret = gb_operation_sync(ggc->connection, GB_GPIO_TYPE_GET_VALUE,
                                &request, sizeof(request),
                                &response, sizeof(response));
-       if (ret)
+       if (ret) {
+               dev_err(ggc->chip.dev, "failed to get value of gpio %u\n",
+                       which);
                return ret;
+       }
 
        value = response.value;
        if (value && value != 1) {
@@ -283,8 +291,13 @@ static void gb_gpio_set_value_operation(struct gb_gpio_controller *ggc,
        request.value = value_high ? 1 : 0;
        ret = gb_operation_sync(ggc->connection, GB_GPIO_TYPE_SET_VALUE,
                                &request, sizeof(request), NULL, 0);
-       if (!ret)
-               ggc->lines[which].value = request.value;
+       if (ret) {
+               dev_err(ggc->chip.dev, "failed to set value of gpio %u\n",
+                       which);
+               return;
+       }
+
+       ggc->lines[which].value = request.value;
 }
 
 static int gb_gpio_set_debounce_operation(struct gb_gpio_controller *ggc,