diff options
Diffstat (limited to 'drivers/char/tpm/tpm_tis.c')
-rw-r--r-- | drivers/char/tpm/tpm_tis.c | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c index 2405f17b29dd..04a18bffb730 100644 --- a/drivers/char/tpm/tpm_tis.c +++ b/drivers/char/tpm/tpm_tis.c | |||
@@ -597,7 +597,7 @@ out_err: | |||
597 | tpm_remove_hardware(chip->dev); | 597 | tpm_remove_hardware(chip->dev); |
598 | return rc; | 598 | return rc; |
599 | } | 599 | } |
600 | 600 | #ifdef CONFIG_PNP | |
601 | static int __devinit tpm_tis_pnp_init(struct pnp_dev *pnp_dev, | 601 | static int __devinit tpm_tis_pnp_init(struct pnp_dev *pnp_dev, |
602 | const struct pnp_device_id *pnp_id) | 602 | const struct pnp_device_id *pnp_id) |
603 | { | 603 | { |
@@ -662,7 +662,7 @@ static struct pnp_driver tis_pnp_driver = { | |||
662 | module_param_string(hid, tpm_pnp_tbl[TIS_HID_USR_IDX].id, | 662 | module_param_string(hid, tpm_pnp_tbl[TIS_HID_USR_IDX].id, |
663 | sizeof(tpm_pnp_tbl[TIS_HID_USR_IDX].id), 0444); | 663 | sizeof(tpm_pnp_tbl[TIS_HID_USR_IDX].id), 0444); |
664 | MODULE_PARM_DESC(hid, "Set additional specific HID for this driver to probe"); | 664 | MODULE_PARM_DESC(hid, "Set additional specific HID for this driver to probe"); |
665 | 665 | #endif | |
666 | static int tpm_tis_suspend(struct platform_device *dev, pm_message_t msg) | 666 | static int tpm_tis_suspend(struct platform_device *dev, pm_message_t msg) |
667 | { | 667 | { |
668 | return tpm_pm_suspend(&dev->dev, msg); | 668 | return tpm_pm_suspend(&dev->dev, msg); |
@@ -689,21 +689,21 @@ MODULE_PARM_DESC(force, "Force device probe rather than using ACPI entry"); | |||
689 | static int __init init_tis(void) | 689 | static int __init init_tis(void) |
690 | { | 690 | { |
691 | int rc; | 691 | int rc; |
692 | #ifdef CONFIG_PNP | ||
693 | if (!force) | ||
694 | return pnp_register_driver(&tis_pnp_driver); | ||
695 | #endif | ||
692 | 696 | ||
693 | if (force) { | 697 | rc = platform_driver_register(&tis_drv); |
694 | rc = platform_driver_register(&tis_drv); | 698 | if (rc < 0) |
695 | if (rc < 0) | ||
696 | return rc; | ||
697 | if (IS_ERR(pdev=platform_device_register_simple("tpm_tis", -1, NULL, 0))) | ||
698 | return PTR_ERR(pdev); | ||
699 | if((rc=tpm_tis_init(&pdev->dev, TIS_MEM_BASE, TIS_MEM_LEN, 0)) != 0) { | ||
700 | platform_device_unregister(pdev); | ||
701 | platform_driver_unregister(&tis_drv); | ||
702 | } | ||
703 | return rc; | 699 | return rc; |
700 | if (IS_ERR(pdev=platform_device_register_simple("tpm_tis", -1, NULL, 0))) | ||
701 | return PTR_ERR(pdev); | ||
702 | if((rc=tpm_tis_init(&pdev->dev, TIS_MEM_BASE, TIS_MEM_LEN, 0)) != 0) { | ||
703 | platform_device_unregister(pdev); | ||
704 | platform_driver_unregister(&tis_drv); | ||
704 | } | 705 | } |
705 | 706 | return rc; | |
706 | return pnp_register_driver(&tis_pnp_driver); | ||
707 | } | 707 | } |
708 | 708 | ||
709 | static void __exit cleanup_tis(void) | 709 | static void __exit cleanup_tis(void) |
@@ -727,12 +727,14 @@ static void __exit cleanup_tis(void) | |||
727 | list_del(&i->list); | 727 | list_del(&i->list); |
728 | } | 728 | } |
729 | spin_unlock(&tis_lock); | 729 | spin_unlock(&tis_lock); |
730 | 730 | #ifdef CONFIG_PNP | |
731 | if (force) { | 731 | if (!force) { |
732 | platform_device_unregister(pdev); | ||
733 | platform_driver_unregister(&tis_drv); | ||
734 | } else | ||
735 | pnp_unregister_driver(&tis_pnp_driver); | 732 | pnp_unregister_driver(&tis_pnp_driver); |
733 | return; | ||
734 | } | ||
735 | #endif | ||
736 | platform_device_unregister(pdev); | ||
737 | platform_driver_unregister(&tis_drv); | ||
736 | } | 738 | } |
737 | 739 | ||
738 | module_init(init_tis); | 740 | module_init(init_tis); |