xref: /rk3399_rockchip-uboot/include/keylad.h (revision 39d40ad54eb2274a86419000e0e087673f86508a)
1 /* SPDX-License-Identifier:     GPL-2.0+ */
2 /*
3  * (C) Copyright 2025 Rockchip Electronics Co., Ltd
4  */
5 
6 #ifndef _CORE_KEYLAD_H_
7 #define _CORE_KEYLAD_H_
8 
9 #include <common.h>
10 #include <dm.h>
11 
12 enum RK_FW_KEYID {
13 	RK_FW_KEY0 = 0,
14 	RK_FW_KEYMAX
15 };
16 
17 struct dm_keylad_ops {
18 	/* transfer firmware key to dst module */
19 	int (*transfer_fwkey)(struct udevice *dev, ulong dst,
20 			      enum RK_FW_KEYID fw_keyid, u32 keylen);
21 };
22 
23 /**
24  * keylad_get_device() - Get keylad device
25  *
26  * @return dev on success, otherwise NULL
27  */
28 struct udevice *keylad_get_device(void);
29 
30 /**
31  * keylad_transfer_fwkey() - Transfer firmware key otp to dst module
32  *
33  * @dev: crypto device
34  * @dst: dst module addr
35  * @fw_keyid: firmware key id select from enum RK_FW_KEYID
36  * @keylen: key length of firmware key
37 
38  * @return 0 on success, otherwise failed
39  */
40 int keylad_transfer_fwkey(struct udevice *dev, ulong dst,
41 			  enum RK_FW_KEYID fw_keyid, u32 keylen);
42 
43 #endif
44