root / hw / ide / pci.h @ afe3ef1d
History | View | Annotate | Download (1.1 kB)
1 |
#ifndef HW_IDE_PCI_H
|
---|---|
2 |
#define HW_IDE_PCI_H
|
3 |
|
4 |
#include <hw/ide/internal.h> |
5 |
|
6 |
typedef struct BMDMAState { |
7 |
IDEDMA dma; |
8 |
uint8_t cmd; |
9 |
uint8_t status; |
10 |
uint32_t addr; |
11 |
|
12 |
IDEBus *bus; |
13 |
/* current transfer state */
|
14 |
uint32_t cur_addr; |
15 |
uint32_t cur_prd_last; |
16 |
uint32_t cur_prd_addr; |
17 |
uint32_t cur_prd_len; |
18 |
uint8_t unit; |
19 |
BlockDriverCompletionFunc *dma_cb; |
20 |
int64_t sector_num; |
21 |
uint32_t nsector; |
22 |
IORange addr_ioport; |
23 |
QEMUBH *bh; |
24 |
qemu_irq irq; |
25 |
} BMDMAState; |
26 |
|
27 |
typedef struct PCIIDEState { |
28 |
PCIDevice dev; |
29 |
IDEBus bus[2];
|
30 |
BMDMAState bmdma[2];
|
31 |
uint32_t secondary; /* used only for cmd646 */
|
32 |
} PCIIDEState; |
33 |
|
34 |
|
35 |
static inline IDEState *bmdma_active_if(BMDMAState *bmdma) |
36 |
{ |
37 |
assert(bmdma->unit != (uint8_t)-1);
|
38 |
return bmdma->bus->ifs + bmdma->unit;
|
39 |
} |
40 |
|
41 |
|
42 |
void bmdma_init(IDEBus *bus, BMDMAState *bm);
|
43 |
void bmdma_cmd_writeb(void *opaque, uint32_t addr, uint32_t val); |
44 |
extern const IORangeOps bmdma_addr_ioport_ops; |
45 |
void pci_ide_create_devs(PCIDevice *dev, DriveInfo **hd_table);
|
46 |
|
47 |
extern const VMStateDescription vmstate_ide_pci; |
48 |
#endif
|