/*
 * hdmOperations.h
 */

#ifndef _HDMOPERATIONS_H_
#define _HDMOPERATIONS_H_

#include <qsee_env.h>
#include <qsee_log.h>

typedef enum hdm_error_code {
        HDM_TATA_SUCCESS = 0,
        HDM_PERMISSION_DENIED,
        HDM_UNKNOWN_CMD,
        HDM_KG_GETNONCE_ERROR,
        HDM_KG_NOT_ACTIVATED,
        HDM_TATA_ERROR = 0xFFFFFFFF
} hdm_error_code_t;

/*
 * KG Commands
 */
#define KG_BLOCK_CMD    0x00000001
#define KG_UNBLOCK_CMD  0x00000002

/**
 * KG Status
 */
typedef struct {
        uint32_t device_block;
        uint32_t compromise_block;
} tz_hdm_kg_status_t;

extern char TZ_APP_NAME[];

uint32_t TA_Communication_kg_release ();
uint32_t TA_Communication_kg_apply ();
uint32_t TA_Communication_kg_get_status (tz_hdm_kg_status_t *kg_status);

#endif /* _HDMOPERATIONS_H_ */