tpm_tis_spi: set default probe function if device id not match
authorLiguang Zhang <zhangliguang@linux.alibaba.com>
Fri, 7 May 2021 14:52:55 +0000 (22:52 +0800)
committerJarkko Sakkinen <jarkko@kernel.org>
Wed, 23 Jun 2021 13:51:03 +0000 (16:51 +0300)
In DSDT table, TPM _CID was SMO0768, and no _HID definition. After a
kernel upgrade from 4.19 to 5.10, TPM probe function was changed which
causes device probe fails. In order to make newer kernel to be
compatible with the older acpi definition, it would be best set default
probe function.

Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
drivers/char/tpm/tpm_tis_spi_main.c

index 3856f6ebcb34f712ff983cc3e15c9fc804f6c870..da632a5826216ee97d7098f89b7dc16d5bf71ff9 100644 (file)
@@ -240,10 +240,14 @@ static int tpm_tis_spi_driver_probe(struct spi_device *spi)
        tpm_tis_spi_probe_func probe_func;
 
        probe_func = of_device_get_match_data(&spi->dev);
-       if (!probe_func && spi_dev_id)
-               probe_func = (tpm_tis_spi_probe_func)spi_dev_id->driver_data;
-       if (!probe_func)
-               return -ENODEV;
+       if (!probe_func) {
+               if (spi_dev_id) {
+                       probe_func = (tpm_tis_spi_probe_func)spi_dev_id->driver_data;
+                       if (!probe_func)
+                               return -ENODEV;
+               } else
+                       probe_func = tpm_tis_spi_probe;
+       }
 
        return probe_func(spi);
 }