@@ -211,8 +211,8 @@ static struct rotary_encoder_platform_data *rotary_encoder_parse_dt(struct devic
211
211
if (!of_id || !np )
212
212
return NULL ;
213
213
214
- pdata = kzalloc ( sizeof (struct rotary_encoder_platform_data ),
215
- GFP_KERNEL );
214
+ pdata = devm_kzalloc ( dev , sizeof (struct rotary_encoder_platform_data ),
215
+ GFP_KERNEL );
216
216
if (!pdata )
217
217
return ERR_PTR (- ENOMEM );
218
218
@@ -277,12 +277,13 @@ static int rotary_encoder_probe(struct platform_device *pdev)
277
277
}
278
278
}
279
279
280
- encoder = kzalloc (sizeof (struct rotary_encoder ), GFP_KERNEL );
281
- input = input_allocate_device ();
282
- if (!encoder || !input ) {
283
- err = - ENOMEM ;
284
- goto exit_free_mem ;
285
- }
280
+ encoder = devm_kzalloc (dev , sizeof (struct rotary_encoder ), GFP_KERNEL );
281
+ if (!encoder )
282
+ return - ENOMEM ;
283
+
284
+ input = devm_input_allocate_device (dev );
285
+ if (!input )
286
+ return - ENOMEM ;
286
287
287
288
encoder -> input = input ;
288
289
encoder -> pdata = pdata ;
@@ -301,16 +302,18 @@ static int rotary_encoder_probe(struct platform_device *pdev)
301
302
}
302
303
303
304
/* request the GPIOs */
304
- err = gpio_request_one (pdata -> gpio_a , GPIOF_IN , dev_name (dev ));
305
+ err = devm_gpio_request_one (dev , pdata -> gpio_a , GPIOF_IN ,
306
+ dev_name (dev ));
305
307
if (err ) {
306
308
dev_err (dev , "unable to request GPIO %d\n" , pdata -> gpio_a );
307
- goto exit_free_mem ;
309
+ return err ;
308
310
}
309
311
310
- err = gpio_request_one (pdata -> gpio_b , GPIOF_IN , dev_name (dev ));
312
+ err = devm_gpio_request_one (dev , pdata -> gpio_b , GPIOF_IN ,
313
+ dev_name (dev ));
311
314
if (err ) {
312
315
dev_err (dev , "unable to request GPIO %d\n" , pdata -> gpio_b );
313
- goto exit_free_gpio_a ;
316
+ return err ;
314
317
}
315
318
316
319
encoder -> irq_a = gpio_to_irq (pdata -> gpio_a );
@@ -331,74 +334,36 @@ static int rotary_encoder_probe(struct platform_device *pdev)
331
334
default :
332
335
dev_err (dev , "'%d' is not a valid steps-per-period value\n" ,
333
336
pdata -> steps_per_period );
334
- err = - EINVAL ;
335
- goto exit_free_gpio_b ;
337
+ return - EINVAL ;
336
338
}
337
339
338
- err = request_irq ( encoder -> irq_a , handler ,
339
- IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING ,
340
- DRV_NAME , encoder );
340
+ err = devm_request_irq ( dev , encoder -> irq_a , handler ,
341
+ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING ,
342
+ DRV_NAME , encoder );
341
343
if (err ) {
342
344
dev_err (dev , "unable to request IRQ %d\n" , encoder -> irq_a );
343
- goto exit_free_gpio_b ;
345
+ return err ;
344
346
}
345
347
346
- err = request_irq ( encoder -> irq_b , handler ,
347
- IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING ,
348
- DRV_NAME , encoder );
348
+ err = devm_request_irq ( dev , encoder -> irq_b , handler ,
349
+ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING ,
350
+ DRV_NAME , encoder );
349
351
if (err ) {
350
352
dev_err (dev , "unable to request IRQ %d\n" , encoder -> irq_b );
351
- goto exit_free_irq_a ;
353
+ return err ;
352
354
}
353
355
354
356
err = input_register_device (input );
355
357
if (err ) {
356
358
dev_err (dev , "failed to register input device\n" );
357
- goto exit_free_irq_b ;
359
+ return err ;
358
360
}
359
361
360
362
device_init_wakeup (& pdev -> dev , pdata -> wakeup_source );
361
363
362
364
platform_set_drvdata (pdev , encoder );
363
365
364
366
return 0 ;
365
-
366
- exit_free_irq_b :
367
- free_irq (encoder -> irq_b , encoder );
368
- exit_free_irq_a :
369
- free_irq (encoder -> irq_a , encoder );
370
- exit_free_gpio_b :
371
- gpio_free (pdata -> gpio_b );
372
- exit_free_gpio_a :
373
- gpio_free (pdata -> gpio_a );
374
- exit_free_mem :
375
- input_free_device (input );
376
- kfree (encoder );
377
- if (!dev_get_platdata (& pdev -> dev ))
378
- kfree (pdata );
379
-
380
- return err ;
381
- }
382
-
383
- static int rotary_encoder_remove (struct platform_device * pdev )
384
- {
385
- struct rotary_encoder * encoder = platform_get_drvdata (pdev );
386
- const struct rotary_encoder_platform_data * pdata = encoder -> pdata ;
387
-
388
- device_init_wakeup (& pdev -> dev , false);
389
-
390
- free_irq (encoder -> irq_a , encoder );
391
- free_irq (encoder -> irq_b , encoder );
392
- gpio_free (pdata -> gpio_a );
393
- gpio_free (pdata -> gpio_b );
394
-
395
- input_unregister_device (encoder -> input );
396
- kfree (encoder );
397
-
398
- if (!dev_get_platdata (& pdev -> dev ))
399
- kfree (pdata );
400
-
401
- return 0 ;
402
367
}
403
368
404
369
#ifdef CONFIG_PM_SLEEP
@@ -432,7 +397,6 @@ static SIMPLE_DEV_PM_OPS(rotary_encoder_pm_ops,
432
397
433
398
static struct platform_driver rotary_encoder_driver = {
434
399
.probe = rotary_encoder_probe ,
435
- .remove = rotary_encoder_remove ,
436
400
.driver = {
437
401
.name = DRV_NAME ,
438
402
.pm = & rotary_encoder_pm_ops ,
0 commit comments