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