blob: b1478fd1c681df6e5283570dd88170b51486539f [file] [log] [blame]
/*
* ASPEED XDMA Controller
* Eddie James <eajames@linux.ibm.com>
*
* Copyright (C) 2019 IBM Corp.
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef ASPEED_XDMA_H
#define ASPEED_XDMA_H
#include "hw/sysbus.h"
#include "qom/object.h"
#define TYPE_ASPEED_XDMA "aspeed.xdma"
#define TYPE_ASPEED_2400_XDMA TYPE_ASPEED_XDMA "-ast2400"
#define TYPE_ASPEED_2500_XDMA TYPE_ASPEED_XDMA "-ast2500"
#define TYPE_ASPEED_2600_XDMA TYPE_ASPEED_XDMA "-ast2600"
OBJECT_DECLARE_TYPE(AspeedXDMAState, AspeedXDMAClass, ASPEED_XDMA)
#define ASPEED_XDMA_NUM_REGS (ASPEED_XDMA_REG_SIZE / sizeof(uint32_t))
#define ASPEED_XDMA_REG_SIZE 0x7C
struct AspeedXDMAState {
SysBusDevice parent;
MemoryRegion iomem;
qemu_irq irq;
char bmc_cmdq_readp_set;
uint32_t regs[ASPEED_XDMA_NUM_REGS];
};
struct AspeedXDMAClass {
SysBusDeviceClass parent_class;
uint8_t cmdq_endp;
uint8_t cmdq_wrp;
uint8_t cmdq_rdp;
uint8_t intr_ctrl;
uint32_t intr_ctrl_mask;
uint8_t intr_status;
uint32_t intr_complete;
};
#endif /* ASPEED_XDMA_H */