Skip to content

Commit 493a6eb

Browse files
xc-racer99dtor
authored andcommitted
Input: bma150 - use managed resources helpers
The driver can be cleaned up by using managed resource helpers. Signed-off-by: Jonathan Bakker <[email protected]> Signed-off-by: Paweł Chmiel <[email protected]> [dtor: do not explicitly set parent of input device since we are using devm] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Dmitry Torokhov <[email protected]>
1 parent 867e882 commit 493a6eb

File tree

1 file changed

+14
-37
lines changed

1 file changed

+14
-37
lines changed

drivers/input/misc/bma150.c

Lines changed: 14 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -439,13 +439,11 @@ static int bma150_initialize(struct bma150_data *bma150,
439439
return bma150_set_mode(bma150, BMA150_MODE_SLEEP);
440440
}
441441

442-
static void bma150_init_input_device(struct bma150_data *bma150,
443-
struct input_dev *idev)
442+
static void bma150_init_input_device(struct input_dev *idev)
444443
{
445444
idev->name = BMA150_DRIVER;
446445
idev->phys = BMA150_DRIVER "/input0";
447446
idev->id.bustype = BUS_I2C;
448-
idev->dev.parent = &bma150->client->dev;
449447

450448
idev->evbit[0] = BIT_MASK(EV_ABS);
451449
input_set_abs_params(idev, ABS_X, ABSMIN_ACC_VAL, ABSMAX_ACC_VAL, 0, 0);
@@ -458,11 +456,11 @@ static int bma150_register_input_device(struct bma150_data *bma150)
458456
struct input_dev *idev;
459457
int error;
460458

461-
idev = input_allocate_device();
459+
idev = devm_input_allocate_device(&bma150->client->dev);
462460
if (!idev)
463461
return -ENOMEM;
464462

465-
bma150_init_input_device(bma150, idev);
463+
bma150_init_input_device(idev);
466464

467465
idev->open = bma150_irq_open;
468466
idev->close = bma150_irq_close;
@@ -471,10 +469,8 @@ static int bma150_register_input_device(struct bma150_data *bma150)
471469
bma150->input = idev;
472470

473471
error = input_register_device(idev);
474-
if (error) {
475-
input_free_device(idev);
472+
if (error)
476473
return error;
477-
}
478474

479475
return 0;
480476
}
@@ -484,7 +480,7 @@ static int bma150_register_polled_device(struct bma150_data *bma150)
484480
struct input_polled_dev *ipoll_dev;
485481
int error;
486482

487-
ipoll_dev = input_allocate_polled_device();
483+
ipoll_dev = devm_input_allocate_polled_device(&bma150->client->dev);
488484
if (!ipoll_dev)
489485
return -ENOMEM;
490486

@@ -496,16 +492,14 @@ static int bma150_register_polled_device(struct bma150_data *bma150)
496492
ipoll_dev->poll_interval_min = BMA150_POLL_MIN;
497493
ipoll_dev->poll_interval_max = BMA150_POLL_MAX;
498494

499-
bma150_init_input_device(bma150, ipoll_dev->input);
495+
bma150_init_input_device(ipoll_dev->input);
500496

501497
bma150->input_polled = ipoll_dev;
502498
bma150->input = ipoll_dev->input;
503499

504500
error = input_register_polled_device(ipoll_dev);
505-
if (error) {
506-
input_free_polled_device(ipoll_dev);
501+
if (error)
507502
return error;
508-
}
509503

510504
return 0;
511505
}
@@ -531,7 +525,7 @@ static int bma150_probe(struct i2c_client *client,
531525
return -EINVAL;
532526
}
533527

534-
bma150 = kzalloc(sizeof(struct bma150_data), GFP_KERNEL);
528+
bma150 = devm_kzalloc(&client->dev, sizeof(*bma150), GFP_KERNEL);
535529
if (!bma150)
536530
return -ENOMEM;
537531

@@ -544,7 +538,7 @@ static int bma150_probe(struct i2c_client *client,
544538
dev_err(&client->dev,
545539
"IRQ GPIO conf. error %d, error %d\n",
546540
client->irq, error);
547-
goto err_free_mem;
541+
return error;
548542
}
549543
}
550544
cfg = &pdata->cfg;
@@ -554,57 +548,40 @@ static int bma150_probe(struct i2c_client *client,
554548

555549
error = bma150_initialize(bma150, cfg);
556550
if (error)
557-
goto err_free_mem;
551+
return error;
558552

559553
if (client->irq > 0) {
560554
error = bma150_register_input_device(bma150);
561555
if (error)
562-
goto err_free_mem;
556+
return error;
563557

564-
error = request_threaded_irq(client->irq,
558+
error = devm_request_threaded_irq(&client->dev, client->irq,
565559
NULL, bma150_irq_thread,
566560
IRQF_TRIGGER_RISING | IRQF_ONESHOT,
567561
BMA150_DRIVER, bma150);
568562
if (error) {
569563
dev_err(&client->dev,
570564
"irq request failed %d, error %d\n",
571565
client->irq, error);
572-
input_unregister_device(bma150->input);
573-
goto err_free_mem;
566+
return error;
574567
}
575568
} else {
576569
error = bma150_register_polled_device(bma150);
577570
if (error)
578-
goto err_free_mem;
571+
return error;
579572
}
580573

581574
i2c_set_clientdata(client, bma150);
582575

583576
pm_runtime_enable(&client->dev);
584577

585578
return 0;
586-
587-
err_free_mem:
588-
kfree(bma150);
589-
return error;
590579
}
591580

592581
static int bma150_remove(struct i2c_client *client)
593582
{
594-
struct bma150_data *bma150 = i2c_get_clientdata(client);
595-
596583
pm_runtime_disable(&client->dev);
597584

598-
if (client->irq > 0) {
599-
free_irq(client->irq, bma150);
600-
input_unregister_device(bma150->input);
601-
} else {
602-
input_unregister_polled_device(bma150->input_polled);
603-
input_free_polled_device(bma150->input_polled);
604-
}
605-
606-
kfree(bma150);
607-
608585
return 0;
609586
}
610587

0 commit comments

Comments
 (0)