#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_USED_SIZE (TZ_RPMB_BKSECAPP_WRITE_CMD_SIZE+TZ_RPMB_BKSECAPP_STORE_SIZE+TZ_RPMB_BKSECAPP_COREDATA_SIZE)
#define TZ_RPMB_BKSECAPP_BLOCK_SIZE 4096

#define TZ_RPMB_BKSECAPP_CMD_COREDATA 1


#define BKSECAPP_RPMB_SUCCESS                0
#define BKSECAPP_RPMB_FAILURE              (-1)
#define BKSECAPP_RPMB_ADD_OPEN_FAILURE    (-32)
#define BKSECAPP_RPMB_NOT_FOUND_CMD       (-33)
#define BKSECAPP_RPMB_MISMATCH_STORE_SIZE (-34)

typedef struct rpmb_data_s
{
	uint32 rpmb_cmd;
	uint32 store_size;
	uint8 CMdata[TZ_RPMB_BKSECAPP_COREDATA_SIZE];
	uint8 reserved[TZ_RPMB_BKSECAPP_BLOCK_SIZE - TZ_RPMB_BKSECAPP_USED_SIZE];
} __attribute__ ((packed)) rpmb_data_t;


int bksecapp_rpmb_read(rpmb_data_t *req_buffer);
int bksecapp_rpmb_write(rpmb_data_t *rsp_buffer);

#endif
