dt-bindings: tpm: Clean all the things
Subsystems (3)
cover dt-bindings: tpm: Clean all the things
Rob asked me to consolidate and convert the TPM dt-bindings:
https://lore.kernel.org/all/[email protected]/
I came across several issues:
First, this pull request is needed to cope with ibm,#dma-address-cells and ibm,#dma-size-cells properties used in ibm,vtpm.yaml:
https://github.com/devicetree-org/dt-schema/pull/116
Second, the compatible string "google,cr50" refers to a chip which has both an i2c and an spi interface (see drivers/char/tpm/tpm_tis_i2c_cr50.c as well as tpm_tis_spi_main.c) This confuses the schema validator because it thinks that "google,cr50" may only use i2c properties but tcg,tpm_tis-spi.yaml contains an spi example, which causes some warnings. It seems deeper code changes to the schema validator are required to avoid them:
Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.example.dtb: tpm@0: compatible:1: 'tcg,tpm-tis-i2c' was expected
from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.example.dtb: tpm@0: Unevaluated properties are not allowed ('compatible', 'spi-max-frequency' were unexpected) from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
Third, the schema validator raises warnings about three properties I've defined in tpm-common.yaml: "linux,sml-base" and "linux,sml-size" are nested in a oneOf/allOf clause and "lpcpd-gpios" is nested in an allOf/if-then clause. This seems to confuse the validator:
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.example.dtb: tpm@57: Unevaluated properties are not allowed ('linux,sml-base', 'linux,sml-size' were unexpected) from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.example.dtb: tpm@13: Unevaluated properties are not allowed ('lpcpd-gpios' was unexpected) from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
I can get rid of those warnings by setting "unevaluatedProperties: true", but that doesn't seem to be desirable.
Lukas Wunner (3):
dt-bindings: tpm: Consolidate TCG TIS bindings
dt-bindings: tpm: Convert IBM vTPM bindings to DT schema
dt-bindings: tpm: Document Microsoft fTPM bindings
.../bindings/security/tpm/google,cr50.txt | 19 ---- .../bindings/security/tpm/ibmvtpm.txt | 41 ------- .../bindings/security/tpm/st33zp24-i2c.txt | 34 ------ .../bindings/security/tpm/st33zp24-spi.txt | 32 ------ .../bindings/security/tpm/tpm-i2c.txt | 26 ----- .../bindings/security/tpm/tpm_tis_mmio.txt | 25 ---- .../bindings/security/tpm/tpm_tis_spi.txt | 23 ---- .../devicetree/bindings/tpm/ibm,vtpm.yaml | 101 +++++++++++++++++ .../bindings/tpm/microsoft,ftpm.yaml | 48 ++++++++ .../bindings/tpm/tcg,tpm-tis-i2c.yaml | 107 ++++++++++++++++++ .../bindings/tpm/tcg,tpm-tis-mmio.yaml | 50 ++++++++ .../bindings/tpm/tcg,tpm_tis-spi.yaml | 88 ++++++++++++++ .../devicetree/bindings/tpm/tpm-common.yaml | 56 +++++++++ .../devicetree/bindings/trivial-devices.yaml | 16 --- 14 files changed, 450 insertions(+), 216 deletions(-) delete mode 100644 Documentation/devicetree/bindings/security/tpm/google,cr50.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/ibmvtpm.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/st33zp24-spi.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm_tis_mmio.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm_tis_spi.txt create mode 100644 Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml create mode 100644 Documentation/devicetree/bindings/tpm/microsoft,ftpm.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm-tis-mmio.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tpm-common.yaml
Signature · 1 line
2.40.1
PATCH 1/3 dt-bindings: tpm: Consolidate TCG TIS bindings
A significant number of Trusted Platform Modules conform to the "TIS" specification published by the Trusted Computing Group ("TCG PC Client Specific TPM Interface Specification"). These chips typically use an SPI, I²C or LPC bus as transport (via MMIO in the latter case). Some of them even support multiple of those buses (selectable through a config strap) or the same chip is available in multiple SKUs, each with a different bus interface.
The devicetree bindings for these TPMs have not been converted to DT schema yet and are spread out across 3 generic files and 3 chip-specific files. A few TPM compatible strings were added to trivial-devices.yaml even though additional properties are documented in the plaintext bindings.
Consolidate the devicetree bindings into 3 files, one per bus.
Move common properties to a separate tpm-common.yaml.
Document compatible strings which are supported by the TPM TIS driver but were neglected to be added to the devicetree bindings.
Document the memory-region property recently introduced by commit 1e2714bb83fc ("tpm: Add reserved memory event log").
--- .../bindings/security/tpm/google,cr50.txt | 19 ---- .../bindings/security/tpm/st33zp24-i2c.txt | 34 ------ .../bindings/security/tpm/st33zp24-spi.txt | 32 ------ .../bindings/security/tpm/tpm-i2c.txt | 26 ----- .../bindings/security/tpm/tpm_tis_mmio.txt | 25 ---- .../bindings/security/tpm/tpm_tis_spi.txt | 23 ---- .../bindings/tpm/tcg,tpm-tis-i2c.yaml | 107 ++++++++++++++++++ .../bindings/tpm/tcg,tpm-tis-mmio.yaml | 50 ++++++++ .../bindings/tpm/tcg,tpm_tis-spi.yaml | 88 ++++++++++++++ .../devicetree/bindings/tpm/tpm-common.yaml | 56 +++++++++ .../devicetree/bindings/trivial-devices.yaml | 16 --- 11 files changed, 301 insertions(+), 175 deletions(-) delete mode 100644 Documentation/devicetree/bindings/security/tpm/google,cr50.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/st33zp24-spi.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm_tis_mmio.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm_tis_spi.txt create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm-tis-mmio.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tpm-common.yaml
Documentation/devicetree/bindings/security/tpm/google,cr50.txt deleted +0 -19
@@ -1,19 +0,0 @@ -* H1 Secure Microcontroller with Cr50 Firmware on SPI Bus. - -H1 Secure Microcontroller running Cr50 firmware provides several -functions, including TPM-like functionality. It communicates over -SPI using the FIFO protocol described in the PTP Spec, section 6. - -Required properties: -- compatible: Should be "google,cr50". -- spi-max-frequency: Maximum SPI frequency. - -Example: - -&spi0 { - tpm@0 { - compatible = "google,cr50"; - reg = <0>; - spi-max-frequency = <800000>; - }; -};
Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt deleted +0 -34
@@ -1,34 +0,0 @@ -* STMicroelectronics SAS. ST33ZP24 TPM SoC - -Required properties: -- compatible: Should be "st,st33zp24-i2c". -- clock-frequency: I²C work frequency. -- reg: address on the bus - -Optional ST33ZP24 Properties: -- interrupts: GPIO interrupt to which the chip is connected -- lpcpd-gpios: Output GPIO pin used for ST33ZP24 power management D1/D2 state. -If set, power must be present when the platform is going into sleep/hibernate mode. - -Optional SoC Specific Properties: -- pinctrl-names: Contains only one value - "default". -- pintctrl-0: Specifies the pin control groups used for this controller. - -Example (for ARM-based BeagleBoard xM with ST33ZP24 on I2C2): - -&i2c2 { - - - st33zp24: st33zp24@13 { - - compatible = "st,st33zp24-i2c"; - - reg = <0x13>; - clock-frequency = <400000>; - - interrupt-parent = <&gpio5>; - interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; - - lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; - }; -};
Documentation/devicetree/bindings/security/tpm/st33zp24-spi.txt deleted +0 -32
@@ -1,32 +0,0 @@ -* STMicroelectronics SAS. ST33ZP24 TPM SoC - -Required properties: -- compatible: Should be "st,st33zp24-spi". -- spi-max-frequency: Maximum SPI frequency (<= 10000000). - -Optional ST33ZP24 Properties: -- interrupts: GPIO interrupt to which the chip is connected -- lpcpd-gpios: Output GPIO pin used for ST33ZP24 power management D1/D2 state. -If set, power must be present when the platform is going into sleep/hibernate mode. - -Optional SoC Specific Properties: -- pinctrl-names: Contains only one value - "default". -- pintctrl-0: Specifies the pin control groups used for this controller. - -Example (for ARM-based BeagleBoard xM with ST33ZP24 on SPI4): - -&mcspi4 { - - - st33zp24@0 { - - compatible = "st,st33zp24-spi"; - - spi-max-frequency = <10000000>; - - interrupt-parent = <&gpio5>; - interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; - - lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; - }; -};
Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt deleted +0 -26
@@ -1,26 +0,0 @@ -* Device Tree Bindings for I2C based Trusted Platform Module(TPM) - -Required properties: - -- compatible : 'manufacturer,model', eg. nuvoton,npct650 -- label : human readable string describing the device, eg. "tpm" -- linux,sml-base : 64-bit base address of the reserved memory allocated for - the firmware event log -- linux,sml-size : size of the memory allocated for the firmware event log - -Optional properties: - -- powered-while-suspended: present when the TPM is left powered on between - suspend and resume (makes the suspend/resume - callbacks do nothing). - -Example (for OpenPower Systems with Nuvoton TPM 2.0 on I2C) ----------------------------------------------------------- - -tpm@57 { - reg = <0x57>; - label = "tpm"; - compatible = "nuvoton,npct650", "nuvoton,npct601"; - linux,sml-base = <0x7f 0xfd450000>; - linux,sml-size = <0x10000>; -};
Documentation/devicetree/bindings/security/tpm/tpm_tis_mmio.txt deleted +0 -25
@@ -1,25 +0,0 @@ -Trusted Computing Group MMIO Trusted Platform Module - -The TCG defines multi vendor standard for accessing a TPM chip, this -is the standard protocol defined to access the TPM via MMIO. Typically -this interface will be implemented over Intel's LPC bus. - -Refer to the 'TCG PC Client Specific TPM Interface Specification (TIS)' TCG -publication for the specification. - -Required properties: - -- compatible: should contain a string below for the chip, followed by - "tcg,tpm-tis-mmio". Valid chip strings are: - * "atmel,at97sc3204" -- reg: The location of the MMIO registers, should be at least 0x5000 bytes -- interrupts: An optional interrupt indicating command completion. - -Example: - - tpm_tis@90000 { - compatible = "atmel,at97sc3204", "tcg,tpm-tis-mmio"; - reg = <0x90000 0x5000>; - interrupt-parent = <&EIC0>; - interrupts = <1 2>; - };
Documentation/devicetree/bindings/security/tpm/tpm_tis_spi.txt deleted +0 -23
@@ -1,23 +0,0 @@ -Required properties: -- compatible: should be one of the following - "st,st33htpm-spi" - "infineon,slb9670" - "tcg,tpm_tis-spi" -- spi-max-frequency: Maximum SPI frequency (depends on TPMs). - -Optional SoC Specific Properties: -- pinctrl-names: Contains only one value - "default". -- pintctrl-0: Specifies the pin control groups used for this controller. - -Example (for ARM-based BeagleBoard xM with TPM_TIS on SPI4): - -&mcspi4 { - - - tpm_tis@0 { - - compatible = "tcg,tpm_tis-spi"; - - spi-max-frequency = <10000000>; - }; -};
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml new file +107 -0
107 lines not on this page · raw message
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-mmio.yaml new file +50 -0
50 lines not on this page · raw message
Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.yaml new file +88 -0
88 lines not on this page · raw message
Documentation/devicetree/bindings/tpm/tpm-common.yaml new file +56 -0
56 lines not on this page · raw message
Documentation/devicetree/bindings/trivial-devices.yaml +0 -16
@@ -49,8 +49,6 @@ properties: - ams,iaq-core # i2c serial eeprom (24cxx) - at,24c08 - # i2c trusted platform module (TPM) - - atmel,at97sc3204t # ATSHA204 - i2c h/w symmetric crypto module - atmel,atsha204 # ATSHA204A - i2c h/w symmetric crypto module
@@ -145,12 +143,6 @@ properties: - infineon,ir38263 # Infineon IRPS5401 Voltage Regulator (PMIC) - infineon,irps5401 - # Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) - - infineon,slb9635tt - # Infineon SLB9645 I2C TPM (new protocol, max 400khz) - - infineon,slb9645tt - # Infineon SLB9673 I2C TPM 2.0 - - infineon,slb9673 # Infineon TLV493D-A1B6 I2C 3D Magnetic Sensor - infineon,tlv493d-a1b6 # Infineon Multi-phase Digital VR Controller xdpe11280
@@ -301,10 +293,6 @@ properties: - national,lm85 # I2C ±0.33°C Accurate, 12-Bit + Sign Temperature Sensor and Thermal Window Comparator - national,lm92 - # i2c trusted platform module (TPM) - - nuvoton,npct501 - # i2c trusted platform module (TPM2) - - nuvoton,npct601 # Nuvoton Temperature Sensor - nuvoton,w83773g # OKI ML86V7667 video decoder
@@ -349,8 +337,6 @@ properties: - silabs,si7020 # Skyworks SKY81452: Six-Channel White LED Driver with Touch Panel Bias Supply - skyworks,sky81452 - # Socionext SynQuacer TPM MMIO module - - socionext,synquacer-tpm-mmio # SparkFun Qwiic Joystick (COM-15168) with i2c interface - sparkfun,qwiic-joystick # i2c serial eeprom (24cxx)
@@ -405,8 +391,6 @@ properties: - winbond,w83793 # Vicor Corporation Digital Supervisor - vicor,pli1209bc - # i2c trusted platform module (TPM) - - winbond,wpct301 required: - compatible
Signature · 1 line
2.40.1
Rob Herring
maintainerRe: [PATCH 1/3] dt-bindings: tpm: Consolidate TCG TIS bindings
Quoted 40 lines · Lukas Wunner
A significant number of Trusted Platform Modules conform to the "TIS" specification published by the Trusted Computing Group ("TCG PC Client Specific TPM Interface Specification"). These chips typically use an SPI, I²C or LPC bus as transport (via MMIO in the latter case). Some of them even support multiple of those buses (selectable through a config strap) or the same chip is available in multiple SKUs, each with a different bus interface.
The devicetree bindings for these TPMs have not been converted to DT schema yet and are spread out across 3 generic files and 3 chip-specific files. A few TPM compatible strings were added to
trivial-devices.yamleven though additional properties are documented in the plaintext bindings.Consolidate the devicetree bindings into 3 files, one per bus.
Move common properties to a separate
tpm-common.yaml.Document compatible strings which are supported by the TPM TIS driver but were neglected to be added to the devicetree bindings.
Document the memory-region property recently introduced by commit
1e2714bb83fc("tpm: Add reserved memory event log").Signed-off-by Lukas Wunner <[email protected]>--- .../bindings/security/tpm/google,cr50.txt | 19 ---- .../bindings/security/tpm/st33zp24-i2c.txt | 34 ------ .../bindings/security/tpm/st33zp24-spi.txt | 32 ------ .../bindings/security/tpm/tpm-i2c.txt | 26 ----- .../bindings/security/tpm/tpm_tis_mmio.txt | 25 ---- .../bindings/security/tpm/tpm_tis_spi.txt | 23 ---- .../bindings/tpm/tcg,tpm-tis-i2c.yaml | 107 ++++++++++++++++++ .../bindings/tpm/tcg,tpm-tis-mmio.yaml | 50 ++++++++ .../bindings/tpm/tcg,tpm_tis-spi.yaml | 88 ++++++++++++++ .../devicetree/bindings/tpm/tpm-common.yaml | 56 +++++++++ .../devicetree/bindings/trivial-devices.yaml | 16 --- 11 files changed, 301 insertions(+), 175 deletions(-) delete mode 100644 Documentation/devicetree/bindings/security/tpm/google,cr50.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt
Quoted 9 lines
delete mode 100644 Documentation/devicetree/bindings/security/tpm/st33zp24-spi.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm_tis_mmio.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm_tis_spi.txt create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm-tis-mmio.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tpm-common.yaml
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/tpm-common.yaml: properties:oneOf: [{'memory-region': {'description': 'reserved memory allocated for firmware event log', 'maxItems': 1}}, {'allOf': [{'linux,sml-base': {'description': 'base address of reserved memory allocated for firmware event log', '$ref': '/schemas/types.yaml#/definitions/uint32-array', 'minItems': 2, 'maxItems': 2}}, {'linux,sml-size': {'description': 'size of reserved memory allocated for firmware event log', '$ref': '/schemas/types.yaml#/definitions/uint32'}}]}] is not of type 'object', 'boolean'
from schema $id: http://json-schema.org/draft-07/schema#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/tpm-common.yaml: properties: 'oneOf' should not be valid under {'$ref': '#/definitions/json-schema-prop-names'}
hint: A json-schema keyword was found instead of a DT property name.
from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/tpm-common.yaml: properties:oneOf: [{'memory-region': {'description': 'reserved memory allocated for firmware event log', 'maxItems': 1}}, {'allOf': [{'linux,sml-base': {'description': 'base address of reserved memory allocated for firmware event log', '$ref': '/schemas/types.yaml#/definitions/uint32-array', 'minItems': 2, 'maxItems': 2}}, {'linux,sml-size': {'description': 'size of reserved memory allocated for firmware event log', '$ref': '/schemas/types.yaml#/definitions/uint32'}}]}] is not of type 'object', 'boolean'
from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/tpm-common.yaml: powered-while-suspended: missing type definition
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.example.dtb: tpm@0: compatible:1: 'tcg,tpm-tis-i2c' was expected
from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.example.dtb: tpm@0: Unevaluated properties are not allowed ('compatible', 'spi-max-frequency' were unexpected)
from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.example.dtb: tpm@0: Unevaluated properties are not allowed ('lpcpd-gpios' was unexpected)
from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm_tis-spi.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.example.dtb: tpm@57: Unevaluated properties are not allowed ('linux,sml-base', 'linux,sml-size' were unexpected)
from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.example.dtb: tpm@13: Unevaluated properties are not allowed ('lpcpd-gpios' was unexpected)
from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
doc reference errors (make refcheckdocs):
The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
Re: [PATCH 1/3] dt-bindings: tpm: Consolidate TCG TIS bindings
Quoted 2 lines · Rob Herring
My bot found errors running 'make DT_CHECKER_FLAGS=-m
dt_binding_check' on your patch (DT_CHECKER_FLAGSis new in v5.13):
Your bot hasn't read the cover letter, which discusses those errors:
Rob Herring
maintainerRe: [PATCH 1/3] dt-bindings: tpm: Consolidate TCG TIS bindings
Quoted 7 lines · Lukas Wunner
Quoted 2 lines · Rob Herring
My bot found errors running 'make DT_CHECKER_FLAGS=-m
dt_binding_check' on your patch (DT_CHECKER_FLAGSis new in v5.13):Your bot hasn't read the cover letter, which discusses those errors:
Yeah, the bot doesn't read. It used to, but then replies would only happen if its master was working. It's all Krzysztof's fault for reviewing faster than the bot.
This should all be fixed in dtschema main branch now.
Rob
Rob Herring
maintainerRe: [PATCH 1/3] dt-bindings: tpm: Consolidate TCG TIS bindings
In reply to Lukas WunnerQuoted 8 lines · Lukas Wunner
A significant number of Trusted Platform Modules conform to the "TIS" specification published by the Trusted Computing Group ("TCG PC Client Specific TPM Interface Specification"). These chips typically use an SPI, I²C or LPC bus as transport (via MMIO in the latter case). Some of them even support multiple of those buses (selectable through a config strap) or the same chip is available in multiple SKUs, each with a different bus interface.
Quoted 5 lines
The devicetree bindings for these TPMs have not been converted to DT schema yet and are spread out across 3 generic files and 3 chip-specific files. A few TPM compatible strings were added to
trivial-devices.yamleven though additional properties are documented in the plaintext bindings.
Thanks for doing this. Looks pretty good.
Quoted 84 lines
Consolidate the devicetree bindings into 3 files, one per bus.
Move common properties to a separate
tpm-common.yaml.Document compatible strings which are supported by the TPM TIS driver but were neglected to be added to the devicetree bindings.
Document the memory-region property recently introduced by commit
1e2714bb83fc("tpm: Add reserved memory event log").Signed-off-by Lukas Wunner <[email protected]>--- .../bindings/security/tpm/google,cr50.txt | 19 ---- .../bindings/security/tpm/st33zp24-i2c.txt | 34 ------ .../bindings/security/tpm/st33zp24-spi.txt | 32 ------ .../bindings/security/tpm/tpm-i2c.txt | 26 ----- .../bindings/security/tpm/tpm_tis_mmio.txt | 25 ---- .../bindings/security/tpm/tpm_tis_spi.txt | 23 ---- .../bindings/tpm/tcg,tpm-tis-i2c.yaml | 107 ++++++++++++++++++ .../bindings/tpm/tcg,tpm-tis-mmio.yaml | 50 ++++++++ .../bindings/tpm/tcg,tpm_tis-spi.yaml | 88 ++++++++++++++ .../devicetree/bindings/tpm/tpm-common.yaml | 56 +++++++++ .../devicetree/bindings/trivial-devices.yaml | 16 --- 11 files changed, 301 insertions(+), 175 deletions(-) delete mode 100644 Documentation/devicetree/bindings/security/tpm/google,cr50.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/st33zp24-spi.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm_tis_mmio.txt delete mode 100644 Documentation/devicetree/bindings/security/tpm/tpm_tis_spi.txt create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm-tis-mmio.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.yaml create mode 100644 Documentation/devicetree/bindings/tpm/tpm-common.yamlDocumentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml new file +41
-0@@ -0,0 +1,107 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: I²C-attached Trusted Platform Module conforming to TCG TIS specification + +maintainers: + - Lukas Wunner <[email protected]> + +description: | + The Trusted Computing Group (TCG) has defined a multi-vendor standard + for accessing a TPM chip. It can be transported over various buses, + one of them being I²C. The standard is named: + TCG PC Client Specific TPM Interface Specification (TIS) + https://trustedcomputinggroup.org/resource/pc-client-work-group-pc-client-specific-tpm-interface-specification-tis/ + +properties: + compatible: + items: + - enum: + - atmel,at97sc3204t + - google,cr50 # H1 Secure Microcontroller running Cr50 firmware + - infineon,slb9635tt + - infineon,slb9645tt + - infineon,slb9673 + - infineon,tpm_i2c_infineon + - nuvoton,npct501 + - nuvoton,npct601 + - st,st33zp24-i2c + - winbond,wpct301 + - const: tcg,tpm-tis-i2c + + reg: + description: address of TPM on the I²C bus + + clock-frequency: + description: clock frequency used to access TPM on the I²C bus + +allOf:
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml line 51
Quoted 10 lines
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml new file +10
-0+ - $ref: tpm-common.yaml# + - if: + properties: + compatible: + contains: + const: at97sc3201 + then: + properties: + $nodename: + pattern: "^tpm$"
Devices on I2C bus have a unit address.
Quoted 179 lines
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.yaml new file +56
-0+ - if: + properties: + compatible: + contains: + const: infineon,slb9635tt + then: + properties: + clock-frequency: + maximum: 100000 + - if: + properties: + compatible: + contains: + const: infineon,slb9645tt + then: + properties: + clock-frequency: + maximum: 400000 + +required: + - compatible + - reg + +unevaluatedProperties: false + +examples: + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + tpm@57 { + label = "tpm"; + compatible = "nuvoton,npct601", "tcg,tpm-tis-i2c"; + reg = <0x57>; + linux,sml-base = <0x7f 0xfd450000>; + linux,sml-size = <0x10000>; + }; + }; + + - | + #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", "tcg,tpm-tis-i2c"; + clock-frequency = <400000>; + interrupt-parent = <&gpio5>; + interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; + lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; + }; + };Documentation/devicetree/bindings/tpm/tcg,tpm-tis-mmio.yaml new file +50
-0@@ -0,0 +1,50 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-mmio.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: MMIO-accessed Trusted Platform Module conforming to TCG TIS specification + +maintainers: + - Lukas Wunner <[email protected]> + +description: | + The Trusted Computing Group (TCG) has defined a multi-vendor standard + for accessing a TPM chip. It can be transported over various buses, + one of them being LPC (via MMIO). The standard is named: + TCG PC Client Specific TPM Interface Specification (TIS) + https://trustedcomputinggroup.org/resource/pc-client-work-group-pc-client-specific-tpm-interface-specification-tis/ + +properties: + compatible: + items: + - enum: + - at97sc3201 + - atmel,at97sc3204 + - nuvoton,npct650 + - socionext,synquacer-tpm-mmio + - const: tcg,tpm-tis-mmio + + reg: + description: + location and length of the MMIO registers, length should be + at least 0x5000 bytes + +allOf: + - $ref: tpm-common.yaml# + +required: + - compatible + - reg + +unevaluatedProperties: false + +examples: + - | + tpm@90000 { + compatible = "atmel,at97sc3204", "tcg,tpm-tis-mmio"; + reg = <0x90000 0x5000>; + interrupt-parent = <&EIC0>; + interrupts = <1 2>; + };Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.yaml new file +61
-0@@ -0,0 +1,88 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/tpm/tcg,tpm_tis-spi.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SPI-attached Trusted Platform Module conforming to TCG TIS specification + +maintainers: + - Lukas Wunner <[email protected]> + +description: | + The Trusted Computing Group (TCG) has defined a multi-vendor standard + for accessing a TPM chip. It can be transported over various buses, + one of them being SPI. The standard is named: + TCG PC Client Specific TPM Interface Specification (TIS) + https://trustedcomputinggroup.org/resource/pc-client-work-group-pc-client-specific-tpm-interface-specification-tis/ + +properties: + compatible: + items: + - enum: + - google,cr50 # H1 Secure Microcontroller running Cr50 firmware + - infineon,slb9670 + - st,st33htpm-spi + - st,st33zp24-spi + - const: tcg,tpm_tis-spi + +allOf: + - $ref: tpm-common.yaml# + - $ref: /schemas/spi/spi-peripheral-props.yaml# + - if: + properties: + compatible: + contains: + const: st,st33zp24-spi + then: + properties: + spi-max-frequency: + maximum: 10000000 + +required: + - compatible + - reg + +unevaluatedProperties: false + +examples: + - | + spi { + #address-cells = <1>; + #size-cells = <0>; + + tpm@0 { + reg = <0>; + compatible = "google,cr50", "tcg,tpm_tis-spi"; + spi-max-frequency = <800000>; + }; + }; + + - |
Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.yaml line 71
Quoted 10 lines
Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.yaml new file +10
-0+ spi { + #address-cells = <1>; + #size-cells = <0>; + + tpm@0 { + reg = <0>; + compatible = "infineon,slb9670", "tcg,tpm_tis-spi"; + spi-max-frequency = <10000000>; + }; + };
Just a different compatible string and frequency doesn't really justify an example.
Quoted 33 lines
Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.yaml new file +17
-0+ + - | + #include <dt-bindings/gpio/gpio.h> + #include <dt-bindings/interrupt-controller/irq.h> + spi { + #address-cells = <1>; + #size-cells = <0>; + + tpm@0 { + reg = <0>; + compatible = "st,st33zp24-spi", "tcg,tpm_tis-spi"; + spi-max-frequency = <10000000>; + interrupt-parent = <&gpio5>; + interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; + lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; + }; + };Documentation/devicetree/bindings/tpm/tpm-common.yaml new file +10
-0@@ -0,0 +1,56 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/tpm/tpm-common.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Trusted Platform Module common properties + +maintainers: + - Lukas Wunner <[email protected]>
Documentation/devicetree/bindings/tpm/tpm-common.yaml line 20
Quoted 10 lines
Documentation/devicetree/bindings/tpm/tpm-common.yaml new file +10
-0+ +properties: + interrupts: + description: indicates command completion + maxItems: 1 + + label: + description: human readable string describing the device, e.g. "tpm" + + oneOf:
This will be an error because 'oneOf' here is a DT property name.
Documentation/devicetree/bindings/tpm/tpm-common.yaml line 30
Quoted 10 lines
Documentation/devicetree/bindings/tpm/tpm-common.yaml new file +10
-0+ - memory-region: + description: reserved memory allocated for firmware event log + maxItems: 1 + - allOf: + - linux,sml-base: + description: + base address of reserved memory allocated for firmware event log + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 2 + maxItems: 2
You can just define this as a uint64 instead. The source encoding doesn't matter.
Documentation/devicetree/bindings/tpm/tpm-common.yaml line 34
Quoted 4 lines
Documentation/devicetree/bindings/tpm/tpm-common.yaml new file +4
-0+ - linux,sml-size: + description: + size of reserved memory allocated for firmware event log + $ref: /schemas/types.yaml#/definitions/uint32
What you need here is just define these properties and then add this:
dependentRequired:
linux,sml-base: ['linux,sml-size']
linux,sml-size: ['linux,sml-base']
dependentSchemas:
memory-region:
properties:
linux,sml-base: false
linux,sml-base:
properties:
memory-region: false
Documentation/devicetree/bindings/tpm/tpm-common.yaml line 39
Quoted 5 lines
Documentation/devicetree/bindings/tpm/tpm-common.yaml new file +5
-0+ + powered-while-suspended: + description: + present when the TPM is left powered on between suspend and resume + (makes the suspend/resume callbacks do nothing)
Needs a type (type: boolean).
Quoted 75 lines
Documentation/devicetree/bindings/tpm/tpm-common.yaml new file +17
-0+ +allOf: + - if: + properties: + compatible: + contains: + const: st,st33zp24 + then: + properties: + lpcpd-gpios: + description: + Output GPIO pin used for ST33ZP24 power management of D1/D2 state. + If set, power must be present when the platform is going into + sleep/hibernate mode. + maxItems: 1 + +additionalProperties: trueDocumentation/devicetree/bindings/trivial-devices.yaml +0
-16@@ -49,8 +49,6 @@ properties: - ams,iaq-core # i2c serial eeprom (24cxx) - at,24c08 - # i2c trusted platform module (TPM) - - atmel,at97sc3204t # ATSHA204 - i2c h/w symmetric crypto module - atmel,atsha204 # ATSHA204A - i2c h/w symmetric crypto module@@ -145,12 +143,6 @@ properties: - infineon,ir38263 # Infineon IRPS5401 Voltage Regulator (PMIC) - infineon,irps5401 - # Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) - - infineon,slb9635tt - # Infineon SLB9645 I2C TPM (new protocol, max 400khz) - - infineon,slb9645tt - # Infineon SLB9673 I2C TPM 2.0 - - infineon,slb9673 # Infineon TLV493D-A1B6 I2C 3D Magnetic Sensor - infineon,tlv493d-a1b6 # Infineon Multi-phase Digital VR Controller xdpe11280@@ -301,10 +293,6 @@ properties: - national,lm85 # I2C ±0.33°C Accurate, 12-Bit + Sign Temperature Sensor and Thermal Window Comparator - national,lm92 - # i2c trusted platform module (TPM) - - nuvoton,npct501 - # i2c trusted platform module (TPM2) - - nuvoton,npct601 # Nuvoton Temperature Sensor - nuvoton,w83773g # OKI ML86V7667 video decoder@@ -349,8 +337,6 @@ properties: - silabs,si7020 # Skyworks SKY81452: Six-Channel White LED Driver with Touch Panel Bias Supply - skyworks,sky81452 - # Socionext SynQuacer TPM MMIO module - - socionext,synquacer-tpm-mmio # SparkFun Qwiic Joystick (COM-15168) with i2c interface - sparkfun,qwiic-joystick # i2c serial eeprom (24cxx)@@ -405,8 +391,6 @@ properties: - winbond,w83793 # Vicor Corporation Digital Supervisor - vicor,pli1209bc - # i2c trusted platform module (TPM) - - winbond,wpct301 required: - compatibleSignature · 1 line
2.40.1
PATCH 2/3 dt-bindings: tpm: Convert IBM vTPM bindings to DT schema
In reply to Lukas WunnerConvert the devicetree bindings for the IBM Virtual Trusted Platform Module to DT schema. Drop properties which are already documented in tpm-common.yaml.
Document the "IBM,vtpm20" compatible string introduced by commit 18b3670d79ae ("tpm: ibmvtpm: Add support for TPM2").
--- .../bindings/security/tpm/ibmvtpm.txt | 41 ------- .../devicetree/bindings/tpm/ibm,vtpm.yaml | 101 ++++++++++++++++++ 2 files changed, 101 insertions(+), 41 deletions(-) delete mode 100644 Documentation/devicetree/bindings/security/tpm/ibmvtpm.txt create mode 100644 Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml
Documentation/devicetree/bindings/security/tpm/ibmvtpm.txt deleted +0 -41
@@ -1,41 +0,0 @@ -* Device Tree Bindings for IBM Virtual Trusted Platform Module(vtpm) - -Required properties: - -- compatible : property name that conveys the platform architecture - identifiers, as 'IBM,vtpm' -- device_type : specifies type of virtual device -- interrupts : property specifying the interrupt source number and - sense code associated with this virtual I/O Adapters -- ibm,my-drc-index : integer index for the connector between the device - and its parent - present only if Dynamic - Reconfiguration(DR) Connector is enabled -- ibm,#dma-address-cells: specifies the number of cells that are used to - encode the physical address field of dma-window - properties -- ibm,#dma-size-cells : specifies the number of cells that are used to - encode the size field of dma-window properties -- ibm,my-dma-window : specifies DMA window associated with this virtual - IOA -- ibm,loc-code : specifies the unique and persistent location code - associated with this virtual I/O Adapters -- linux,sml-base : 64-bit base address of the reserved memory allocated - for the firmware event log -- linux,sml-size : size of the memory allocated for the firmware event log - -Example (IBM Virtual Trusted Platform Module) ---------------------------------------------- - - vtpm@30000003 { - ibm,#dma-size-cells = <0x2>; - compatible = "IBM,vtpm"; - device_type = "IBM,vtpm"; - ibm,my-drc-index = <0x30000003>; - ibm,#dma-address-cells = <0x2>; - linux,sml-base = <0xc60e 0x0>; - interrupts = <0xa0003 0x0>; - ibm,my-dma-window = <0x10000003 0x0 0x0 0x0 0x10000000>; - ibm,loc-code = "U8286.41A.10082DV-V3-C3"; - reg = <0x30000003>; - linux,sml-size = <0xbce10200>; - };
Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml new file +101 -0
101 lines not on this page · raw message
Signature · 1 line
2.40.1
Rob Herring
maintainerRe: [PATCH 2/3] dt-bindings: tpm: Convert IBM vTPM bindings to DT schema
Quoted 7 lines · Lukas Wunner
Convert the devicetree bindings for the IBM Virtual Trusted Platform Module to DT schema. Drop properties which are already documented in
tpm-common.yaml.Document the "IBM,vtpm20" compatible string introduced by commit
18b3670d79ae("tpm: ibmvtpm: Add support for TPM2").
Quoted 8 lines
Signed-off-by Lukas Wunner <[email protected]>--- .../bindings/security/tpm/ibmvtpm.txt | 41 ------- .../devicetree/bindings/tpm/ibm,vtpm.yaml | 101 ++++++++++++++++++ 2 files changed, 101 insertions(+), 41 deletions(-) delete mode 100644 Documentation/devicetree/bindings/security/tpm/ibmvtpm.txt create mode 100644 Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml: required:4: 'ibm,#dma-address-cells' does not match '^([a-zA-Z#][a-zA-Z0-9,+\\-._@]{0,63}|\\$nodename)$'
hint: 'required' must be valid DT property or node names
from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml: required:5: 'ibm,#dma-size-cells' does not match '^([a-zA-Z#][a-zA-Z0-9,+\\-._@]{0,63}|\\$nodename)$'
hint: 'required' must be valid DT property or node names
from schema $id: http://devicetree.org/meta-schemas/keywords.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/ibm,vtpm.example.dtb: vtpm@30000003: Unevaluated properties are not allowed ('linux,sml-base', 'linux,sml-size' were unexpected)
from schema $id: http://devicetree.org/schemas/tpm/ibm,vtpm.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/ibm,vtpm.example.dtb: vtpm@30000003: 'ibm,#dma-address-cells', 'ibm,#dma-size-cells' do not match any of the regexes: '.*-names$', '.*-supply$', '^#.*-cells$', '^#[a-zA-Z0-9,+\\-._]{0,63}$', '^[a-zA-Z0-9][a-zA-Z0-9,+\\-._]{0,63}$', '^[a-zA-Z0-9][a-zA-Z0-9,+\\-._]{0,63}@[0-9a-fA-F]+(,[0-9a-fA-F]+)*$', '^__.*__$', 'pinctrl-[0-9]+'
from schema $id: http://devicetree.org/schemas/dt-core.yaml#
doc reference errors (make refcheckdocs):
The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
Re: [PATCH 2/3] dt-bindings: tpm: Convert IBM vTPM bindings to DT schema
Quoted 2 lines · Rob Herring
My bot found errors running 'make DT_CHECKER_FLAGS=-m
dt_binding_check' on your patch (DT_CHECKER_FLAGSis new in v5.13):
Your bot hasn't read the cover letter, which discusses those errors:
Re: [PATCH 2/3] dt-bindings: tpm: Convert IBM vTPM bindings to DT schema
In reply to Lukas WunnerQuoted 86 lines · Lukas Wunner
Convert the devicetree bindings for the IBM Virtual Trusted Platform Module to DT schema. Drop properties which are already documented in
tpm-common.yaml.Document the "IBM,vtpm20" compatible string introduced by commit
18b3670d79ae("tpm: ibmvtpm: Add support for TPM2").Signed-off-by Lukas Wunner <[email protected]>--- .../bindings/security/tpm/ibmvtpm.txt | 41 ------- .../devicetree/bindings/tpm/ibm,vtpm.yaml | 101 ++++++++++++++++++ 2 files changed, 101 insertions(+), 41 deletions(-) delete mode 100644 Documentation/devicetree/bindings/security/tpm/ibmvtpm.txt create mode 100644 Documentation/devicetree/bindings/tpm/ibm,vtpm.yamlDocumentation/devicetree/bindings/security/tpm/ibmvtpm.txt deleted +0
-41@@ -1,41 +0,0 @@ -* Device Tree Bindings for IBM Virtual Trusted Platform Module(vtpm) - -Required properties: - -- compatible : property name that conveys the platform architecture - identifiers, as 'IBM,vtpm' -- device_type : specifies type of virtual device -- interrupts : property specifying the interrupt source number and - sense code associated with this virtual I/O Adapters -- ibm,my-drc-index : integer index for the connector between the device - and its parent - present only if Dynamic - Reconfiguration(DR) Connector is enabled -- ibm,#dma-address-cells: specifies the number of cells that are used to - encode the physical address field of dma-window - properties -- ibm,#dma-size-cells : specifies the number of cells that are used to - encode the size field of dma-window properties -- ibm,my-dma-window : specifies DMA window associated with this virtual - IOA -- ibm,loc-code : specifies the unique and persistent location code - associated with this virtual I/O Adapters -- linux,sml-base : 64-bit base address of the reserved memory allocated - for the firmware event log -- linux,sml-size : size of the memory allocated for the firmware event log - -Example (IBM Virtual Trusted Platform Module) ---------------------------------------------- - - vtpm@30000003 { - ibm,#dma-size-cells = <0x2>; - compatible = "IBM,vtpm"; - device_type = "IBM,vtpm"; - ibm,my-drc-index = <0x30000003>; - ibm,#dma-address-cells = <0x2>; - linux,sml-base = <0xc60e 0x0>; - interrupts = <0xa0003 0x0>; - ibm,my-dma-window = <0x10000003 0x0 0x0 0x0 0x10000000>; - ibm,loc-code = "U8286.41A.10082DV-V3-C3"; - reg = <0x30000003>; - linux,sml-size = <0xbce10200>; - };Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml new file +18
-0@@ -0,0 +1,101 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/tpm/ibm,vtpm.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: IBM Virtual Trusted Platform Module (vTPM) + +maintainers: + - Nayna Jain <[email protected]> + +description: | + Virtual TPM is used on IBM POWER7+ and POWER8 systems running POWERVM. + It is supported through the adjunct partition with firmware release 740 + or higher. With vTPM support, each lpar is able to have its own vTPM + without the physical TPM hardware. The TPM functionality is provided by + communicating with the vTPM adjunct partition through Hypervisor calls + (Hcalls) and Command/Response Queue (CRQ) commands.
Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml line 28
Quoted 10 lines
Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml new file +10
-0+ +properties: + compatible: + enum: + - IBM,vtpm + - IBM,vtpm20 + + device_type: + description: + type of virtual device
const: IBM,vtpm
Quoted 50 lines
Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml new file +50
-0+ + reg: + maxItems: 1 + + 'ibm,#dma-address-cells': + description: + number of cells that are used to encode the physical address field of + dma-window properties + $ref: /schemas/types.yaml#/definitions/uint32-array + + 'ibm,#dma-size-cells': + description: + number of cells that are used to encode the size field of + dma-window properties + $ref: /schemas/types.yaml#/definitions/uint32-array + + ibm,my-dma-window: + description: + DMA window associated with this virtual I/O Adapter + $ref: /schemas/types.yaml#/definitions/uint32-array + minItems: 5 + maxItems: 5 + + ibm,my-drc-index: + description: + integer index for the connector between the device and its parent; + present only if Dynamic Reconfiguration (DR) Connector is enabled + $ref: /schemas/types.yaml#/definitions/uint32 + + ibm,loc-code: + description: + unique and persistent location code associated with this virtual + I/O Adapter + $ref: /schemas/types.yaml#/definitions/string + +required: + - compatible + - device_type + - reg + - interrupts + - ibm,#dma-address-cells + - ibm,#dma-size-cells + - ibm,my-dma-window + - ibm,my-drc-index + - ibm,loc-code + - linux,sml-base + - linux,sml-size + +allOf: + - $ref: tpm-common.yaml#
Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml line 88
Quoted 10 lines
Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml new file +10
-0+ +unevaluatedProperties: false + +examples: + - | + soc { + #address-cells = <1>; + #size-cells = <0>; + + vtpm@30000003 {
tpm@...
With that,
Re: [PATCH 2/3] dt-bindings: tpm: Convert IBM vTPM bindings to DT schema
Quoted 12 lines · Rob Herring
Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml line 28
Quoted 9 lines · Lukas Wunner
Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml new file +9
-0+properties: + compatible: + enum: + - IBM,vtpm + - IBM,vtpm20 + + device_type: + description: + type of virtual deviceconst: IBM,vtpm
Hm, since IBM,vtpm20 is a valid compatible string, I'm guessing it's a valid device_type as well, so instead of a const I intend to use:
device_type:
description:
type of virtual device
enum:
- IBM,vtpm
- IBM,vtpm20
Thanks,
Lukas
PATCH 3/3 dt-bindings: tpm: Document Microsoft fTPM bindings
In reply to Lukas WunnerA driver for Microsoft's firmware-based Trusted Platform Module (fTPM) was merged with commit 09e574831b27 ("tpm/tpm_ftpm_tee: A driver for firmware TPM running inside TEE"), but its devicetree bindings were not.
This is the only remaining undocumented compatible string for a TPM, so add a DT schema based on the patch linked below.
--- .../bindings/tpm/microsoft,ftpm.yaml | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Documentation/devicetree/bindings/tpm/microsoft,ftpm.yaml
Documentation/devicetree/bindings/tpm/microsoft,ftpm.yaml new file +48 -0
@@ -0,0 +1,48 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/tpm/microsoft,ftpm.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Microsoft firmware-based Trusted Platform Module (fTPM) + +maintainers: + - Thirupathaiah Annapureddy <[email protected]> + - Sasha Levin <[email protected]> + +description: | + Commodity CPU architectures, such as ARM and Intel CPUs, have started to + offer trusted computing features in their CPUs aimed at displacing dedicated + trusted hardware. Unfortunately, these CPU architectures raise serious + challenges to building trusted systems because they omit providing secure + resources outside the CPU perimeter. + + Microsoft's firmware-based TPM 2.0 (fTPM) leverages ARM TrustZone to overcome + these challenges and provide software with security guarantees similar to + those of dedicated trusted hardware. + + https://www.microsoft.com/en-us/research/publication/ftpm-software-implementation-tpm-chip/ + https://github.com/Microsoft/ms-tpm-20-ref/tree/main/Samples/ARM32-FirmwareTPM + +properties: + compatible: + enum: + - microsoft,ftpm + +required: + - compatible + - linux,sml-base + - linux,sml-size + +allOf: + - $ref: tpm-common.yaml# + +unevaluatedProperties: false + +examples: + - | + tpm { + compatible = "microsoft,ftpm"; + linux,sml-base = <0x0 0xc0000000>; + linux,sml-size = <0x10000>; + };
Signature · 1 line
2.40.1
Rob Herring
maintainerRe: [PATCH 3/3] dt-bindings: tpm: Document Microsoft fTPM bindings
Quoted 7 lines · Lukas Wunner
A driver for Microsoft's firmware-based Trusted Platform Module (fTPM) was merged with commit
09e574831b27("tpm/tpm_ftpm_tee: A driver for firmware TPM running inside TEE"), but its devicetree bindings were not.This is the only remaining undocumented compatible string for a TPM, so add a DT schema based on the patch linked below.
Quoted 7 lines
Signed-off-by Lukas Wunner <[email protected]>--- .../bindings/tpm/microsoft,ftpm.yaml | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Documentation/devicetree/bindings/tpm/microsoft,ftpm.yaml
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/tpm/microsoft,ftpm.example.dtb: tpm: Unevaluated properties are not allowed ('linux,sml-base', 'linux,sml-size' were unexpected)
from schema $id: http://devicetree.org/schemas/tpm/microsoft,ftpm.yaml#
doc reference errors (make refcheckdocs):
The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
Re: [PATCH 3/3] dt-bindings: tpm: Document Microsoft fTPM bindings
Quoted 2 lines · Rob Herring
My bot found errors running 'make DT_CHECKER_FLAGS=-m
dt_binding_check' on your patch (DT_CHECKER_FLAGSis new in v5.13):
Your bot hasn't read the cover letter, which discusses those errors:
Re: [PATCH 3/3] dt-bindings: tpm: Document Microsoft fTPM bindings
In reply to Lukas WunnerQuoted 7 lines · Lukas Wunner
A driver for Microsoft's firmware-based Trusted Platform Module (fTPM) was merged with commit
09e574831b27("tpm/tpm_ftpm_tee: A driver for firmware TPM running inside TEE"), but its devicetree bindings were not.This is the only remaining undocumented compatible string for a TPM, so add a DT schema based on the patch linked below.
Quoted 6 lines
Signed-off-by Lukas Wunner <[email protected]>--- .../bindings/tpm/microsoft,ftpm.yaml | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 Documentation/devicetree/bindings/tpm/microsoft,ftpm.yaml
Rob Herring
maintainerQuoted 9 lines · Lukas Wunner
Rob asked me to consolidate and convert the TPM dt-bindings:
https://lore.kernel.org/all/[email protected]/I came across several issues:
First, this pull request is needed to cope with ibm,#dma-address-cells and ibm,#dma-size-cells properties used in ibm,vtpm.yaml:
Now applied.
Quoted 8 lines
Second, the compatible string "google,cr50" refers to a chip which has both an i2c and an spi interface (see
drivers/char/tpm/tpm_tis_i2c_cr50.cas well astpm_tis_spi_main.c) This confuses the schema validator because it thinks that "google,cr50" may only use i2c properties but tcg,tpm_tis-spi.yaml contains an spi example, which causes some warnings. It seems deeper code changes to the schema validator are required to avoid them:
Quoted 4 lines
Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.example.dtb: tpm@0: compatible:1: 'tcg,tpm-tis-i2c' was expected
from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.example.dtb: tpm@0: Unevaluated properties are not allowed ('compatible', 'spi-max-frequency' were unexpected) from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
You either need to put "google,cr50" into its own schema file with a custom 'select' that omits the generic compatibles or the spi and i2c schemas need a custom select omitting "google,cr50" or having just the generic compatible.
However, none of the current users of "google,cr50" have a fallback compatible, so perhaps its own schema file with no fallback is the answer. Is the fallback useful and is it worth updating all the users? Probably not since we have to keep support for "google,cr50" explicitly in the driver.
Quoted 7 lines
Third, the schema validator raises warnings about three properties I've defined in
tpm-common.yaml: "linux,sml-base" and "linux,sml-size" are nested in a oneOf/allOf clause and "lpcpd-gpios" is nested in an allOf/if-then clause. This seems to confuse the validator:
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.example.dtb: tpm@57: Unevaluated properties are not allowed ('linux,sml-base', 'linux,sml-size' were unexpected) from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
Should be fixed with my suggestion in patch 1.
Quoted 2 lines
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-i2c.example.dtb: tpm@13: Unevaluated properties are not allowed ('lpcpd-gpios' was unexpected) from schema $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-i2c.yaml#
The issue is here:
+ properties:
+ compatible:
+ contains:
+ const: st,st33zp24
That's an exact match, not a pattern. You could do 'pattern: '^st,st33zp24' or an enum with both compatible strings.
Rob