blob: b1478fd1c681df6e5283570dd88170b51486539f [file] [log] [blame]
Eddie James118c82e2019-07-01 17:26:18 +01001/*
2 * ASPEED XDMA Controller
3 * Eddie James <eajames@linux.ibm.com>
4 *
5 * Copyright (C) 2019 IBM Corp.
Ryan Finnie5054ba12021-02-01 12:01:47 -08006 * SPDX-License-Identifier: GPL-2.0-or-later
Eddie James118c82e2019-07-01 17:26:18 +01007 */
8
9#ifndef ASPEED_XDMA_H
10#define ASPEED_XDMA_H
11
12#include "hw/sysbus.h"
Eduardo Habkostdb1015e2020-09-03 16:43:22 -040013#include "qom/object.h"
Eddie James118c82e2019-07-01 17:26:18 +010014
15#define TYPE_ASPEED_XDMA "aspeed.xdma"
Cédric Le Goater8efbee22021-05-01 10:03:52 +020016#define TYPE_ASPEED_2400_XDMA TYPE_ASPEED_XDMA "-ast2400"
17#define TYPE_ASPEED_2500_XDMA TYPE_ASPEED_XDMA "-ast2500"
18#define TYPE_ASPEED_2600_XDMA TYPE_ASPEED_XDMA "-ast2600"
19OBJECT_DECLARE_TYPE(AspeedXDMAState, AspeedXDMAClass, ASPEED_XDMA)
Eddie James118c82e2019-07-01 17:26:18 +010020
21#define ASPEED_XDMA_NUM_REGS (ASPEED_XDMA_REG_SIZE / sizeof(uint32_t))
22#define ASPEED_XDMA_REG_SIZE 0x7C
23
Eduardo Habkostdb1015e2020-09-03 16:43:22 -040024struct AspeedXDMAState {
Eddie James118c82e2019-07-01 17:26:18 +010025 SysBusDevice parent;
26
27 MemoryRegion iomem;
28 qemu_irq irq;
29
30 char bmc_cmdq_readp_set;
31 uint32_t regs[ASPEED_XDMA_NUM_REGS];
Eduardo Habkostdb1015e2020-09-03 16:43:22 -040032};
Eddie James118c82e2019-07-01 17:26:18 +010033
Cédric Le Goater8efbee22021-05-01 10:03:52 +020034struct AspeedXDMAClass {
35 SysBusDeviceClass parent_class;
36
37 uint8_t cmdq_endp;
38 uint8_t cmdq_wrp;
39 uint8_t cmdq_rdp;
40 uint8_t intr_ctrl;
41 uint32_t intr_ctrl_mask;
42 uint8_t intr_status;
43 uint32_t intr_complete;
44};
45
Eddie James118c82e2019-07-01 17:26:18 +010046#endif /* ASPEED_XDMA_H */