diff options
Diffstat (limited to 'drivers/gpio')
| -rw-r--r-- | drivers/gpio/gpio-mockup.c | 6 | ||||
| -rw-r--r-- | drivers/gpio/gpio-pxa.c | 4 | ||||
| -rw-r--r-- | drivers/gpio/gpiolib.c | 5 | 
3 files changed, 8 insertions, 7 deletions
| diff --git a/drivers/gpio/gpio-mockup.c b/drivers/gpio/gpio-mockup.c index 8269cffc2967..6a50f9f59c90 100644 --- a/drivers/gpio/gpio-mockup.c +++ b/drivers/gpio/gpio-mockup.c @@ -35,8 +35,8 @@  #define gpio_mockup_err(...)	pr_err(GPIO_MOCKUP_NAME ": " __VA_ARGS__)  enum { -	GPIO_MOCKUP_DIR_OUT = 0, -	GPIO_MOCKUP_DIR_IN = 1, +	GPIO_MOCKUP_DIR_IN = 0, +	GPIO_MOCKUP_DIR_OUT = 1,  };  /* @@ -131,7 +131,7 @@ static int gpio_mockup_get_direction(struct gpio_chip *gc, unsigned int offset)  {  	struct gpio_mockup_chip *chip = gpiochip_get_data(gc); -	return chip->lines[offset].dir; +	return !chip->lines[offset].dir;  }  static int gpio_mockup_to_irq(struct gpio_chip *gc, unsigned int offset) diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c index bfe4c5c9f41c..e9600b556f39 100644 --- a/drivers/gpio/gpio-pxa.c +++ b/drivers/gpio/gpio-pxa.c @@ -268,8 +268,8 @@ static int pxa_gpio_direction_input(struct gpio_chip *chip, unsigned offset)  	if (pxa_gpio_has_pinctrl()) {  		ret = pinctrl_gpio_direction_input(chip->base + offset); -		if (!ret) -			return 0; +		if (ret) +			return ret;  	}  	spin_lock_irqsave(&gpio_lock, flags); diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 230e41562462..a2cbb474901c 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1295,7 +1295,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *chip, void *data,  	gdev->descs = kcalloc(chip->ngpio, sizeof(gdev->descs[0]), GFP_KERNEL);  	if (!gdev->descs) {  		status = -ENOMEM; -		goto err_free_gdev; +		goto err_free_ida;  	}  	if (chip->ngpio == 0) { @@ -1427,8 +1427,9 @@ err_free_label:  	kfree_const(gdev->label);  err_free_descs:  	kfree(gdev->descs); -err_free_gdev: +err_free_ida:  	ida_simple_remove(&gpio_ida, gdev->id); +err_free_gdev:  	/* failures here can mean systems won't boot... */  	pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__,  	       gdev->base, gdev->base + gdev->ngpio - 1, | 
