/*
 * =====================================================================================
 *
 *       Filename:  commandList.h
 *
 *    Description:  Common definitions.
 *
 *        Version:  1.0
 *        Created:  21/08/2019 03:42:11 AM
 *       Compiler:  arm
 *
 *        Company:  Samsung Electronics
 *        Copyright (c) 2017 by Samsung Electronics, All rights reserved.
 *
 * =====================================================================================
 */

#ifndef __COMMAND_LIST_H__
#define __COMMAND_LIST_H__

/*******************************************
 *
 * NWD-SWD Command list.
 *
 *******************************************/
// DRK TA Command.
#define CMD_PROV                           0x1000
#define CMD_SKM                            0x2000

// HIDL Command.
#define CMD_DRK_VND                        0x3000

// KEYMASTER Command.
#define CMD_KEYMASTER                      0x4000
#define CMD_MASK                           0xF000

// Operation Command
#define CMD_DEVICE_UNBOUND_KEY             0x0010
#define CMD_DEVICE_BOUND_KEY               0x0020
#define CMD_GENERATE_KEY                   0x0030
#define CMD_VERIFY_KEY                     0x0040
#define CMD_GET_INFO                       0x0050
#define CMD_REQUEST_HWVAULT                0x0060

// HIDL Operation Command
#define CMD_FILE_OP                        0x0100
#define CMD_TZ_OP                          0x0200

// SPU Command
#define CMD_SPU_OP                         0x0300

// Prov commands.
#define CMD_UNWRAP_DRK_BLOB                (CMD_PROV | CMD_DEVICE_UNBOUND_KEY | 0x0001)
#define CMD_UNWRAP_GAK_BLOB                (CMD_PROV | CMD_DEVICE_UNBOUND_KEY | 0x0002)
#define CMD_ENCRYPT_DRK_CSR                (CMD_PROV | CMD_DEVICE_BOUND_KEY   | 0x0003)
#define CMD_ENCRYPT_SAK_CSR                (CMD_PROV | CMD_DEVICE_BOUND_KEY   | 0x0004)
#define CMD_UNWRAP_AND_SAVE_DRK_BLOB       (CMD_PROV | CMD_DEVICE_UNBOUND_KEY | 0x0005)

#define CMD_SHARE_DRK_KEY                  (CMD_PROV | CMD_GET_INFO           | 0x0001)
#define CMD_IS_SUPPORTED_DRK_V2            (CMD_PROV | CMD_GET_INFO           | 0x0002)
#define CMD_VERIFY_SERVICE_KEY             (CMD_PROV | CMD_VERIFY_KEY         | 0x0001)

// Skm commands.
#define CMD_INSTALL_DRK_KEY                (CMD_SKM | CMD_DEVICE_UNBOUND_KEY  | 0x0001)
#define CMD_MAKE_DRK_CSR                   (CMD_SKM | CMD_DEVICE_BOUND_KEY    | 0x0001)
#define CMD_INSTALL_DRK_CERT               (CMD_SKM | CMD_DEVICE_BOUND_KEY    | 0x0002)
#define CMD_GENERATE_DRK_KEY               (CMD_SKM | CMD_DEVICE_BOUND_KEY    | 0x0003)
#define CMD_MAKE_TBS_CSR                   (CMD_SKM | CMD_DEVICE_BOUND_KEY    | 0x0004)

#define CMD_GENERATE_SERVICE_KEY           (CMD_SKM | CMD_GENERATE_KEY        | 0x0001)
#define CMD_RELEASE_GEN_SERV_KEY           (CMD_SKM | CMD_GENERATE_KEY        | 0x0002)
#define CMD_GENERATE_PROV_SERVICE_KEY      (CMD_SKM | CMD_GENERATE_KEY        | 0x0003)

#define CMD_VERIFY_DRK_KEY                 (CMD_SKM | CMD_VERIFY_KEY          | 0x0001)
#define CMD_VERIFY_BACKUP_KEY              (CMD_SKM | CMD_VERIFY_KEY          | 0x0002)

#define CMD_GET_DRK_UID                    (CMD_SKM | CMD_GET_INFO            | 0x0002)
#define CMD_GET_DRK_CERT                   (CMD_SKM | CMD_GET_INFO            | 0x0003)

#define CMD_GET_DEV_INFO                   (CMD_SKM | CMD_GET_INFO            | 0x0004)
#define CMD_GET_BIG_DATA                   (CMD_SKM | CMD_GET_INFO            | 0x0005)

#define CMD_READ_DRK_FROM_HWVAULT          (CMD_SKM | CMD_REQUEST_HWVAULT     | 0x0001)

// Keymaster.
#define CMD_INSTALL_GA_KEY                 (CMD_KEYMASTER | CMD_DEVICE_UNBOUND_KEY | 0x0001)
#define CMD_MAKE_SAK_CSR                   (CMD_KEYMASTER | CMD_DEVICE_BOUND_KEY   | 0x0002)

// HIDL commands.
#define CMD_VND_READFILE                   (CMD_DRK_VND | CMD_FILE_OP | 0x01)
#define CMD_VND_SAVEFILE                   (CMD_DRK_VND | CMD_FILE_OP | 0x03)
#define CMD_VND_FILESIZE                   (CMD_DRK_VND | CMD_FILE_OP | 0x04)
#define CMD_VND_APPENDFILE                 (CMD_DRK_VND | CMD_FILE_OP | 0x05)

// SPU commands
#define CMD_VND_GET_PDP_DATA               (CMD_DRK_VND | CMD_SPU_OP  | 0x01)
#define CMD_VND_SET_PDP_DATA               (CMD_DRK_VND | CMD_SPU_OP  | 0x02)
#define CMD_VND_CHECK_PDP_DATA             (CMD_DRK_VND | CMD_SPU_OP  | 0x03)
#define CMD_VND_CHECK_PDP_DATA_KEYSTORE    (CMD_DRK_VND | CMD_SPU_OP  | 0x04)
#define CMD_VND_SET_PDP_PROP               (CMD_DRK_VND | CMD_SPU_OP  | 0x05)
#define CMD_VND_GET_PDP_INFO               (CMD_DRK_VND | CMD_SPU_OP  | 0x06)
#define CMD_VND_PDP_SELFTEST               (CMD_DRK_VND | CMD_SPU_OP  | 0x07)
#define CMD_VND_TERMINATE_PDP              (CMD_DRK_VND | CMD_SPU_OP  | 0x08)
#define CMD_VND_UPDATE_CRYPTO_FW           (CMD_DRK_VND | CMD_SPU_OP  | 0x09)
#define CMD_VND_SAVE_BIGDATA               (CMD_DRK_VND | CMD_SPU_OP  | 0x10)
#define CMD_VND_SECNVM_POWER_ON            (CMD_DRK_VND | CMD_SPU_OP  | 0x11)
#define CMD_VND_SECNVM_POWER_OFF           (CMD_DRK_VND | CMD_SPU_OP  | 0x12)

// to be deleted commands
#define CMD_TZ_OP                          0x0200
#define CMD_VND_PRE_INIT                   (CMD_DRK_VND | CMD_TZ_OP   | 0x10)
#define CMD_VND_PRE_INIT_S                 (CMD_DRK_VND | CMD_TZ_OP   | 0x11)
#define CMD_VND_PRE_INIT_P                 (CMD_DRK_VND | CMD_TZ_OP   | 0x12)
#define CMD_VND_PRE_INIT_SP                (CMD_DRK_VND | CMD_TZ_OP   | 0x13)
#define CMD_VND_CLEANUP                    (CMD_DRK_VND | CMD_TZ_OP   | 0x20)
#define CMD_VND_CLEANUP_S                  (CMD_DRK_VND | CMD_TZ_OP   | 0x21)
#define CMD_VND_CLEANUP_P                  (CMD_DRK_VND | CMD_TZ_OP   | 0x22)
#define CMD_VND_CLEANUP_SP                 (CMD_DRK_VND | CMD_TZ_OP   | 0x23)

#endif  // End of __COMMAND_LIST_H__
