61
61
#define TWL6040_LED_MODE_OFF 0x02
62
62
#define TWL6040_LED_MODE_MASK 0x03
63
63
64
- struct twl_pwmled_chip {
65
- struct mutex mutex ;
66
- };
67
-
68
64
static inline struct twl_pwmled_chip * to_twl (struct pwm_chip * chip )
69
65
{
70
66
return pwmchip_get_drvdata (chip );
@@ -106,15 +102,13 @@ static int twl4030_pwmled_config(struct pwm_chip *chip, struct pwm_device *pwm,
106
102
107
103
static int twl4030_pwmled_enable (struct pwm_chip * chip , struct pwm_device * pwm )
108
104
{
109
- struct twl_pwmled_chip * twl = to_twl (chip );
110
105
int ret ;
111
106
u8 val ;
112
107
113
- mutex_lock (& twl -> mutex );
114
108
ret = twl_i2c_read_u8 (TWL4030_MODULE_LED , & val , TWL4030_LEDEN_REG );
115
109
if (ret < 0 ) {
116
110
dev_err (pwmchip_parent (chip ), "%s: Failed to read LEDEN\n" , pwm -> label );
117
- goto out ;
111
+ return ret ;
118
112
}
119
113
120
114
val |= TWL4030_LED_TOGGLE (pwm -> hwpwm , TWL4030_LED_PINS );
@@ -123,33 +117,26 @@ static int twl4030_pwmled_enable(struct pwm_chip *chip, struct pwm_device *pwm)
123
117
if (ret < 0 )
124
118
dev_err (pwmchip_parent (chip ), "%s: Failed to enable PWM\n" , pwm -> label );
125
119
126
- out :
127
- mutex_unlock (& twl -> mutex );
128
120
return ret ;
129
121
}
130
122
131
123
static void twl4030_pwmled_disable (struct pwm_chip * chip ,
132
124
struct pwm_device * pwm )
133
125
{
134
- struct twl_pwmled_chip * twl = to_twl (chip );
135
126
int ret ;
136
127
u8 val ;
137
128
138
- mutex_lock (& twl -> mutex );
139
129
ret = twl_i2c_read_u8 (TWL4030_MODULE_LED , & val , TWL4030_LEDEN_REG );
140
130
if (ret < 0 ) {
141
131
dev_err (pwmchip_parent (chip ), "%s: Failed to read LEDEN\n" , pwm -> label );
142
- goto out ;
132
+ return ;
143
133
}
144
134
145
135
val &= ~TWL4030_LED_TOGGLE (pwm -> hwpwm , TWL4030_LED_PINS );
146
136
147
137
ret = twl_i2c_write_u8 (TWL4030_MODULE_LED , val , TWL4030_LEDEN_REG );
148
138
if (ret < 0 )
149
139
dev_err (pwmchip_parent (chip ), "%s: Failed to disable PWM\n" , pwm -> label );
150
-
151
- out :
152
- mutex_unlock (& twl -> mutex );
153
140
}
154
141
155
142
static int twl4030_pwmled_apply (struct pwm_chip * chip , struct pwm_device * pwm ,
@@ -209,16 +196,14 @@ static int twl6030_pwmled_config(struct pwm_chip *chip, struct pwm_device *pwm,
209
196
210
197
static int twl6030_pwmled_enable (struct pwm_chip * chip , struct pwm_device * pwm )
211
198
{
212
- struct twl_pwmled_chip * twl = to_twl (chip );
213
199
int ret ;
214
200
u8 val ;
215
201
216
- mutex_lock (& twl -> mutex );
217
202
ret = twl_i2c_read_u8 (TWL6030_MODULE_ID1 , & val , TWL6030_LED_PWM_CTRL2 );
218
203
if (ret < 0 ) {
219
204
dev_err (pwmchip_parent (chip ), "%s: Failed to read PWM_CTRL2\n" ,
220
205
pwm -> label );
221
- goto out ;
206
+ return ret ;
222
207
}
223
208
224
209
val &= ~TWL6040_LED_MODE_MASK ;
@@ -228,24 +213,20 @@ static int twl6030_pwmled_enable(struct pwm_chip *chip, struct pwm_device *pwm)
228
213
if (ret < 0 )
229
214
dev_err (pwmchip_parent (chip ), "%s: Failed to enable PWM\n" , pwm -> label );
230
215
231
- out :
232
- mutex_unlock (& twl -> mutex );
233
216
return ret ;
234
217
}
235
218
236
219
static void twl6030_pwmled_disable (struct pwm_chip * chip ,
237
220
struct pwm_device * pwm )
238
221
{
239
- struct twl_pwmled_chip * twl = to_twl (chip );
240
222
int ret ;
241
223
u8 val ;
242
224
243
- mutex_lock (& twl -> mutex );
244
225
ret = twl_i2c_read_u8 (TWL6030_MODULE_ID1 , & val , TWL6030_LED_PWM_CTRL2 );
245
226
if (ret < 0 ) {
246
227
dev_err (pwmchip_parent (chip ), "%s: Failed to read PWM_CTRL2\n" ,
247
228
pwm -> label );
248
- goto out ;
229
+ return ;
249
230
}
250
231
251
232
val &= ~TWL6040_LED_MODE_MASK ;
@@ -254,9 +235,6 @@ static void twl6030_pwmled_disable(struct pwm_chip *chip,
254
235
ret = twl_i2c_write_u8 (TWL6030_MODULE_ID1 , val , TWL6030_LED_PWM_CTRL2 );
255
236
if (ret < 0 )
256
237
dev_err (pwmchip_parent (chip ), "%s: Failed to disable PWM\n" , pwm -> label );
257
-
258
- out :
259
- mutex_unlock (& twl -> mutex );
260
238
}
261
239
262
240
static int twl6030_pwmled_apply (struct pwm_chip * chip , struct pwm_device * pwm ,
@@ -287,16 +265,14 @@ static int twl6030_pwmled_apply(struct pwm_chip *chip, struct pwm_device *pwm,
287
265
288
266
static int twl6030_pwmled_request (struct pwm_chip * chip , struct pwm_device * pwm )
289
267
{
290
- struct twl_pwmled_chip * twl = to_twl (chip );
291
268
int ret ;
292
269
u8 val ;
293
270
294
- mutex_lock (& twl -> mutex );
295
271
ret = twl_i2c_read_u8 (TWL6030_MODULE_ID1 , & val , TWL6030_LED_PWM_CTRL2 );
296
272
if (ret < 0 ) {
297
273
dev_err (pwmchip_parent (chip ), "%s: Failed to read PWM_CTRL2\n" ,
298
274
pwm -> label );
299
- goto out ;
275
+ return ret ;
300
276
}
301
277
302
278
val &= ~TWL6040_LED_MODE_MASK ;
@@ -306,23 +282,19 @@ static int twl6030_pwmled_request(struct pwm_chip *chip, struct pwm_device *pwm)
306
282
if (ret < 0 )
307
283
dev_err (pwmchip_parent (chip ), "%s: Failed to request PWM\n" , pwm -> label );
308
284
309
- out :
310
- mutex_unlock (& twl -> mutex );
311
285
return ret ;
312
286
}
313
287
314
288
static void twl6030_pwmled_free (struct pwm_chip * chip , struct pwm_device * pwm )
315
289
{
316
- struct twl_pwmled_chip * twl = to_twl (chip );
317
290
int ret ;
318
291
u8 val ;
319
292
320
- mutex_lock (& twl -> mutex );
321
293
ret = twl_i2c_read_u8 (TWL6030_MODULE_ID1 , & val , TWL6030_LED_PWM_CTRL2 );
322
294
if (ret < 0 ) {
323
295
dev_err (pwmchip_parent (chip ), "%s: Failed to read PWM_CTRL2\n" ,
324
296
pwm -> label );
325
- goto out ;
297
+ return ;
326
298
}
327
299
328
300
val &= ~TWL6040_LED_MODE_MASK ;
@@ -331,9 +303,6 @@ static void twl6030_pwmled_free(struct pwm_chip *chip, struct pwm_device *pwm)
331
303
ret = twl_i2c_write_u8 (TWL6030_MODULE_ID1 , val , TWL6030_LED_PWM_CTRL2 );
332
304
if (ret < 0 )
333
305
dev_err (pwmchip_parent (chip ), "%s: Failed to free PWM\n" , pwm -> label );
334
-
335
- out :
336
- mutex_unlock (& twl -> mutex );
337
306
}
338
307
339
308
static const struct pwm_ops twl6030_pwmled_ops = {
@@ -345,7 +314,6 @@ static const struct pwm_ops twl6030_pwmled_ops = {
345
314
static int twl_pwmled_probe (struct platform_device * pdev )
346
315
{
347
316
struct pwm_chip * chip ;
348
- struct twl_pwmled_chip * twl ;
349
317
unsigned int npwm ;
350
318
const struct pwm_ops * ops ;
351
319
@@ -357,15 +325,12 @@ static int twl_pwmled_probe(struct platform_device *pdev)
357
325
npwm = 1 ;
358
326
}
359
327
360
- chip = devm_pwmchip_alloc (& pdev -> dev , npwm , sizeof ( * twl ) );
328
+ chip = devm_pwmchip_alloc (& pdev -> dev , npwm , 0 );
361
329
if (IS_ERR (chip ))
362
330
return PTR_ERR (chip );
363
- twl = to_twl (chip );
364
331
365
332
chip -> ops = ops ;
366
333
367
- mutex_init (& twl -> mutex );
368
-
369
334
return devm_pwmchip_add (& pdev -> dev , chip );
370
335
}
371
336
0 commit comments