1*26c9d152SLukas Wunner# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*26c9d152SLukas Wunner%YAML 1.2 3*26c9d152SLukas Wunner--- 4*26c9d152SLukas Wunner$id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml# 5*26c9d152SLukas Wunner$schema: http://devicetree.org/meta-schemas/core.yaml# 6*26c9d152SLukas Wunner 7*26c9d152SLukas Wunnertitle: I²C-attached Trusted Platform Module conforming to TCG TIS specification 8*26c9d152SLukas Wunner 9*26c9d152SLukas Wunnermaintainers: 10*26c9d152SLukas Wunner - Lukas Wunner <lukas@wunner.de> 11*26c9d152SLukas Wunner 12*26c9d152SLukas Wunnerdescription: | 13*26c9d152SLukas Wunner The Trusted Computing Group (TCG) has defined a multi-vendor standard 14*26c9d152SLukas Wunner for accessing a TPM chip. It can be transported over various buses, 15*26c9d152SLukas Wunner one of them being I²C. The standard is named: 16*26c9d152SLukas Wunner TCG PC Client Specific TPM Interface Specification (TIS) 17*26c9d152SLukas Wunner https://trustedcomputinggroup.org/resource/pc-client-work-group-pc-client-specific-tpm-interface-specification-tis/ 18*26c9d152SLukas Wunner 19*26c9d152SLukas Wunner The I²C interface was not originally part of the standard, but added 20*26c9d152SLukas Wunner in 2017 with a separate document: 21*26c9d152SLukas Wunner TCG PC Client Platform TPM Profile Specification for TPM 2.0 (PTP) 22*26c9d152SLukas Wunner https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/ 23*26c9d152SLukas Wunner 24*26c9d152SLukas Wunner Recent TPM 2.0 chips conform to this generic interface, others use a 25*26c9d152SLukas Wunner vendor-specific I²C interface. 26*26c9d152SLukas Wunner 27*26c9d152SLukas Wunnerproperties: 28*26c9d152SLukas Wunner compatible: 29*26c9d152SLukas Wunner oneOf: 30*26c9d152SLukas Wunner - description: Generic TPM 2.0 chips conforming to TCG PTP interface 31*26c9d152SLukas Wunner items: 32*26c9d152SLukas Wunner - enum: 33*26c9d152SLukas Wunner - infineon,slb9673 34*26c9d152SLukas Wunner - nuvoton,npct75x 35*26c9d152SLukas Wunner - const: tcg,tpm-tis-i2c 36*26c9d152SLukas Wunner 37*26c9d152SLukas Wunner - description: TPM 1.2 and 2.0 chips with vendor-specific I²C interface 38*26c9d152SLukas Wunner items: 39*26c9d152SLukas Wunner - enum: 40*26c9d152SLukas Wunner - atmel,at97sc3204t # TPM 1.2 41*26c9d152SLukas Wunner - infineon,slb9635tt # TPM 1.2 (maximum 100 kHz) 42*26c9d152SLukas Wunner - infineon,slb9645tt # TPM 1.2 (maximum 400 kHz) 43*26c9d152SLukas Wunner - infineon,tpm_i2c_infineon # TPM 1.2 44*26c9d152SLukas Wunner - nuvoton,npct501 # TPM 1.2 45*26c9d152SLukas Wunner - nuvoton,npct601 # TPM 2.0 46*26c9d152SLukas Wunner - st,st33zp24-i2c # TPM 2.0 47*26c9d152SLukas Wunner - winbond,wpct301 # TPM 1.2 48*26c9d152SLukas Wunner 49*26c9d152SLukas Wunner reg: 50*26c9d152SLukas Wunner description: address of TPM on the I²C bus 51*26c9d152SLukas Wunner 52*26c9d152SLukas WunnerallOf: 53*26c9d152SLukas Wunner - $ref: tpm-common.yaml# 54*26c9d152SLukas Wunner 55*26c9d152SLukas Wunnerrequired: 56*26c9d152SLukas Wunner - compatible 57*26c9d152SLukas Wunner - reg 58*26c9d152SLukas Wunner 59*26c9d152SLukas WunnerunevaluatedProperties: false 60*26c9d152SLukas Wunner 61*26c9d152SLukas Wunnerexamples: 62*26c9d152SLukas Wunner - | 63*26c9d152SLukas Wunner i2c { 64*26c9d152SLukas Wunner #address-cells = <1>; 65*26c9d152SLukas Wunner #size-cells = <0>; 66*26c9d152SLukas Wunner 67*26c9d152SLukas Wunner tpm@57 { 68*26c9d152SLukas Wunner label = "tpm"; 69*26c9d152SLukas Wunner compatible = "nuvoton,npct601"; 70*26c9d152SLukas Wunner reg = <0x57>; 71*26c9d152SLukas Wunner linux,sml-base = <0x7f 0xfd450000>; 72*26c9d152SLukas Wunner linux,sml-size = <0x10000>; 73*26c9d152SLukas Wunner }; 74*26c9d152SLukas Wunner }; 75*26c9d152SLukas Wunner 76*26c9d152SLukas Wunner - | 77*26c9d152SLukas Wunner #include <dt-bindings/gpio/gpio.h> 78*26c9d152SLukas Wunner #include <dt-bindings/interrupt-controller/irq.h> 79*26c9d152SLukas Wunner i2c { 80*26c9d152SLukas Wunner #address-cells = <1>; 81*26c9d152SLukas Wunner #size-cells = <0>; 82*26c9d152SLukas Wunner 83*26c9d152SLukas Wunner tpm@13 { 84*26c9d152SLukas Wunner reg = <0x13>; 85*26c9d152SLukas Wunner compatible = "st,st33zp24-i2c"; 86*26c9d152SLukas Wunner interrupt-parent = <&gpio5>; 87*26c9d152SLukas Wunner interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; 88*26c9d152SLukas Wunner lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; 89*26c9d152SLukas Wunner }; 90*26c9d152SLukas Wunner }; 91