/* * ASPEED Hash and Crypto Engine * * Copyright (c) 2024 Seagate Technology LLC and/or its Affiliates * Copyright (C) 2021 IBM Corp. * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef ASPEED_HACE_H #define ASPEED_HACE_H #include "hw/sysbus.h" #include "crypto/hash.h" #define TYPE_ASPEED_HACE "aspeed.hace" #define TYPE_ASPEED_AST2400_HACE TYPE_ASPEED_HACE "-ast2400" #define TYPE_ASPEED_AST2500_HACE TYPE_ASPEED_HACE "-ast2500" #define TYPE_ASPEED_AST2600_HACE TYPE_ASPEED_HACE "-ast2600" #define TYPE_ASPEED_AST1030_HACE TYPE_ASPEED_HACE "-ast1030" OBJECT_DECLARE_TYPE(AspeedHACEState, AspeedHACEClass, ASPEED_HACE) #define ASPEED_HACE_NR_REGS (0x64 >> 2) #define ASPEED_HACE_MAX_SG 256 /* max number of entries */ struct AspeedHACEState { SysBusDevice parent; MemoryRegion iomem; qemu_irq irq; struct iovec iov_cache[ASPEED_HACE_MAX_SG]; uint32_t regs[ASPEED_HACE_NR_REGS]; uint32_t total_req_len; uint32_t iov_count; MemoryRegion *dram_mr; AddressSpace dram_as; QCryptoHash *hash_ctx; }; struct AspeedHACEClass { SysBusDeviceClass parent_class; uint32_t src_mask; uint32_t dest_mask; uint32_t key_mask; uint32_t hash_mask; }; #endif /* ASPEED_HACE_H */