blob: 9f8a27267f1880b49a5f516efe1b7b642044e833 [file] [log] [blame] [edit]
/* 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 */