You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.1 KiB
88 lines
2.1 KiB
/*
|
|
* Copyright (c) Hisilicon Technologies Co., Ltd. 2019-2021. All rights reserved.
|
|
* Description:Key slot driver.Provide all the kernel API and ioctl API.
|
|
* Author : Hisilicon
|
|
* Create: 2019/06/22
|
|
*/
|
|
|
|
#include "drv_keyslot.h"
|
|
|
|
#include "linux/huanglong/securec.h"
|
|
|
|
#include "drv_keyslot_utils.h"
|
|
#include "hal_keyslot.h"
|
|
#include "drv_keyslot_func.h"
|
|
#include "drv_keyslot_ext.h"
|
|
#include "drv_keyslot_fmea.h"
|
|
|
|
static ks_export_func g_ks_export_funcs;
|
|
|
|
td_s32 drv_ks_init(td_void)
|
|
{
|
|
td_s32 ret;
|
|
|
|
ret = osal_exportfunc_register(SOC_ID_KEYSLOT, "SOC_KS", (td_void *)&g_ks_export_funcs);
|
|
if (ret != TD_SUCCESS) {
|
|
print_err_func(osal_exportfunc_register, ret);
|
|
return ret;
|
|
}
|
|
ret = osal_exportfunc_register(SOC_ID_USR, "SOC_USR", TD_NULL);
|
|
if (ret != TD_SUCCESS) {
|
|
osal_exportfunc_unregister(SOC_ID_KEYSLOT);
|
|
print_err_func(osal_exportfunc_register, ret);
|
|
goto out0;
|
|
}
|
|
|
|
ret = ks_mgmt_init();
|
|
if (ret != TD_SUCCESS) {
|
|
print_err_func(osal_exportfunc_register, ret);
|
|
goto out1;
|
|
}
|
|
|
|
keyslot_lock_init();
|
|
return TD_SUCCESS;
|
|
out1:
|
|
osal_exportfunc_unregister(SOC_ID_USR);
|
|
out0:
|
|
osal_exportfunc_unregister(SOC_ID_KEYSLOT);
|
|
return ret;
|
|
}
|
|
|
|
td_void drv_ks_deinit(td_void)
|
|
{
|
|
ks_mgmt_exit();
|
|
osal_exportfunc_unregister(SOC_ID_KEYSLOT);
|
|
osal_exportfunc_unregister(SOC_ID_USR);
|
|
return;
|
|
}
|
|
|
|
td_s32 ext_drv_ks_create(const ext_keyslot_type slot_type, td_handle *ks_handle)
|
|
{
|
|
td_s32 ret;
|
|
td_u32 slot_num = 0;
|
|
|
|
if (ks_handle == TD_NULL) {
|
|
print_err_code(SOC_ERR_KS_PTR_NULL);
|
|
return SOC_ERR_KS_PTR_NULL;
|
|
}
|
|
|
|
ret = ks_mgmt_auto_lock(slot_type, &slot_num);
|
|
*ks_handle = id_2_handle(slot_num, (td_u8)slot_type);
|
|
|
|
return ret;
|
|
}
|
|
EXPORT_SYMBOL(ext_drv_ks_create);
|
|
|
|
|
|
td_s32 ext_drv_ks_destory(const ext_keyslot_type slot_type, const td_handle ks_handle)
|
|
{
|
|
return ks_mgmt_unlock(slot_type, handle_2_id(ks_handle));
|
|
}
|
|
EXPORT_SYMBOL(ext_drv_ks_destory);
|
|
|
|
static ks_export_func g_ks_export_funcs = {
|
|
.ext_ks_create = ext_drv_ks_create,
|
|
.ext_ks_destory = ext_drv_ks_destory,
|
|
};
|
|
|