
/*
 * =====================================================================================
 *
 *       Filename:  hdm_rpmb.h
 *
 *    Description:  HDM definitions for RPMB manipulation
 *
 *        Version:  1.0
 *        Created:  09/16/2019 15:26:11 PM
 *       Revision:  none
 *       Compiler:  gcc
 *
 *        Company:  Samsung Electronics
 *        Copyright (c) 2015 by Samsung Electronics, All rights reserved.
 *
 * =====================================================================================
 */

#ifndef _HDM_RPMB_H_
#define _HDM_RPMB_H_

/**
 * HDM includes
 */
#include "tz_hdm_interface.h"
#include "hdm_defs.h"
#include "tlRpmbDriverApi.h"

/**
 * Conditional definitions
 */
#ifdef CONFIG_QSEE

#include <qsee_stor.h>
#define TZ_RPMB_HDM_BLOCK_SIZE    4
#define TZ_RPMB_HDM_PARTITION_ID  0x0D151010
#endif

#ifdef TEEGris
#define TZ_RPMB_HDM_BLOCK_SIZE    768
#define TZ_RPMB_HDM_PARTITION_ID  14
#else
#define TZ_RPMB_HDM_PARTITION_ID  7
#endif


/**
 * @brief
 * hdm_rpmb_init
 * RPMB initialization
 *
 * @param[in]  *rpmbSession - rpmbSession
 * 
 * @return HDM status code
 */
hdm_return_code_t hdm_rpmb_init(uint32_t *rpmbSession);

/**
 * @brief
 * hdm_rpmb_read
 * Read RPMB data
 *
 * @param[in]  *rpmbSession - rpmbSession
 * @param[out] *data     - data buffer with RPMB content
 * @param[in]  *data_len - read data length
 *
 * @return HDM status code
 */
hdm_return_code_t hdm_rpmb_read(uint32_t *rpmbSession, uint8_t *data, uint32_t data_len);

/**
 * @brief
 * hdm_rpmb_write
 * Write data on RPMB
 *
 * @param[in]  *rpmbSession - rpmbSession
 * @param[out] *data     - data buffer with RPMB content
 * @param[in]  *data_len - read data length
 *
 * @return HDM status code
 */
hdm_return_code_t hdm_rpmb_write(uint32_t *rpmbSession, uint8_t *data, uint32_t data_len);

/**
 * @brief
 * hdm_rpmb_init
 * RPMB initialization
 *
 * @param[in]  *rpmbSession - rpmbSession
 * 
 * @return HDM status code
 */
hdm_return_code_t hdm_rpmb_close(uint32_t *rpmbSession);

#endif /* _HDM_RPMB_H_ */
