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