text: /*
   * Copyright 2018 The Hafnium Authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     https://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  #pragma once
  
  #include "smc.h"
  
  /* clang-format off */
  
  /* The following are PSCI version codes. */
  #define PSCI_VERSION_0_2 0x00000002
  #define PSCI_VERSION_1_0 0x00010000
  #define PSCI_VERSION_1_1 0x00010001
  
  /* The following are function identifiers for PSCI. */
  #define PSCI_VERSION                 0x84000000
  #define PSCI_CPU_SUSPEND             0x84000001
  #define PSCI_CPU_OFF                 0x84000002
  #define PSCI_CPU_ON                  0x84000003
  #define PSCI_AFFINITY_INFO           0x84000004
  #define PSCI_MIGRATE                 0x84000005
  #define PSCI_MIGRATE_INFO_TYPE       0x84000006
  #define PSCI_MIGRATE_INFO_UP_CPU     0x84000007
  #define PSCI_SYSTEM_OFF              0x84000008
  #define PSCI_SYSTEM_RESET            0x84000009
  #define PSCI_FEATURES                0x8400000a
  #define PSCI_CPU_FREEZE              0x8400000b
  #define PSCI_CPU_DEFAULT_SUSPEND     0x8400000c
  #define PSCI_NODE_HW_STATE           0x8400000d
  #define PSCI_SYSTEM_SUSPEND          0x8400000e
  #define PSCI_SET_SYSPEND_MODE        0x8400000f
  #define PSCI_STAT_RESIDENCY          0x84000010
  #define PSCI_STAT_COUNT              0x84000011
  #define PSCI_SYSTEM_RESET2           0x84000012
  #define PSCI_MEM_PROTECT             0x84000013
  #define PSCI_MEM_PROTECT_CHECK_RANGE 0x84000014
  
  /* The following are return codes for PSCI. */
  #define PSCI_RETURN_ON_PENDING         2
  #define PSCI_RETURN_OFF                1
  #define PSCI_RETURN_ON                 0
  #define PSCI_RETURN_SUCCESS            0
  #define PSCI_ERROR_NOT_SUPPORTED       SMCCC_ERROR_UNKNOWN
  #define PSCI_ERROR_INVALID_PARAMETERS  (-2)
  #define PSCI_ERROR_DENIED              (-3)
  #define PSCI_ERROR_ALREADY_ON          (-4)
  #define PSCI_ERROR_ON_PENDING          (-5)
  #define PSCI_ERROR_INTERNAL_FAILURE    (-6)
  #define PSCI_ERROR_NOT_PRESENT         (-7)
  #define PSCI_ERROR_DISABLE             (-8)
  #define PSCI_ERROR_INVALID_ADDRESS     (-9)
  
  /* clang-format on */
  