|
@@ -623,9 +623,11 @@ static ssize_t export_store(struct class *class,
|
|
*/
|
|
*/
|
|
|
|
|
|
status = gpio_request(gpio, "sysfs");
|
|
status = gpio_request(gpio, "sysfs");
|
|
- if (status < 0)
|
|
|
|
|
|
+ if (status < 0) {
|
|
|
|
+ if (status == -EPROBE_DEFER)
|
|
|
|
+ status = -ENODEV;
|
|
goto done;
|
|
goto done;
|
|
-
|
|
|
|
|
|
+ }
|
|
status = gpio_export(gpio, true);
|
|
status = gpio_export(gpio, true);
|
|
if (status < 0)
|
|
if (status < 0)
|
|
gpio_free(gpio);
|
|
gpio_free(gpio);
|
|
@@ -1191,8 +1193,10 @@ int gpio_request(unsigned gpio, const char *label)
|
|
|
|
|
|
spin_lock_irqsave(&gpio_lock, flags);
|
|
spin_lock_irqsave(&gpio_lock, flags);
|
|
|
|
|
|
- if (!gpio_is_valid(gpio))
|
|
|
|
|
|
+ if (!gpio_is_valid(gpio)) {
|
|
|
|
+ status = -EINVAL;
|
|
goto done;
|
|
goto done;
|
|
|
|
+ }
|
|
desc = &gpio_desc[gpio];
|
|
desc = &gpio_desc[gpio];
|
|
chip = desc->chip;
|
|
chip = desc->chip;
|
|
if (chip == NULL)
|
|
if (chip == NULL)
|