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

Input: pmic8xxx-keypad - migrate to devm_* APIs

Simplify the error paths and reduce the lines of code in this
driver by using the devm_* APIs.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

authored by

Stephen Boyd and committed by
Dmitry Torokhov
c7f6ee26 d3e6a67c

+17 -44
+17 -44
drivers/input/keyboard/pmic8xxx-keypad.c
··· 543 543 return -EINVAL; 544 544 } 545 545 546 - kp = kzalloc(sizeof(*kp), GFP_KERNEL); 546 + kp = devm_kzalloc(&pdev->dev, sizeof(*kp), GFP_KERNEL); 547 547 if (!kp) 548 548 return -ENOMEM; 549 549 ··· 552 552 kp->pdata = pdata; 553 553 kp->dev = &pdev->dev; 554 554 555 - kp->input = input_allocate_device(); 555 + kp->input = devm_input_allocate_device(&pdev->dev); 556 556 if (!kp->input) { 557 557 dev_err(&pdev->dev, "unable to allocate input device\n"); 558 - rc = -ENOMEM; 559 - goto err_alloc_device; 558 + return -ENOMEM; 560 559 } 561 560 562 561 kp->key_sense_irq = platform_get_irq(pdev, 0); 563 562 if (kp->key_sense_irq < 0) { 564 563 dev_err(&pdev->dev, "unable to get keypad sense irq\n"); 565 - rc = -ENXIO; 566 - goto err_get_irq; 564 + return kp->key_sense_irq; 567 565 } 568 566 569 567 kp->key_stuck_irq = platform_get_irq(pdev, 1); 570 568 if (kp->key_stuck_irq < 0) { 571 569 dev_err(&pdev->dev, "unable to get keypad stuck irq\n"); 572 - rc = -ENXIO; 573 - goto err_get_irq; 570 + return kp->key_stuck_irq; 574 571 } 575 572 576 573 kp->input->name = pdata->input_name ? : "PMIC8XXX keypad"; 577 574 kp->input->phys = pdata->input_phys_device ? : "pmic8xxx_keypad/input0"; 578 - 579 - kp->input->dev.parent = &pdev->dev; 580 575 581 576 kp->input->id.bustype = BUS_I2C; 582 577 kp->input->id.version = 0x0001; ··· 586 591 kp->keycodes, kp->input); 587 592 if (rc) { 588 593 dev_err(&pdev->dev, "failed to build keymap\n"); 589 - goto err_get_irq; 594 + return rc; 590 595 } 591 596 592 597 if (pdata->rep) ··· 602 607 rc = pmic8xxx_kpd_init(kp); 603 608 if (rc < 0) { 604 609 dev_err(&pdev->dev, "unable to initialize keypad controller\n"); 605 - goto err_get_irq; 610 + return rc; 606 611 } 607 612 608 - rc = request_any_context_irq(kp->key_sense_irq, pmic8xxx_kp_irq, 609 - IRQF_TRIGGER_RISING, "pmic-keypad", kp); 613 + rc = devm_request_any_context_irq(&pdev->dev, kp->key_sense_irq, 614 + pmic8xxx_kp_irq, IRQF_TRIGGER_RISING, "pmic-keypad", 615 + kp); 610 616 if (rc < 0) { 611 617 dev_err(&pdev->dev, "failed to request keypad sense irq\n"); 612 - goto err_get_irq; 618 + return rc; 613 619 } 614 620 615 - rc = request_any_context_irq(kp->key_stuck_irq, pmic8xxx_kp_stuck_irq, 616 - IRQF_TRIGGER_RISING, "pmic-keypad-stuck", kp); 621 + rc = devm_request_any_context_irq(&pdev->dev, kp->key_stuck_irq, 622 + pmic8xxx_kp_stuck_irq, IRQF_TRIGGER_RISING, 623 + "pmic-keypad-stuck", kp); 617 624 if (rc < 0) { 618 625 dev_err(&pdev->dev, "failed to request keypad stuck irq\n"); 619 - goto err_req_stuck_irq; 626 + return rc; 620 627 } 621 628 622 629 rc = pmic8xxx_kp_read_u8(kp, &ctrl_val, KEYP_CTRL); 623 630 if (rc < 0) { 624 631 dev_err(&pdev->dev, "failed to read KEYP_CTRL register\n"); 625 - goto err_pmic_reg_read; 632 + return rc; 626 633 } 627 634 628 635 kp->ctrl_reg = ctrl_val; ··· 632 635 rc = input_register_device(kp->input); 633 636 if (rc < 0) { 634 637 dev_err(&pdev->dev, "unable to register keypad input device\n"); 635 - goto err_pmic_reg_read; 638 + return rc; 636 639 } 637 640 638 641 device_init_wakeup(&pdev->dev, pdata->wakeup); 639 - 640 - return 0; 641 - 642 - err_pmic_reg_read: 643 - free_irq(kp->key_stuck_irq, kp); 644 - err_req_stuck_irq: 645 - free_irq(kp->key_sense_irq, kp); 646 - err_get_irq: 647 - input_free_device(kp->input); 648 - err_alloc_device: 649 - kfree(kp); 650 - return rc; 651 - } 652 - 653 - static int pmic8xxx_kp_remove(struct platform_device *pdev) 654 - { 655 - struct pmic8xxx_kp *kp = platform_get_drvdata(pdev); 656 - 657 - device_init_wakeup(&pdev->dev, 0); 658 - free_irq(kp->key_stuck_irq, kp); 659 - free_irq(kp->key_sense_irq, kp); 660 - input_unregister_device(kp->input); 661 - kfree(kp); 662 642 663 643 return 0; 664 644 } ··· 687 713 688 714 static struct platform_driver pmic8xxx_kp_driver = { 689 715 .probe = pmic8xxx_kp_probe, 690 - .remove = pmic8xxx_kp_remove, 691 716 .driver = { 692 717 .name = PM8XXX_KEYPAD_DEV_NAME, 693 718 .owner = THIS_MODULE,