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