xref: /OK3568_Linux_fs/u-boot/cmd/rk_secure_storage.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd
4  */
5 
6 #include <common.h>
7 #include <command.h>
8 #include <dm.h>
9 #include <misc.h>
10 
11 #ifdef CONFIG_ROCKCHIP_OTP
dump_otps(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])12 static int dump_otps(cmd_tbl_t *cmdtp, int flag,
13 		     int argc, char * const argv[])
14 {
15 	struct udevice *dev;
16 	u8 otps[64] = {0};
17 	int ret;
18 
19 	/* retrieve the device */
20 	ret = uclass_get_device_by_driver(UCLASS_MISC,
21 					  DM_GET_DRIVER(rockchip_otp), &dev);
22 	if (ret) {
23 		printf("%s: no misc-device found\n", __func__);
24 		return 0;
25 	}
26 
27 	ret = misc_read(dev, 0, &otps, sizeof(otps));
28 	if (ret) {
29 		printf("%s: misc_read failed\n", __func__);
30 		return 0;
31 	}
32 
33 	printf("otp-contents:\n");
34 	print_buffer(0, otps, 1, 64, 16);
35 
36 	return 0;
37 }
38 
39 U_BOOT_CMD(
40 	rockchip_dump_otps, 1, 1, dump_otps,
41 	"Dump the content of the otps",
42 	""
43 );
44 #endif
45 
46 #ifdef CONFIG_ROCKCHIP_EFUSE
dump_efuses(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])47 static int dump_efuses(cmd_tbl_t *cmdtp, int flag,
48 		       int argc, char * const argv[])
49 {
50 	/*
51 	 * N.B.: This function is tailored towards the RK3399 and assumes that
52 	 *       there's always 32 fuses x 32 bits (i.e. 128 bytes of data) to
53 	 *       be read.
54 	 */
55 
56 	struct udevice *dev;
57 	u8 fuses[128] = {0};
58 	int ret;
59 
60 	/* retrieve the device */
61 	ret = uclass_get_device_by_driver(UCLASS_MISC,
62 					  DM_GET_DRIVER(rockchip_efuse), &dev);
63 	if (ret) {
64 		printf("%s: no misc-device found\n", __func__);
65 		return 0;
66 	}
67 
68 	ret = misc_read(dev, 0, &fuses, sizeof(fuses));
69 	if (ret) {
70 		printf("%s: misc_read failed\n", __func__);
71 		return 0;
72 	}
73 
74 	printf("efuse-contents:\n");
75 	print_buffer(0, fuses, 1, 128, 16);
76 
77 	return 0;
78 }
79 
80 U_BOOT_CMD(
81 	rockchip_dump_efuses, 1, 1, dump_efuses,
82 	"Dump the content of the efuses",
83 	""
84 );
85 #endif
86