/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ /* * Copyright (c) 2021 Amlogic, Inc. All rights reserved. */ #ifndef AML_KT_DEV #define AML_KT_DEV #define KT_KTE_MAX (128) #define KT_IVE_MAX (32) #define KT_IV_FLAG_OFFSET (31) struct aml_kt_dev { struct cdev cdev; struct mutex lock; /*define mutex*/ struct amlkt_cfg_param *kt_slot[KT_KTE_MAX]; struct amlkt_cfg_param *kt_iv_slot[KT_IVE_MAX]; void __iomem *base_addr; struct reg { u32 rdy_offset; u32 cfg_offset; u32 sts_offset; u32 key0_offset; u32 key1_offset; u32 key2_offset; u32 key3_offset; u32 s17_cfg_offset; } reg; u32 user_cap; u32 algo_cap; u32 kte_start; u32 kte_end; u32 ive_start; u32 ive_end; u32 kt_reserved; }; extern struct aml_kt_dev aml_kt_dev; int aml_kt_alloc(struct aml_kt_dev *dev, u32 flag, u32 *handle); int aml_kt_config(struct aml_kt_dev *dev, struct amlkt_cfg_param key_cfg); int aml_kt_set_host_key(struct aml_kt_dev *dev, struct amlkt_set_key_param *key_param); int aml_kt_free(struct aml_kt_dev *dev, u32 handle); int aml_kt_get_status(struct aml_kt_dev *dev, u32 handle, u32 *key_sts); int aml_kt_handle_to_kte(struct aml_kt_dev *dev, u32 handle, u32 *kte); int aml_kt_set_hw_key(struct aml_kt_dev *dev, u32 handle); #endif /* AML_KT_DEV */