#ifndef BKSECAPP_RPMB_STORAGE_H_
#define BKSECAPP_RPMB_STORAGE_H_

#define TZ_RPMB_BKSECAPP_PARITION_ID  0x424B5341

#define TZ_RPMB_BKSECAPP_WRITE_CMD_SIZE     4
#define TZ_RPMB_BKSECAPP_STORE_SIZE         4
#define TZ_RPMB_BKSECAPP_COREDATA_SIZE      272 // key:256 pad:16
#define TZ_RPMB_BKSECAPP_MAX_RP_INDEX       32
#define TZ_RPMB_BKSECAPP_RPDATA_SIZE        TZ_RPMB_BKSECAPP_MAX_RP_INDEX * 4

#define TZ_RPMB_BKSECAPP_USED_SIZE ( TZ_RPMB_BKSECAPP_WRITE_CMD_SIZE + TZ_RPMB_BKSECAPP_STORE_SIZE \
			+ TZ_RPMB_BKSECAPP_COREDATA_SIZE + (TZ_RPMB_BKSECAPP_MAX_RP_INDEX * 4))
#define TZ_RPMB_BKSECAPP_BLOCK_SIZE 4096

#define TZ_RPMB_BKSECAPP_CMD_COREDATA 1
#define TZ_RPMB_BKSECAPP_CMD_RP_DATA  2

typedef struct rpmb_data_s
{
	uint32_t rpmb_cmd;
	uint32_t store_size;
	uint8_t CMdata[TZ_RPMB_BKSECAPP_COREDATA_SIZE];
	uint32_t RPdata[TZ_RPMB_BKSECAPP_MAX_RP_INDEX];
	uint8_t reserved[TZ_RPMB_BKSECAPP_BLOCK_SIZE - TZ_RPMB_BKSECAPP_USED_SIZE];
} __attribute__ ((packed)) rpmb_data_t;


int32_t bksecapp_rpmb_read(rpmb_data_t *req_buffer);
int32_t bksecapp_rpmb_write(rpmb_data_t *rsp_buffer);

#endif
