162db9a7bSJamin Lin /* 262db9a7bSJamin Lin * QTest testcase for the ASPEED Hash and Crypto Engine 362db9a7bSJamin Lin * 462db9a7bSJamin Lin * SPDX-License-Identifier: GPL-2.0-or-later 562db9a7bSJamin Lin * Copyright 2021 IBM Corp. 662db9a7bSJamin Lin */ 762db9a7bSJamin Lin 862db9a7bSJamin Lin #ifndef TESTS_ASPEED_HACE_UTILS_H 962db9a7bSJamin Lin #define TESTS_ASPEED_HACE_UTILS_H 1062db9a7bSJamin Lin 1162db9a7bSJamin Lin #include "qemu/osdep.h" 1262db9a7bSJamin Lin #include "libqtest.h" 1362db9a7bSJamin Lin #include "qemu/bitops.h" 1462db9a7bSJamin Lin 1562db9a7bSJamin Lin #define HACE_CMD 0x10 1662db9a7bSJamin Lin #define HACE_SHA_BE_EN BIT(3) 1762db9a7bSJamin Lin #define HACE_MD5_LE_EN BIT(2) 1862db9a7bSJamin Lin #define HACE_ALGO_MD5 0 1962db9a7bSJamin Lin #define HACE_ALGO_SHA1 BIT(5) 2062db9a7bSJamin Lin #define HACE_ALGO_SHA224 BIT(6) 2162db9a7bSJamin Lin #define HACE_ALGO_SHA256 (BIT(4) | BIT(6)) 2262db9a7bSJamin Lin #define HACE_ALGO_SHA512 (BIT(5) | BIT(6)) 2362db9a7bSJamin Lin #define HACE_ALGO_SHA384 (BIT(5) | BIT(6) | BIT(10)) 2462db9a7bSJamin Lin #define HACE_SG_EN BIT(18) 2562db9a7bSJamin Lin #define HACE_ACCUM_EN BIT(8) 2662db9a7bSJamin Lin 2762db9a7bSJamin Lin #define HACE_STS 0x1c 2862db9a7bSJamin Lin #define HACE_RSA_ISR BIT(13) 2962db9a7bSJamin Lin #define HACE_CRYPTO_ISR BIT(12) 3062db9a7bSJamin Lin #define HACE_HASH_ISR BIT(9) 3162db9a7bSJamin Lin #define HACE_RSA_BUSY BIT(2) 3262db9a7bSJamin Lin #define HACE_CRYPTO_BUSY BIT(1) 3362db9a7bSJamin Lin #define HACE_HASH_BUSY BIT(0) 3462db9a7bSJamin Lin #define HACE_HASH_SRC 0x20 3562db9a7bSJamin Lin #define HACE_HASH_DIGEST 0x24 3662db9a7bSJamin Lin #define HACE_HASH_KEY_BUFF 0x28 3762db9a7bSJamin Lin #define HACE_HASH_DATA_LEN 0x2c 3862db9a7bSJamin Lin #define HACE_HASH_CMD 0x30 3982658cd4SJamin Lin #define HACE_HASH_SRC_HI 0x90 4082658cd4SJamin Lin #define HACE_HASH_DIGEST_HI 0x94 4182658cd4SJamin Lin #define HACE_HASH_KEY_BUFF_HI 0x98 4262db9a7bSJamin Lin 4362db9a7bSJamin Lin /* Scatter-Gather Hash */ 4462db9a7bSJamin Lin #define SG_LIST_LEN_LAST BIT(31) 4562db9a7bSJamin Lin struct AspeedSgList { 4662db9a7bSJamin Lin uint32_t len; 4762db9a7bSJamin Lin uint32_t addr; 4862db9a7bSJamin Lin } __attribute__ ((__packed__)); 4962db9a7bSJamin Lin 5062db9a7bSJamin Lin struct AspeedMasks { 5162db9a7bSJamin Lin uint32_t src; 5262db9a7bSJamin Lin uint32_t dest; 53*0ddc4dc3SJamin Lin uint32_t key; 5462db9a7bSJamin Lin uint32_t len; 55cd9104e7SJamin Lin uint32_t src_hi; 56cd9104e7SJamin Lin uint32_t dest_hi; 57*0ddc4dc3SJamin Lin uint32_t key_hi; 5862db9a7bSJamin Lin }; 5962db9a7bSJamin Lin 6062db9a7bSJamin Lin void aspeed_test_md5(const char *machine, const uint32_t base, 61080a8325SJamin Lin const uint64_t src_addr); 6262db9a7bSJamin Lin void aspeed_test_sha256(const char *machine, const uint32_t base, 63080a8325SJamin Lin const uint64_t src_addr); 64d21eb132SJamin Lin void aspeed_test_sha384(const char *machine, const uint32_t base, 65080a8325SJamin Lin const uint64_t src_addr); 6662db9a7bSJamin Lin void aspeed_test_sha512(const char *machine, const uint32_t base, 67080a8325SJamin Lin const uint64_t src_addr); 6862db9a7bSJamin Lin void aspeed_test_sha256_sg(const char *machine, const uint32_t base, 69080a8325SJamin Lin const uint64_t src_addr); 70d21eb132SJamin Lin void aspeed_test_sha384_sg(const char *machine, const uint32_t base, 71080a8325SJamin Lin const uint64_t src_addr); 7262db9a7bSJamin Lin void aspeed_test_sha512_sg(const char *machine, const uint32_t base, 73080a8325SJamin Lin const uint64_t src_addr); 7462db9a7bSJamin Lin void aspeed_test_sha256_accum(const char *machine, const uint32_t base, 75080a8325SJamin Lin const uint64_t src_addr); 76d21eb132SJamin Lin void aspeed_test_sha384_accum(const char *machine, const uint32_t base, 77080a8325SJamin Lin const uint64_t src_addr); 7862db9a7bSJamin Lin void aspeed_test_sha512_accum(const char *machine, const uint32_t base, 79080a8325SJamin Lin const uint64_t src_addr); 8062db9a7bSJamin Lin void aspeed_test_addresses(const char *machine, const uint32_t base, 8162db9a7bSJamin Lin const struct AspeedMasks *expected); 8262db9a7bSJamin Lin 8362db9a7bSJamin Lin #endif /* TESTS_ASPEED_HACE_UTILS_H */ 8462db9a7bSJamin Lin 85