tpm: of: Handle IBM,vtpm20 case when getting log parameters
authorStefan Berger <stefanb@linux.ibm.com>
Thu, 12 Mar 2020 15:53:30 +0000 (11:53 -0400)
committerJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Fri, 13 Mar 2020 15:31:26 +0000 (17:31 +0200)
A vTPM 2.0 is identified by 'IBM,vtpm20' in the 'compatible' node in
the device tree. Handle it in the same way as 'IBM,vtpm'.

The vTPM 2.0's log is written in little endian format so that for this
aspect we can rely on existing code.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Acked-by: Nayna Jain <nayna@linux.ibm.com>
Tested-by: Nayna Jain <nayna@linux.ibm.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
drivers/char/tpm/eventlog/of.c

index af347c190819d98aa4ce7aa81a3df7b4a8f786f3..a9ce66d09a754de85518df4e4d82cc742473dd43 100644 (file)
@@ -51,7 +51,8 @@ int tpm_read_log_of(struct tpm_chip *chip)
         * endian format. For this reason, vtpm doesn't need conversion
         * but physical tpm needs the conversion.
         */
-       if (of_property_match_string(np, "compatible", "IBM,vtpm") < 0) {
+       if (of_property_match_string(np, "compatible", "IBM,vtpm") < 0 &&
+           of_property_match_string(np, "compatible", "IBM,vtpm20") < 0) {
                size = be32_to_cpup((__force __be32 *)sizep);
                base = be64_to_cpup((__force __be64 *)basep);
        } else {