← Documents Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml GitHub 원문 ↗

Linux 6.18.37 · Devicetree Bindings / TPM

TCG TIS I²C TPM

TCG PTP와 vendor-specific I²C TPM interface를 설명합니다.

Source pathDocumentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

tcg,tpm-tis-i2c.yaml:1-91

TCG PTP와 vendor-specific I²C TPM interface를 설명합니다. 접을 수 있는 영어 원문 전체와 한국어 전문 번역을 함께 제공하며 compatible, interrupt, bus, register, phandle, 수치와 줄 좌표를 원형대로 보존합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

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

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

I²C TCG TIS·PTP TPM

1-26

GPL-2.0-only 또는 BSD-2-Clause 라이선스의 이 스키마는 TCG TIS specification을 따르는 I²C-attached TPM을 정의합니다. I²C interface는 원래 TIS에 포함되지 않았고 2017년 별도 TCG PC Client Platform TPM Profile Specification for TPM 2.0(PTP) 문서로 추가되었습니다.

최근 TPM 2.0 chip은 이 generic interface를 따르지만 다른 chip은 vendor-specific I²C interface를 사용합니다. Maintainer는 Lukas Wunner입니다.

Generic PTP와 vendor-specific chip

27-49

Generic TCG PTP interface를 따르는 Infineon SLB9673, Nuvoton NPCT75x, ST ST33KTPM2x I²C chip은 vendor compatible 뒤에 `tcg,tpm-tis-i2c` fallback을 둡니다.

Vendor-specific interface 목록에는 TPM 1.2인 Atmel AT97SC3204T, Infineon SLB9635TT·SLB9645TT·`tpm_i2c_infineon`, Nuvoton NPCT501, Winbond WPCT301과 TPM 2.0인 Nuvoton NPCT601, ST ST33ZP24가 있습니다. SLB9635TT 최대 bus frequency는 100 kHz, SLB9645TT는 400 kHz입니다.

properties:
  compatible:
    oneOf:
      - description: Generic TPM 2.0 chips conforming to TCG PTP interface
        items:
          - enum:
              - infineon,slb9673
              - nuvoton,npct75x
              - st,st33ktpm2xi2c
          - const: tcg,tpm-tis-i2c

      - description: TPM 1.2 and 2.0 chips with vendor-specific I²C interface
        items:
          - enum:
              - atmel,at97sc3204t # TPM 1.2
              - infineon,slb9635tt # TPM 1.2 (maximum 100 kHz)
              - infineon,slb9645tt # TPM 1.2 (maximum 400 kHz)
              - infineon,tpm_i2c_infineon # TPM 1.2
              - nuvoton,npct501 # TPM 1.2
              - nuvoton,npct601 # TPM 2.0
              - st,st33zp24-i2c # TPM 2.0
              - winbond,wpct301 # TPM 1.2

I²C address와 공통 TPM 속성

50-61

`reg`는 I²C bus에서 TPM의 address입니다. Node는 `tpm-common.yaml`을 따르며 `compatible`과 `reg`가 필수입니다. 평가되지 않은 추가 속성은 허용하지 않습니다.

  reg:
    description: address of TPM on the I²C bus

allOf:
  - $ref: tpm-common.yaml#

required:
  - compatible
  - reg

unevaluatedProperties: false

Nuvoton NPCT601 event log 예제

62-76

첫 예제는 I²C address 0x57의 Nuvoton NPCT601에 `tpm` label을 붙이고 event log base `0x7f:0xfd450000`과 size 0x10000을 지정합니다.

examples:
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        tpm@57 {
            label = "tpm";
            compatible = "nuvoton,npct601";
            reg = <0x57>;
            linux,sml-base = <0x7f 0xfd450000>;
            linux,sml-size = <0x10000>;
        };
    };

ST33ZP24 interrupt·power-down 예제

77-91

둘째 예제는 I²C address 0x13의 ST33ZP24 TPM에 GPIO5 line 7 level-high interrupt와 GPIO5 line 15 active-high `lpcpd-gpios`를 지정합니다.

- |
  #include <dt-bindings/gpio/gpio.h>
  #include <dt-bindings/interrupt-controller/irq.h>
  i2c {
      #address-cells = <1>;
      #size-cells = <0>;

      tpm@13 {
          reg = <0x13>;
          compatible = "st,st33zp24-i2c";
          interrupt-parent = <&gpio5>;
          interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
          lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>;
      };
  };