diff options
Diffstat (limited to 'drivers/gpio/gpio-raspberrypi-exp.c')
| -rw-r--r-- | drivers/gpio/gpio-raspberrypi-exp.c | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/drivers/gpio/gpio-raspberrypi-exp.c b/drivers/gpio/gpio-raspberrypi-exp.c index 9d1b95e429f1..b4b607515a04 100644 --- a/drivers/gpio/gpio-raspberrypi-exp.c +++ b/drivers/gpio/gpio-raspberrypi-exp.c @@ -175,7 +175,7 @@ static int rpi_exp_gpio_get(struct gpio_chip *gc, unsigned int off)  	return !!get.state;  } -static void rpi_exp_gpio_set(struct gpio_chip *gc, unsigned int off, int val) +static int rpi_exp_gpio_set(struct gpio_chip *gc, unsigned int off, int val)  {  	struct rpi_exp_gpio *gpio;  	struct gpio_get_set_state set; @@ -188,10 +188,14 @@ static void rpi_exp_gpio_set(struct gpio_chip *gc, unsigned int off, int val)  	ret = rpi_firmware_property(gpio->fw, RPI_FIRMWARE_SET_GPIO_STATE,  					 &set, sizeof(set)); -	if (ret || set.gpio != 0) +	if (ret || set.gpio != 0) {  		dev_err(gc->parent,  			"Failed to set GPIO %u state (%d %x)\n", off, ret,  			set.gpio); +		return ret ? ret : -EIO; +	} + +	return 0;  }  static int rpi_exp_gpio_probe(struct platform_device *pdev) @@ -228,7 +232,7 @@ static int rpi_exp_gpio_probe(struct platform_device *pdev)  	rpi_gpio->gc.direction_output = rpi_exp_gpio_dir_out;  	rpi_gpio->gc.get_direction = rpi_exp_gpio_get_direction;  	rpi_gpio->gc.get = rpi_exp_gpio_get; -	rpi_gpio->gc.set = rpi_exp_gpio_set; +	rpi_gpio->gc.set_rv = rpi_exp_gpio_set;  	rpi_gpio->gc.can_sleep = true;  	return devm_gpiochip_add_data(dev, &rpi_gpio->gc, rpi_gpio); | 
