# 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 <lukas@wunner.de>

properties:
  $nodename:
    pattern: '^tpm(@[0-9a-f]+)?$'

  interrupts:
    description: indicates command completion
    maxItems: 1

  label:
    description: human readable string describing the device, e.g. "tpm"

  linux,sml-base:
    description:
      base address of reserved memory allocated for firmware event log
    $ref: /schemas/types.yaml#/definitions/uint64

  linux,sml-size:
    description:
      size of reserved memory allocated for firmware event log
    $ref: /schemas/types.yaml#/definitions/uint32

  memory-region:
    description: reserved memory allocated for firmware event log
    maxItems: 1

  powered-while-suspended:
    description:
      present when the TPM is left powered on between suspend and resume
      (makes the suspend/resume callbacks do nothing)
    type: boolean

  resets:
    description: Reset controller to reset the TPM
    maxItems: 1

  reset-gpios:
    description: Output GPIO pin to reset the TPM
    maxItems: 1

# must always have both linux,sml-base and linux,sml-size
dependentRequired:
  linux,sml-base: ['linux,sml-size']
  linux,sml-size: ['linux,sml-base']

# must only have either memory-region or linux,sml-base
# as well as either resets or reset-gpios
dependentSchemas:
  memory-region:
    properties:
      linux,sml-base: false
  linux,sml-base:
    properties:
      memory-region: false
  resets:
    properties:
      reset-gpios: false
  reset-gpios:
    properties:
      resets: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            pattern: '^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: true
