xref: /openbmc/qemu/include/hw/misc/aspeed_hace.h (revision 2ec063788efd3a545c5aa2999159c9303bb476f3)
1 /*
2  * ASPEED Hash and Crypto Engine
3  *
4  * Copyright (C) 2021 IBM Corp.
5  *
6  * SPDX-License-Identifier: GPL-2.0-or-later
7  */
8 
9 #ifndef ASPEED_HACE_H
10 #define ASPEED_HACE_H
11 
12 #include "hw/sysbus.h"
13 
14 #define TYPE_ASPEED_HACE "aspeed.hace"
15 #define TYPE_ASPEED_AST2400_HACE TYPE_ASPEED_HACE "-ast2400"
16 #define TYPE_ASPEED_AST2500_HACE TYPE_ASPEED_HACE "-ast2500"
17 #define TYPE_ASPEED_AST2600_HACE TYPE_ASPEED_HACE "-ast2600"
18 OBJECT_DECLARE_TYPE(AspeedHACEState, AspeedHACEClass, ASPEED_HACE)
19 
20 #define ASPEED_HACE_NR_REGS (0x64 >> 2)
21 #define ASPEED_HACE_MAX_SG  256 /* max number of entries */
22 
23 struct AspeedHACEState {
24     SysBusDevice parent;
25 
26     MemoryRegion iomem;
27     qemu_irq irq;
28 
29     struct iovec iov_cache[ASPEED_HACE_MAX_SG];
30     uint32_t regs[ASPEED_HACE_NR_REGS];
31     uint32_t total_req_len;
32     uint32_t iov_count;
33 
34     MemoryRegion *dram_mr;
35     AddressSpace dram_as;
36 };
37 
38 
39 struct AspeedHACEClass {
40     SysBusDeviceClass parent_class;
41 
42     uint32_t src_mask;
43     uint32_t dest_mask;
44     uint32_t key_mask;
45     uint32_t hash_mask;
46 };
47 
48 #endif /* _ASPEED_HACE_H_ */
49