1#ifndef DMA_CTRL_H
2#define DMA_CTRL_H 1
3
4#include "qemu-common.h"
5#include "hw/hw.h"
6#include "qom/object.h"
7
8#define TYPE_DMA_CTRL "dma-ctrl"
9
10#define DMA_CTRL_CLASS(klass) \
11 OBJECT_CLASS_CHECK(DmaCtrlClass, (klass), TYPE_DMA_CTRL)
12#define DMA_CTRL_GET_CLASS(obj) \
13 OBJECT_GET_CLASS(DmaCtrlClass, (obj), TYPE_DMA_CTRL)
14#define DMA_CTRL(obj) \
15 INTERFACE_CHECK(DmaCtrl, (obj), TYPE_DMA_CTRL)
16
17typedef void (*dmactrl_notify_fn)(void *opaque);
18
19typedef struct DmaCtrlNotify {
20 void *opaque;
21 dmactrl_notify_fn cb;
22} DmaCtrlNotify;
23
24typedef struct DmaCtrl {
25 Object Parent;
26} DmaCtrl;
27
28typedef struct DmaCtrlClass {
29 InterfaceClass parent;
30
31 void (*read)(DmaCtrl *dma_ctrl, hwaddr addr, uint32_t len,
32 DmaCtrlNotify *notify, bool start_dma);
33} DmaCtrlClass;
34
35void dma_ctrl_read_with_notify(DmaCtrl *dma_ctrl, hwaddr addr, uint32_t len,
36 DmaCtrlNotify *notify, bool start_dma);
37
38#endif
39