Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: bma150 - use managed resources helpers

The driver can be cleaned up by using managed resource helpers.

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
[dtor: do not explicitly set parent of input device since we are using devm]
Link: https://lore.kernel.org/r/20191017204217.106453-20-dmitry.torokhov@gmail.com

Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Jonathan Bakker and committed by
Dmitry Torokhov
493a6ebd 867e8820

+14 -37
+14 -37
drivers/input/misc/bma150.c
··· 439 439 return bma150_set_mode(bma150, BMA150_MODE_SLEEP); 440 440 } 441 441 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) 444 443 { 445 444 idev->name = BMA150_DRIVER; 446 445 idev->phys = BMA150_DRIVER "/input0"; 447 446 idev->id.bustype = BUS_I2C; 448 - idev->dev.parent = &bma150->client->dev; 449 447 450 448 idev->evbit[0] = BIT_MASK(EV_ABS); 451 449 input_set_abs_params(idev, ABS_X, ABSMIN_ACC_VAL, ABSMAX_ACC_VAL, 0, 0); ··· 456 458 struct input_dev *idev; 457 459 int error; 458 460 459 - idev = input_allocate_device(); 461 + idev = devm_input_allocate_device(&bma150->client->dev); 460 462 if (!idev) 461 463 return -ENOMEM; 462 464 463 - bma150_init_input_device(bma150, idev); 465 + bma150_init_input_device(idev); 464 466 465 467 idev->open = bma150_irq_open; 466 468 idev->close = bma150_irq_close; ··· 469 471 bma150->input = idev; 470 472 471 473 error = input_register_device(idev); 472 - if (error) { 473 - input_free_device(idev); 474 + if (error) 474 475 return error; 475 - } 476 476 477 477 return 0; 478 478 } ··· 480 484 struct input_polled_dev *ipoll_dev; 481 485 int error; 482 486 483 - ipoll_dev = input_allocate_polled_device(); 487 + ipoll_dev = devm_input_allocate_polled_device(&bma150->client->dev); 484 488 if (!ipoll_dev) 485 489 return -ENOMEM; 486 490 ··· 492 496 ipoll_dev->poll_interval_min = BMA150_POLL_MIN; 493 497 ipoll_dev->poll_interval_max = BMA150_POLL_MAX; 494 498 495 - bma150_init_input_device(bma150, ipoll_dev->input); 499 + bma150_init_input_device(ipoll_dev->input); 496 500 497 501 bma150->input_polled = ipoll_dev; 498 502 bma150->input = ipoll_dev->input; 499 503 500 504 error = input_register_polled_device(ipoll_dev); 501 - if (error) { 502 - input_free_polled_device(ipoll_dev); 505 + if (error) 503 506 return error; 504 - } 505 507 506 508 return 0; 507 509 } ··· 525 531 return -EINVAL; 526 532 } 527 533 528 - bma150 = kzalloc(sizeof(struct bma150_data), GFP_KERNEL); 534 + bma150 = devm_kzalloc(&client->dev, sizeof(*bma150), GFP_KERNEL); 529 535 if (!bma150) 530 536 return -ENOMEM; 531 537 ··· 538 544 dev_err(&client->dev, 539 545 "IRQ GPIO conf. error %d, error %d\n", 540 546 client->irq, error); 541 - goto err_free_mem; 547 + return error; 542 548 } 543 549 } 544 550 cfg = &pdata->cfg; ··· 548 554 549 555 error = bma150_initialize(bma150, cfg); 550 556 if (error) 551 - goto err_free_mem; 557 + return error; 552 558 553 559 if (client->irq > 0) { 554 560 error = bma150_register_input_device(bma150); 555 561 if (error) 556 - goto err_free_mem; 562 + return error; 557 563 558 - error = request_threaded_irq(client->irq, 564 + error = devm_request_threaded_irq(&client->dev, client->irq, 559 565 NULL, bma150_irq_thread, 560 566 IRQF_TRIGGER_RISING | IRQF_ONESHOT, 561 567 BMA150_DRIVER, bma150); ··· 563 569 dev_err(&client->dev, 564 570 "irq request failed %d, error %d\n", 565 571 client->irq, error); 566 - input_unregister_device(bma150->input); 567 - goto err_free_mem; 572 + return error; 568 573 } 569 574 } else { 570 575 error = bma150_register_polled_device(bma150); 571 576 if (error) 572 - goto err_free_mem; 577 + return error; 573 578 } 574 579 575 580 i2c_set_clientdata(client, bma150); ··· 576 583 pm_runtime_enable(&client->dev); 577 584 578 585 return 0; 579 - 580 - err_free_mem: 581 - kfree(bma150); 582 - return error; 583 586 } 584 587 585 588 static int bma150_remove(struct i2c_client *client) 586 589 { 587 - struct bma150_data *bma150 = i2c_get_clientdata(client); 588 - 589 590 pm_runtime_disable(&client->dev); 590 - 591 - if (client->irq > 0) { 592 - free_irq(client->irq, bma150); 593 - input_unregister_device(bma150->input); 594 - } else { 595 - input_unregister_polled_device(bma150->input_polled); 596 - input_free_polled_device(bma150->input_polled); 597 - } 598 - 599 - kfree(bma150); 600 591 601 592 return 0; 602 593 }