@@ -51,8 +51,8 @@ static int cgbc_gpio_get(struct gpio_chip *chip, unsigned int offset)
51
51
return (int )(val & (u8 )BIT (offset ));
52
52
}
53
53
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 )
56
56
{
57
57
struct cgbc_gpio_data * gpio = gpiochip_get_data (chip );
58
58
struct cgbc_device_data * cgbc = gpio -> cgbc ;
@@ -61,23 +61,23 @@ static void __cgbc_gpio_set(struct gpio_chip *chip,
61
61
62
62
ret = cgbc_gpio_cmd (cgbc , CGBC_GPIO_CMD_GET , (offset > 7 ) ? 1 : 0 , 0 , & val );
63
63
if (ret )
64
- return ;
64
+ return ret ;
65
65
66
66
if (value )
67
67
val |= BIT (offset % 8 );
68
68
else
69
69
val &= ~(BIT (offset % 8 ));
70
70
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 );
72
72
}
73
73
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 )
76
75
{
77
76
struct cgbc_gpio_data * gpio = gpiochip_get_data (chip );
78
77
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 );
81
81
}
82
82
83
83
static int cgbc_gpio_direction_set (struct gpio_chip * chip ,
@@ -116,10 +116,14 @@ static int cgbc_gpio_direction_output(struct gpio_chip *chip,
116
116
unsigned int offset , int value )
117
117
{
118
118
struct cgbc_gpio_data * gpio = gpiochip_get_data (chip );
119
+ int ret ;
119
120
120
121
guard (mutex )(& gpio -> lock );
121
122
122
- __cgbc_gpio_set (chip , offset , value );
123
+ ret = __cgbc_gpio_set (chip , offset , value );
124
+ if (ret )
125
+ return ret ;
126
+
123
127
return cgbc_gpio_direction_set (chip , offset , GPIO_LINE_DIRECTION_OUT );
124
128
}
125
129
@@ -167,7 +171,7 @@ static int cgbc_gpio_probe(struct platform_device *pdev)
167
171
chip -> direction_output = cgbc_gpio_direction_output ;
168
172
chip -> get_direction = cgbc_gpio_get_direction ;
169
173
chip -> get = cgbc_gpio_get ;
170
- chip -> set = cgbc_gpio_set ;
174
+ chip -> set_rv = cgbc_gpio_set ;
171
175
chip -> ngpio = CGBC_GPIO_NGPIO ;
172
176
173
177
ret = devm_mutex_init (dev , & gpio -> lock );
0 commit comments