diff options
-rw-r--r-- | drivers/gpio/gpiolib-legacy.c | 12 | ||||
-rw-r--r-- | drivers/gpio/gpiolib.c | 4 |
2 files changed, 14 insertions, 2 deletions
diff --git a/drivers/gpio/gpiolib-legacy.c b/drivers/gpio/gpiolib-legacy.c index 078ae6c2df79..8b830996fe02 100644 --- a/drivers/gpio/gpiolib-legacy.c +++ b/drivers/gpio/gpiolib-legacy.c | |||
@@ -24,6 +24,10 @@ int gpio_request_one(unsigned gpio, unsigned long flags, const char *label) | |||
24 | 24 | ||
25 | desc = gpio_to_desc(gpio); | 25 | desc = gpio_to_desc(gpio); |
26 | 26 | ||
27 | /* Compatibility: assume unavailable "valid" GPIOs will appear later */ | ||
28 | if (!desc && gpio_is_valid(gpio)) | ||
29 | return -EPROBE_DEFER; | ||
30 | |||
27 | err = gpiod_request(desc, label); | 31 | err = gpiod_request(desc, label); |
28 | if (err) | 32 | if (err) |
29 | return err; | 33 | return err; |
@@ -62,7 +66,13 @@ EXPORT_SYMBOL_GPL(gpio_request_one); | |||
62 | 66 | ||
63 | int gpio_request(unsigned gpio, const char *label) | 67 | int gpio_request(unsigned gpio, const char *label) |
64 | { | 68 | { |
65 | return gpiod_request(gpio_to_desc(gpio), label); | 69 | struct gpio_desc *desc = gpio_to_desc(gpio); |
70 | |||
71 | /* Compatibility: assume unavailable "valid" GPIOs will appear later */ | ||
72 | if (!desc && gpio_is_valid(gpio)) | ||
73 | return -EPROBE_DEFER; | ||
74 | |||
75 | return gpiod_request(desc, label); | ||
66 | } | 76 | } |
67 | EXPORT_SYMBOL_GPL(gpio_request); | 77 | EXPORT_SYMBOL_GPL(gpio_request); |
68 | 78 | ||
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 0b271ef87c09..56b7c5de95a0 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c | |||
@@ -77,7 +77,9 @@ struct gpio_desc *gpio_to_desc(unsigned gpio) | |||
77 | 77 | ||
78 | spin_unlock_irqrestore(&gpio_lock, flags); | 78 | spin_unlock_irqrestore(&gpio_lock, flags); |
79 | 79 | ||
80 | WARN(1, "invalid GPIO %d\n", gpio); | 80 | if (!gpio_is_valid(gpio)) |
81 | WARN(1, "invalid GPIO %d\n", gpio); | ||
82 | |||
81 | return NULL; | 83 | return NULL; |
82 | } | 84 | } |
83 | EXPORT_SYMBOL_GPL(gpio_to_desc); | 85 | EXPORT_SYMBOL_GPL(gpio_to_desc); |