|
|
1.1 root 1: #ifndef HW_IDE_PCI_H
2: #define HW_IDE_PCI_H
3:
4: #include <hw/ide/internal.h>
5:
1.1.1.2 root 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;
1.1.1.3 ! root 25:
! 26: /* Bit 0-2 and 7: BM status register
! 27: * Bit 3-6: bus->error_status */
! 28: uint8_t migration_compat_status;
1.1.1.2 root 29: } BMDMAState;
30:
1.1 root 31: typedef struct PCIIDEState {
32: PCIDevice dev;
33: IDEBus bus[2];
34: BMDMAState bmdma[2];
35: uint32_t secondary; /* used only for cmd646 */
36: } PCIIDEState;
37:
1.1.1.2 root 38:
39: static inline IDEState *bmdma_active_if(BMDMAState *bmdma)
40: {
41: assert(bmdma->unit != (uint8_t)-1);
42: return bmdma->bus->ifs + bmdma->unit;
43: }
44:
45:
46: void bmdma_init(IDEBus *bus, BMDMAState *bm);
1.1 root 47: void bmdma_cmd_writeb(void *opaque, uint32_t addr, uint32_t val);
1.1.1.2 root 48: extern const IORangeOps bmdma_addr_ioport_ops;
1.1 root 49: void pci_ide_create_devs(PCIDevice *dev, DriveInfo **hd_table);
50:
51: extern const VMStateDescription vmstate_ide_pci;
52: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.