android_kernel_msm-6.1_noth.../include/acpi
Matthew Garrett 0fd4ac3773 tpm_crb: Add support for CRB devices based on Pluton
commit 4d2732882703791ea4b670df433f88fc4b40a5cb upstream.

Pluton is an integrated security processor present in some recent Ryzen
parts. If it's enabled, it presents two devices - an MSFT0101 ACPI device
that's broadly an implementation of a Command Response Buffer TPM2, and an
MSFT0200 ACPI device whose functionality I haven't examined in detail yet.
This patch only attempts to add support for the TPM device.

There's a few things that need to be handled here. The first is that the
TPM2 ACPI table uses a previously undefined start method identifier. The
table format appears to include 16 bytes of startup data, which corresponds
to one 64-bit address for a start message and one 64-bit address for a
completion response. The second is that the ACPI tables on the Thinkpad Z13
I'm testing this on don't define any memory windows in _CRS (or, more
accurately, there are two empty memory windows). This check doesn't seem
strictly necessary, so I've skipped that.

Finally, it seems like chip needs to be explicitly asked to transition into
ready status on every command. Failing to do this means that if two
commands are sent in succession without an idle/ready transition in
between, everything will appear to work fine but the response is simply the
original command. I'm working without any docs here, so I'm not sure if
this is actually the required behaviour or if I'm missing something
somewhere else, but doing this results in the chip working reliably.

Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Matthew Garrett <mjg59@srcf.ucam.org>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
Cc: "Limonciello, Mario" <mario.limonciello@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-06-28 11:12:17 +02:00
..
platform ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
acbuffer.h ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
acconfig.h ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
acexcep.h ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
acnames.h ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
acoutput.h ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
acpi.h ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
acpi_bus.h PCI/ACPI: Account for _S0W of the target bridge in acpi_pci_bridge_d3() 2023-03-11 13:55:33 +01:00
acpi_drivers.h Merge branches 'acpi-pci' and 'acpi-processor' 2021-04-26 17:03:05 +02:00
acpi_io.h Revert "ACPI: Add memory semantics to acpi_os_map_memory()" 2021-09-23 20:39:36 +02:00
acpi_lpat.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
acpi_numa.h ACPI: processor: Replace kernel.h with the necessary inclusions 2021-11-24 17:44:04 +01:00
acpiosxf.h ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
acpixf.h ACPICA: Update version to 20220331 2022-04-13 20:24:58 +02:00
acrestyp.h ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
actbl.h ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
actbl1.h ACPICA: Removed some tabs and // comments 2022-04-13 20:24:57 +02:00
actbl2.h ACPICA: IORT: Updates for revision E.d 2022-04-13 20:24:58 +02:00
actbl3.h tpm_crb: Add support for CRB devices based on Pluton 2023-06-28 11:12:17 +02:00
actypes.h ACPICA: Removed some tabs and // comments 2022-04-13 20:24:57 +02:00
acuuid.h ACPICA: Update copyright notices to the year 2022 2022-04-13 20:24:57 +02:00
apei.h ACPI: APEI: Fix missing ERST record id 2022-04-13 20:29:24 +02:00
battery.h ACPI: battery: include linux/power_supply.h 2020-09-25 18:31:19 +02:00
button.h ACPI: button: move HIDs to acpi/button.h 2020-02-13 23:36:23 +01:00
cppc_acpi.h ACPI: CPPC: Disable FIE if registers in PCC regions 2022-09-24 18:43:46 +02:00
ghes.h ACPI: APEI: Fix integer overflow in ghes_estatus_pool_init() 2022-10-13 20:40:09 +02:00
hed.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428 2019-06-05 17:37:16 +02:00
nfit.h
pcc.h mailbox: pcc: Use PCC mailbox channel pointer instead of standard 2021-10-29 22:46:38 -05:00
pdc_intel.h
processor.h ACPI: processor: Drop leftover acpi_processor_get_limit_info() declaration 2022-06-29 19:01:23 +02:00
reboot.h
video.h ACPI: video: Add auto_detect arg to __acpi_video_get_backlight_type() 2023-04-13 16:55:33 +02:00