You've already forked hardkernel-uboot
mirror of
https://github.com/archr-linux/hardkernel-uboot.git
synced 2026-07-13 03:18:42 -07:00
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:
@@ -350,3 +350,58 @@ int mmc_rpmb_write(struct mmc *mmc, void *addr, unsigned short blk,
|
||||
return -1;
|
||||
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);
|
||||
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 */
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user