summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Morris <jmorris@namei.org>2010-05-07 09:19:29 +1000
committerJames Morris <jmorris@namei.org>2010-05-07 09:19:29 +1000
commitec4a162af388a2716c5314c4aff7029071d09f57 (patch)
tree10b5c972f756620c8bba693a4363029c42d37ef3
parentf70e2e06196ad4c1c762037da2f75354f6c16b81 (diff)
Revert "TPM: ACPI/PNP dependency removal"
This reverts commit b89e66e1e396f7b5436af154e58209320cc08aed. > > When CONFIG_PM is not set: > > > > drivers/built-in.o: In function `acpi_init': > > bus.c:(.init.text+0x2d84): undefined reference to `pm_flags' > > bus.c:(.init.text+0x2d91): undefined reference to `pm_flags' > > CONFIG_ACPI depends on CONFIG_PM, > so acpi/bus.c should not be compiled for CONFIG_PM=n > > Hmm, is is somebody doing something strange, like "select ACPI" > without guaranteeing that all of ACPI's dependencies are satisfied? Signed-off-by: James Morris <jmorris@namei.org>
-rw-r--r--drivers/char/tpm/Kconfig14
-rw-r--r--drivers/char/tpm/tpm_tis.c40
2 files changed, 22 insertions, 32 deletions
diff --git a/drivers/char/tpm/Kconfig b/drivers/char/tpm/Kconfig
index bfc2c26780f..f5fc64f89c5 100644
--- a/drivers/char/tpm/Kconfig
+++ b/drivers/char/tpm/Kconfig
@@ -17,28 +17,20 @@ menuconfig TCG_TPM
obtained at: <http://sourceforge.net/projects/trousers>. To
compile this driver as a module, choose M here; the module
will be called tpm. If unsure, say N.
- Note: For more TPM drivers and BIOS LOG access enable
- CONFIG_PNP, CONFIG_ACPI and CONFIG_PNPACPI.
+ Note: For more TPM drivers enable CONFIG_PNP, CONFIG_ACPI
+ and CONFIG_PNPACPI.
if TCG_TPM
config TCG_TIS
tristate "TPM Interface Specification 1.2 Interface"
+ depends on PNP
---help---
If you have a TPM security chip that is compliant with the
TCG TIS 1.2 TPM specification say Yes and it will be accessible
from within Linux. To compile this driver as a module, choose
M here; the module will be called tpm_tis.
-config TCG_BIOS_LOG
- bool "TPM bios mesurement log"
- depends on X86
- select ACPI
- ---help---
- ACPI is required for access to bios measurements lists and therefore
- to validate the PCR[0] value. So say Yes in case you want this
- feature and, consequently, ACPI will be enabled.
-
config TCG_NSC
tristate "National Semiconductor TPM Interface"
---help---
diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
index 24314a9cffe..94345994f8a 100644
--- a/drivers/char/tpm/tpm_tis.c
+++ b/drivers/char/tpm/tpm_tis.c
@@ -598,7 +598,7 @@ out_err:
tpm_remove_hardware(chip->dev);
return rc;
}
-#ifdef CONFIG_PNP
+
static int __devinit tpm_tis_pnp_init(struct pnp_dev *pnp_dev,
const struct pnp_device_id *pnp_id)
{
@@ -663,7 +663,7 @@ static struct pnp_driver tis_pnp_driver = {
module_param_string(hid, tpm_pnp_tbl[TIS_HID_USR_IDX].id,
sizeof(tpm_pnp_tbl[TIS_HID_USR_IDX].id), 0444);
MODULE_PARM_DESC(hid, "Set additional specific HID for this driver to probe");
-#endif
+
static int tpm_tis_suspend(struct platform_device *dev, pm_message_t msg)
{
return tpm_pm_suspend(&dev->dev, msg);
@@ -690,21 +690,21 @@ MODULE_PARM_DESC(force, "Force device probe rather than using ACPI entry");
static int __init init_tis(void)
{
int rc;
-#ifdef CONFIG_PNP
- if (!force)
- return pnp_register_driver(&tis_pnp_driver);
-#endif
- rc = platform_driver_register(&tis_drv);
- if (rc < 0)
+ if (force) {
+ rc = platform_driver_register(&tis_drv);
+ if (rc < 0)
+ return rc;
+ if (IS_ERR(pdev=platform_device_register_simple("tpm_tis", -1, NULL, 0)))
+ return PTR_ERR(pdev);
+ if((rc=tpm_tis_init(&pdev->dev, TIS_MEM_BASE, TIS_MEM_LEN, 0)) != 0) {
+ platform_device_unregister(pdev);
+ platform_driver_unregister(&tis_drv);
+ }
return rc;
- if (IS_ERR(pdev=platform_device_register_simple("tpm_tis", -1, NULL, 0)))
- return PTR_ERR(pdev);
- if((rc=tpm_tis_init(&pdev->dev, TIS_MEM_BASE, TIS_MEM_LEN, 0)) != 0) {
- platform_device_unregister(pdev);
- platform_driver_unregister(&tis_drv);
}
- return rc;
+
+ return pnp_register_driver(&tis_pnp_driver);
}
static void __exit cleanup_tis(void)
@@ -728,14 +728,12 @@ static void __exit cleanup_tis(void)
list_del(&i->list);
}
spin_unlock(&tis_lock);
-#ifdef CONFIG_PNP
- if (!force) {
+
+ if (force) {
+ platform_device_unregister(pdev);
+ platform_driver_unregister(&tis_drv);
+ } else
pnp_unregister_driver(&tis_pnp_driver);
- return;
- }
-#endif
- platform_device_unregister(pdev);
- platform_driver_unregister(&tis_drv);
}
module_init(init_tis);