A new reset driver is about to be added to perform the reset sequence of the Infineon SLB9670 Trusted Platform Module. Document its device tree bindings. Signed-off-by: Lukas Wunner <lukas@xxxxxxxxx> --- .../bindings/reset/infineon,slb9670-reset.yaml | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Documentation/devicetree/bindings/reset/infineon,slb9670-reset.yaml diff --git a/Documentation/devicetree/bindings/reset/infineon,slb9670-reset.yaml b/Documentation/devicetree/bindings/reset/infineon,slb9670-reset.yaml new file mode 100644 index 00000000..b1e23d47 --- /dev/null +++ b/Documentation/devicetree/bindings/reset/infineon,slb9670-reset.yaml @@ -0,0 +1,68 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/reset/infineon,slb9670-reset.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Infineon SLB9670 TPM Reset Driver + +maintainers: + - Lukas Wunner <lukas@xxxxxxxxx> + +description: | + The Infineon SLB9670 Trusted Platform Module requires a specific reset + sequence on its RST# pin which is documented in sections 5.4 and 5.5 of + the datasheet [1]. This driver performs the reset sequence using a GPIO. + + The sequence with minimum wait intervals is as follows: + deassert RST# + wait at least 60 ms + assert RST# + wait at least 2 usecs + deassert RST# + wait at least 60 ms + assert RST# + wait at least 2 usecs + deassert RST# + wait at least 60 ms before issuing the first TPM command + + [1] https://www.infineon.com/dgdl/Infineon-SLB%209670VQ2.0-DataSheet-v01_04-EN.pdf?fileId=5546d4626fc1ce0b016fc78270350cd6 + +properties: + compatible: + enum: + - infineon,slb9670-reset + + reset-gpios: + maxItems: 1 + description: Reference to the GPIO connected to the RST# pin. + + "#reset-cells": + const: 0 + +required: + - compatible + - reset-gpios + - "#reset-cells" + +additionalProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + tpm_reset: reset-controller { + compatible = "infineon,slb9670-reset"; + #reset-cells = <0>; + reset-gpios = <&gpio 0 GPIO_ACTIVE_LOW>; + }; + + spi { + #address-cells = <1>; + #size-cells = <0>; + + tpm@0 { + compatible = "infineon,slb9670"; + reg = <0>; + resets = <&tpm_reset>; + }; + }; -- 2.40.1