Lines Matching +full:- +full:- +full:short
1 // SPDX-License-Identifier: GPL-2.0+
6 * eMMC- Replay Protected Memory Block
7 * According to JEDEC Standard No. 84-A441
14 #include <u-boot/sha256.h>
70 unsigned short address;
71 unsigned short block_count;
72 unsigned short result;
73 unsigned short request;
99 printf("%s:mmc_set_blockcount-> %d\n", __func__, ret); in mmc_rpmb_request()
116 printf("%s:mmc_send_cmd-> %d\n", __func__, ret); in mmc_rpmb_request()
123 unsigned short expected) in mmc_rpmb_response()
132 printf("%s:mmc_set_blockcount-> %d\n", __func__, ret); in mmc_rpmb_response()
134 return -1; in mmc_rpmb_response()
148 printf("%s:mmc_send_cmd-> %d\n", __func__, ret); in mmc_rpmb_response()
150 return -1; in mmc_rpmb_response()
153 if (be16_to_cpu(s->request) != expected) { in mmc_rpmb_response()
156 be16_to_cpu(s->request)); in mmc_rpmb_response()
158 return -1; in mmc_rpmb_response()
160 ret = be16_to_cpu(s->result); in mmc_rpmb_response()
170 static int mmc_rpmb_status(struct mmc *mmc, unsigned short expected) in mmc_rpmb_status()
175 rpmb_frame->request = cpu_to_be16(RPMB_REQ_STATUS); in mmc_rpmb_status()
177 return -1; in mmc_rpmb_status()
233 rpmb_frame->request = cpu_to_be16(RPMB_REQ_WCOUNTER); in mmc_rpmb_get_counter()
235 return -1; in mmc_rpmb_get_counter()
242 *pcounter = be32_to_cpu(rpmb_frame->write_counter); in mmc_rpmb_get_counter()
250 rpmb_frame->request = cpu_to_be16(RPMB_REQ_KEY); in mmc_rpmb_set_key()
251 memcpy(rpmb_frame->mac, key, RPMB_SZ_MAC); in mmc_rpmb_set_key()
254 return -1; in mmc_rpmb_set_key()
259 int mmc_rpmb_read(struct mmc *mmc, void *addr, unsigned short blk, in mmc_rpmb_read()
260 unsigned short cnt, unsigned char *key) in mmc_rpmb_read()
268 rpmb_frame->address = cpu_to_be16(blk + i); in mmc_rpmb_read()
269 rpmb_frame->request = cpu_to_be16(RPMB_REQ_READ_DATA); in mmc_rpmb_read()
281 rpmb_hmac(key, rpmb_frame->data, 284, ret_hmac); in mmc_rpmb_read()
282 if (memcmp(ret_hmac, rpmb_frame->mac, RPMB_SZ_MAC)) { in mmc_rpmb_read()
288 memcpy(addr + i * RPMB_SZ_DATA, rpmb_frame->data, RPMB_SZ_DATA); in mmc_rpmb_read()
292 int mmc_rpmb_write(struct mmc *mmc, void *addr, unsigned short blk, in mmc_rpmb_write()
293 unsigned short cnt, unsigned char *key) in mmc_rpmb_write()
307 memcpy(rpmb_frame->data, addr + i * RPMB_SZ_DATA, RPMB_SZ_DATA); in mmc_rpmb_write()
308 rpmb_frame->address = cpu_to_be16(blk + i); in mmc_rpmb_write()
309 rpmb_frame->block_count = cpu_to_be16(1); in mmc_rpmb_write()
310 rpmb_frame->write_counter = cpu_to_be32(wcount); in mmc_rpmb_write()
311 rpmb_frame->request = cpu_to_be16(RPMB_REQ_WRITE_DATA); in mmc_rpmb_write()
313 rpmb_hmac(key, rpmb_frame->data, 284, rpmb_frame->mac); in mmc_rpmb_write()
326 unsigned short cnt) in send_write_mult_block()
343 unsigned short cnt) in send_read_mult_block()
360 unsigned short req_cnt, struct s_rpmb *rsp, in rpmb_route_write_req()
361 unsigned short rsp_cnt) in rpmb_route_write_req()
384 rsp->request = cpu_to_be16(RPMB_REQ_STATUS); in rpmb_route_write_req()
397 unsigned short req_cnt, struct s_rpmb *rsp, in rpmb_route_read_req()
398 unsigned short rsp_cnt) in rpmb_route_read_req()
425 unsigned short req_cnt, struct s_rpmb *rsp, in rpmb_route_frames()
426 unsigned short rsp_cnt) in rpmb_route_frames()
428 unsigned short n; in rpmb_route_frames()
435 if (req[n].request != req->request) in rpmb_route_frames()
436 return -EINVAL; in rpmb_route_frames()
438 switch (be16_to_cpu(req->request)) { in rpmb_route_frames()
441 return -EINVAL; in rpmb_route_frames()
446 return -EINVAL; in rpmb_route_frames()
451 return -EINVAL; in rpmb_route_frames()
456 return -EINVAL; in rpmb_route_frames()
461 be16_to_cpu(req->request)); in rpmb_route_frames()
462 return -EINVAL; in rpmb_route_frames()
479 return -EINVAL; in mmc_rpmb_route_frames()