drivers/i2c/tpm/cr50: Initialize IRQ status handler before probe

Move the setup of the IRQ status handler so it will be set up properly
before the early probe happens.

BUG=chrome-os-partner:53336

Change-Id: I4380af1233d2a252899459635a3cb69ca196088d
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://review.coreboot.org/16861
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
This commit is contained in:
Duncan Laurie 2016-10-03 12:43:14 -07:00 committed by Vadim Bendebury
parent 77ba882c67
commit 48f708d199
1 changed files with 13 additions and 13 deletions

View File

@ -416,6 +416,19 @@ static void cr50_vendor_init(struct tpm_chip *chip)
chip->vendor.send = &cr50_i2c_tis_send;
chip->vendor.cancel = &cr50_i2c_tis_ready;
chip->vendor.irq = CONFIG_DRIVER_TPM_I2C_IRQ;
/*
* Interrupts are not supported this early in firmware,
* use use an arch-specific method to query for interrupt status.
*/
if (chip->vendor.irq > 0) {
#if IS_ENABLED(CONFIG_ARCH_X86)
/* Query GPE status for interrupt */
chip->vendor.irq_status = &acpi_get_gpe;
#else
chip->vendor.irq = -1;
#endif
}
}
int tpm_vendor_probe(unsigned bus, uint32_t addr)
@ -470,19 +483,6 @@ int tpm_vendor_init(struct tpm_chip *chip, unsigned bus, uint32_t dev_addr)
cr50_vendor_init(chip);
/*
* Interrupts are not supported this early in firmware,
* use use an arch-specific method to query for interrupt status.
*/
if (chip->vendor.irq > 0) {
#if IS_ENABLED(CONFIG_ARCH_X86)
/* Query GPE status for interrupt */
chip->vendor.irq_status = &acpi_get_gpe;
#else
chip->vendor.irq = -1;
#endif
}
if (request_locality(chip, 0) != 0)
return -1;