mmc: rpmb: Add interface functions
Add interface functions for external programs, other functions can use it to read and write rpmb partitions. Change-Id: Ie94a6586077e1e9f4fc2924d283029f0a4a3e545 Signed-off-by: Hisping Lin <hisping.lin@rock-chips.com>
This commit is contained in:
parent
87b8e6decf
commit
ea5fd1c643
|
|
@ -350,3 +350,58 @@ int mmc_rpmb_write(struct mmc *mmc, void *addr, unsigned short blk,
|
||||||
return -1;
|
return -1;
|
||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int read_counter(struct mmc *mmc, struct s_rpmb *requestpackets)
|
||||||
|
{
|
||||||
|
if (mmc_rpmb_request(mmc, requestpackets, 1, false))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (mmc_rpmb_response(mmc, requestpackets, RPMB_RESP_WCOUNTER, 1))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int program_key(struct mmc *mmc, struct s_rpmb *requestpackets)
|
||||||
|
{
|
||||||
|
if (mmc_rpmb_request(mmc, requestpackets, 1, true))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
memset(requestpackets, 0, sizeof(struct s_rpmb));
|
||||||
|
|
||||||
|
requestpackets->request = cpu_to_be16(RPMB_REQ_STATUS);
|
||||||
|
|
||||||
|
if (mmc_rpmb_request(mmc, requestpackets, 1, false))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return mmc_rpmb_response(mmc, requestpackets, RPMB_RESP_KEY, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int authenticated_read(struct mmc *mmc,
|
||||||
|
struct s_rpmb *requestpackets, uint16_t block_count)
|
||||||
|
{
|
||||||
|
if (mmc_rpmb_request(mmc, requestpackets, 1, false))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (mmc_rpmb_response
|
||||||
|
(mmc, requestpackets, RPMB_RESP_READ_DATA, block_count))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int authenticated_write(struct mmc *mmc, struct s_rpmb *requestpackets)
|
||||||
|
{
|
||||||
|
if (mmc_rpmb_request(mmc, requestpackets, 1, true))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
memset(requestpackets, 0, sizeof(struct s_rpmb));
|
||||||
|
|
||||||
|
requestpackets->request = cpu_to_be16(RPMB_REQ_STATUS);
|
||||||
|
|
||||||
|
if (mmc_rpmb_request(mmc, requestpackets, 1, false))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return mmc_rpmb_response(mmc, requestpackets, RPMB_RESP_WRITE_DATA, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -336,6 +336,12 @@ int do_authenticatedread(struct s_rpmb *requestpackets, uint16_t block_count);
|
||||||
int do_authenticatedwrite(struct s_rpmb *requestpackets);
|
int do_authenticatedwrite(struct s_rpmb *requestpackets);
|
||||||
struct mmc *do_returnmmc(void);
|
struct mmc *do_returnmmc(void);
|
||||||
|
|
||||||
|
int read_counter(struct mmc *mmc, struct s_rpmb *requestpackets);
|
||||||
|
int program_key(struct mmc *mmc, struct s_rpmb *requestpackets);
|
||||||
|
int authenticated_read
|
||||||
|
(struct mmc *mmc, struct s_rpmb *requestpackets, uint16_t block_count);
|
||||||
|
int authenticated_write(struct mmc *mmc, struct s_rpmb *requestpackets);
|
||||||
|
|
||||||
/* Driver model support */
|
/* Driver model support */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue