@@ -51,8 +51,8 @@ static int cgbc_gpio_get(struct gpio_chip *chip, unsigned int offset)
5151 return (int )(val & (u8 )BIT (offset ));
5252}
5353
54- static void __cgbc_gpio_set (struct gpio_chip * chip ,
55- unsigned int offset , int value )
54+ static int __cgbc_gpio_set (struct gpio_chip * chip , unsigned int offset ,
55+ int value )
5656{
5757 struct cgbc_gpio_data * gpio = gpiochip_get_data (chip );
5858 struct cgbc_device_data * cgbc = gpio -> cgbc ;
@@ -61,23 +61,23 @@ static void __cgbc_gpio_set(struct gpio_chip *chip,
6161
6262 ret = cgbc_gpio_cmd (cgbc , CGBC_GPIO_CMD_GET , (offset > 7 ) ? 1 : 0 , 0 , & val );
6363 if (ret )
64- return ;
64+ return ret ;
6565
6666 if (value )
6767 val |= BIT (offset % 8 );
6868 else
6969 val &= ~(BIT (offset % 8 ));
7070
71- cgbc_gpio_cmd (cgbc , CGBC_GPIO_CMD_SET , (offset > 7 ) ? 1 : 0 , val , & val );
71+ return cgbc_gpio_cmd (cgbc , CGBC_GPIO_CMD_SET , (offset > 7 ) ? 1 : 0 , val , & val );
7272}
7373
74- static void cgbc_gpio_set (struct gpio_chip * chip ,
75- unsigned int offset , int value )
74+ static int cgbc_gpio_set (struct gpio_chip * chip , unsigned int offset , int value )
7675{
7776 struct cgbc_gpio_data * gpio = gpiochip_get_data (chip );
7877
79- scoped_guard (mutex , & gpio -> lock )
80- __cgbc_gpio_set (chip , offset , value );
78+ guard (mutex )(& gpio -> lock );
79+
80+ return __cgbc_gpio_set (chip , offset , value );
8181}
8282
8383static int cgbc_gpio_direction_set (struct gpio_chip * chip ,
@@ -116,10 +116,14 @@ static int cgbc_gpio_direction_output(struct gpio_chip *chip,
116116 unsigned int offset , int value )
117117{
118118 struct cgbc_gpio_data * gpio = gpiochip_get_data (chip );
119+ int ret ;
119120
120121 guard (mutex )(& gpio -> lock );
121122
122- __cgbc_gpio_set (chip , offset , value );
123+ ret = __cgbc_gpio_set (chip , offset , value );
124+ if (ret )
125+ return ret ;
126+
123127 return cgbc_gpio_direction_set (chip , offset , GPIO_LINE_DIRECTION_OUT );
124128}
125129
@@ -167,7 +171,7 @@ static int cgbc_gpio_probe(struct platform_device *pdev)
167171 chip -> direction_output = cgbc_gpio_direction_output ;
168172 chip -> get_direction = cgbc_gpio_get_direction ;
169173 chip -> get = cgbc_gpio_get ;
170- chip -> set = cgbc_gpio_set ;
174+ chip -> set_rv = cgbc_gpio_set ;
171175 chip -> ngpio = CGBC_GPIO_NGPIO ;
172176
173177 ret = devm_mutex_init (dev , & gpio -> lock );
0 commit comments