struct gpio_array *array_info,
                                           unsigned long *value_bitmap);
 
-       void gpiod_set_array_value(unsigned int array_size,
-                                  struct gpio_desc **desc_array,
-                                  struct gpio_array *array_info,
-                                  unsigned long *value_bitmap)
+       int gpiod_set_array_value(unsigned int array_size,
+                                 struct gpio_desc **desc_array,
+                                 struct gpio_array *array_info,
+                                 unsigned long *value_bitmap)
        int gpiod_set_raw_array_value(unsigned int array_size,
                                      struct gpio_desc **desc_array,
                                      struct gpio_array *array_info,
                                      unsigned long *value_bitmap)
-       void gpiod_set_array_value_cansleep(unsigned int array_size,
-                                           struct gpio_desc **desc_array,
-                                           struct gpio_array *array_info,
-                                           unsigned long *value_bitmap)
+       int gpiod_set_array_value_cansleep(unsigned int array_size,
+                                          struct gpio_desc **desc_array,
+                                          struct gpio_array *array_info,
+                                          unsigned long *value_bitmap)
        int gpiod_set_raw_array_value_cansleep(unsigned int array_size,
                                               struct gpio_desc **desc_array,
                                               struct gpio_array *array_info,
 
  * This function should be called from contexts where we cannot sleep, and will
  * complain if the GPIO chip functions potentially sleep.
  */
-void gpiod_set_array_value(unsigned int array_size,
-                          struct gpio_desc **desc_array,
-                          struct gpio_array *array_info,
-                          unsigned long *value_bitmap)
+int gpiod_set_array_value(unsigned int array_size,
+                         struct gpio_desc **desc_array,
+                         struct gpio_array *array_info,
+                         unsigned long *value_bitmap)
 {
        if (!desc_array)
-               return;
-       gpiod_set_array_value_complex(false, false, array_size, desc_array,
-                                     array_info, value_bitmap);
+               return -EINVAL;
+       return gpiod_set_array_value_complex(false, false, array_size,
+                                            desc_array, array_info,
+                                            value_bitmap);
 }
 EXPORT_SYMBOL_GPL(gpiod_set_array_value);
 
  *
  * This function is to be called from contexts that can sleep.
  */
-void gpiod_set_array_value_cansleep(unsigned int array_size,
-                                   struct gpio_desc **desc_array,
-                                   struct gpio_array *array_info,
-                                   unsigned long *value_bitmap)
+int gpiod_set_array_value_cansleep(unsigned int array_size,
+                                  struct gpio_desc **desc_array,
+                                  struct gpio_array *array_info,
+                                  unsigned long *value_bitmap)
 {
        might_sleep_if(extra_checks);
        if (!desc_array)
-               return;
-       gpiod_set_array_value_complex(false, true, array_size, desc_array,
-                                     array_info, value_bitmap);
+               return -EINVAL;
+       return gpiod_set_array_value_complex(false, true, array_size,
+                                            desc_array, array_info,
+                                            value_bitmap);
 }
 EXPORT_SYMBOL_GPL(gpiod_set_array_value_cansleep);
 
 
                          struct gpio_array *array_info,
                          unsigned long *value_bitmap);
 void gpiod_set_value(struct gpio_desc *desc, int value);
-void gpiod_set_array_value(unsigned int array_size,
-                          struct gpio_desc **desc_array,
-                          struct gpio_array *array_info,
-                          unsigned long *value_bitmap);
+int gpiod_set_array_value(unsigned int array_size,
+                         struct gpio_desc **desc_array,
+                         struct gpio_array *array_info,
+                         unsigned long *value_bitmap);
 int gpiod_get_raw_value(const struct gpio_desc *desc);
 int gpiod_get_raw_array_value(unsigned int array_size,
                              struct gpio_desc **desc_array,
                                   struct gpio_array *array_info,
                                   unsigned long *value_bitmap);
 void gpiod_set_value_cansleep(struct gpio_desc *desc, int value);
-void gpiod_set_array_value_cansleep(unsigned int array_size,
-                                   struct gpio_desc **desc_array,
-                                   struct gpio_array *array_info,
-                                   unsigned long *value_bitmap);
+int gpiod_set_array_value_cansleep(unsigned int array_size,
+                                  struct gpio_desc **desc_array,
+                                  struct gpio_array *array_info,
+                                  unsigned long *value_bitmap);
 int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc);
 int gpiod_get_raw_array_value_cansleep(unsigned int array_size,
                                       struct gpio_desc **desc_array,
        /* GPIO can never have been requested */
        WARN_ON(1);
 }
-static inline void gpiod_set_array_value(unsigned int array_size,
-                                        struct gpio_desc **desc_array,
-                                        struct gpio_array *array_info,
-                                        unsigned long *value_bitmap)
+static inline int gpiod_set_array_value(unsigned int array_size,
+                                       struct gpio_desc **desc_array,
+                                       struct gpio_array *array_info,
+                                       unsigned long *value_bitmap)
 {
        /* GPIO can never have been requested */
        WARN_ON(1);
+       return 0;
 }
 static inline int gpiod_get_raw_value(const struct gpio_desc *desc)
 {
        /* GPIO can never have been requested */
        WARN_ON(1);
 }
-static inline void gpiod_set_array_value_cansleep(unsigned int array_size,
+static inline int gpiod_set_array_value_cansleep(unsigned int array_size,
                                            struct gpio_desc **desc_array,
                                            struct gpio_array *array_info,
                                            unsigned long *value_bitmap)
 {
        /* GPIO can never have been requested */
        WARN_ON(1);
+       return 0;
 }
 static inline int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc)
 {