17202b9dbSJohnny Huang /* 27202b9dbSJohnny Huang * (C) Copyright ASPEED Technology Inc. 37202b9dbSJohnny Huang * 47202b9dbSJohnny Huang * SPDX-License-Identifier: GPL-2.0+ 57202b9dbSJohnny Huang */ 67202b9dbSJohnny Huang 77202b9dbSJohnny Huang #ifndef _CRYPTO_H_ 87202b9dbSJohnny Huang #define _CRYPTO_H_ 97202b9dbSJohnny Huang 107202b9dbSJohnny Huang #define ASPEED_SHA224 0x0 117202b9dbSJohnny Huang #define ASPEED_SHA256 0x1 127202b9dbSJohnny Huang #define ASPEED_SHA384 0x2 137202b9dbSJohnny Huang #define ASPEED_SHA512 0x3 147202b9dbSJohnny Huang 157202b9dbSJohnny Huang #define ASPEED_RSA1024 0x0 167202b9dbSJohnny Huang #define ASPEED_RSA2048 0x1 177202b9dbSJohnny Huang #define ASPEED_RSA3072 0x2 187202b9dbSJohnny Huang #define ASPEED_RSA4096 0x3 197202b9dbSJohnny Huang 207202b9dbSJohnny Huang #define ASPEED_HACE_BASE (0x1E6D0000) 217202b9dbSJohnny Huang #define ASPEED_HACE_SRC 0x00 227202b9dbSJohnny Huang #define ASPEED_HACE_DEST 0x04 237202b9dbSJohnny Huang #define ASPEED_HACE_CONTEXT 0x08 /* 8 byte aligned*/ 247202b9dbSJohnny Huang #define ASPEED_HACE_DATA_LEN 0x0C 257202b9dbSJohnny Huang #define ASPEED_HACE_CMD 0x10 267202b9dbSJohnny Huang #define ASPEED_HACE_STS (ASPEED_HACE_BASE + 0x1C) 277202b9dbSJohnny Huang #define HACE_RSA_ISR BIT(13) 287202b9dbSJohnny Huang #define HACE_CRYPTO_ISR BIT(12) 297202b9dbSJohnny Huang #define HACE_HASH_ISR BIT(9) 307202b9dbSJohnny Huang #define HACE_RSA_BUSY BIT(2) 317202b9dbSJohnny Huang #define HACE_CRYPTO_BUSY BIT(1) 327202b9dbSJohnny Huang #define HACE_HASH_BUSY BIT(0) 337202b9dbSJohnny Huang #define ASPEED_HACE_HASH_SRC (ASPEED_HACE_BASE + 0x20) 347202b9dbSJohnny Huang #define ASPEED_HACE_HASH_DIGEST_BUFF (ASPEED_HACE_BASE + 0x24) 357202b9dbSJohnny Huang #define ASPEED_HACE_HASH_KEY_BUFF (ASPEED_HACE_BASE + 0x28) // 64 byte aligned,g6 16 byte aligned 367202b9dbSJohnny Huang #define ASPEED_HACE_HASH_DATA_LEN (ASPEED_HACE_BASE + 0x2C) 377202b9dbSJohnny Huang #define ASPEED_HACE_HASH_CMD (ASPEED_HACE_BASE + 0x30) 387202b9dbSJohnny Huang 39*4fbcd619SJohnny Huang struct aspeed_sg_list { 40*4fbcd619SJohnny Huang u32 len; 41*4fbcd619SJohnny Huang u32 phy_addr; 42*4fbcd619SJohnny Huang } __packed; 43*4fbcd619SJohnny Huang 44*4fbcd619SJohnny Huang extern int aspeed_sg_digest(struct aspeed_sg_list *src_list, u32 list_length, u32 length, u8 *digest, u32 method); 457202b9dbSJohnny Huang extern int digest_object(u8 *src, u32 length, u8 *digest, u32 method); 467202b9dbSJohnny Huang extern int aes256ctr_decrypt_object(u8 *src, u8 *dst, u32 length, u8 *context); 477202b9dbSJohnny Huang extern int rsa_alg(u8 *data, int data_bytes, u8 *m, int m_bits, u8 *e, int e_bits, u8 *dst, void *contex_buf); 487202b9dbSJohnny Huang extern void enable_crypto(void); 497202b9dbSJohnny Huang 507202b9dbSJohnny Huang #endif /* #ifndef _CRYPTO_H_ */ 51