root / hw / ide / pci.h @ 07a7484e
History | View | Annotate | Download (1.5 kB)
1 | 65c0f135 | Juan Quintela | #ifndef HW_IDE_PCI_H
|
---|---|---|---|
2 | 65c0f135 | Juan Quintela | #define HW_IDE_PCI_H
|
3 | 65c0f135 | Juan Quintela | |
4 | 65c0f135 | Juan Quintela | #include <hw/ide/internal.h> |
5 | 65c0f135 | Juan Quintela | |
6 | 40a6238a | Alexander Graf | typedef struct BMDMAState { |
7 | 40a6238a | Alexander Graf | IDEDMA dma; |
8 | 40a6238a | Alexander Graf | uint8_t cmd; |
9 | 40a6238a | Alexander Graf | uint8_t status; |
10 | 40a6238a | Alexander Graf | uint32_t addr; |
11 | 40a6238a | Alexander Graf | |
12 | 40a6238a | Alexander Graf | IDEBus *bus; |
13 | 40a6238a | Alexander Graf | /* current transfer state */
|
14 | 40a6238a | Alexander Graf | uint32_t cur_addr; |
15 | 40a6238a | Alexander Graf | uint32_t cur_prd_last; |
16 | 40a6238a | Alexander Graf | uint32_t cur_prd_addr; |
17 | 40a6238a | Alexander Graf | uint32_t cur_prd_len; |
18 | 40a6238a | Alexander Graf | uint8_t unit; |
19 | 40a6238a | Alexander Graf | BlockDriverCompletionFunc *dma_cb; |
20 | 40a6238a | Alexander Graf | int64_t sector_num; |
21 | 40a6238a | Alexander Graf | uint32_t nsector; |
22 | a9deb8c6 | Avi Kivity | MemoryRegion addr_ioport; |
23 | a9deb8c6 | Avi Kivity | MemoryRegion extra_io; |
24 | 40a6238a | Alexander Graf | QEMUBH *bh; |
25 | 40a6238a | Alexander Graf | qemu_irq irq; |
26 | def93791 | Kevin Wolf | |
27 | def93791 | Kevin Wolf | /* Bit 0-2 and 7: BM status register
|
28 | def93791 | Kevin Wolf | * Bit 3-6: bus->error_status */
|
29 | def93791 | Kevin Wolf | uint8_t migration_compat_status; |
30 | a9deb8c6 | Avi Kivity | struct PCIIDEState *pci_dev;
|
31 | 40a6238a | Alexander Graf | } BMDMAState; |
32 | 40a6238a | Alexander Graf | |
33 | a9deb8c6 | Avi Kivity | typedef struct CMD646BAR { |
34 | a9deb8c6 | Avi Kivity | MemoryRegion cmd; |
35 | a9deb8c6 | Avi Kivity | MemoryRegion data; |
36 | a9deb8c6 | Avi Kivity | IDEBus *bus; |
37 | a9deb8c6 | Avi Kivity | struct PCIIDEState *pci_dev;
|
38 | a9deb8c6 | Avi Kivity | } CMD646BAR; |
39 | a9deb8c6 | Avi Kivity | |
40 | 65c0f135 | Juan Quintela | typedef struct PCIIDEState { |
41 | 65c0f135 | Juan Quintela | PCIDevice dev; |
42 | 65c0f135 | Juan Quintela | IDEBus bus[2];
|
43 | 65c0f135 | Juan Quintela | BMDMAState bmdma[2];
|
44 | 7e078316 | Juan Quintela | uint32_t secondary; /* used only for cmd646 */
|
45 | a9deb8c6 | Avi Kivity | MemoryRegion bmdma_bar; |
46 | a9deb8c6 | Avi Kivity | CMD646BAR cmd646_bar[2]; /* used only for cmd646 */ |
47 | 65c0f135 | Juan Quintela | } PCIIDEState; |
48 | 65c0f135 | Juan Quintela | |
49 | 40a6238a | Alexander Graf | |
50 | 40a6238a | Alexander Graf | static inline IDEState *bmdma_active_if(BMDMAState *bmdma) |
51 | 40a6238a | Alexander Graf | { |
52 | 40a6238a | Alexander Graf | assert(bmdma->unit != (uint8_t)-1);
|
53 | 40a6238a | Alexander Graf | return bmdma->bus->ifs + bmdma->unit;
|
54 | 40a6238a | Alexander Graf | } |
55 | 40a6238a | Alexander Graf | |
56 | 40a6238a | Alexander Graf | |
57 | a9deb8c6 | Avi Kivity | void bmdma_init(IDEBus *bus, BMDMAState *bm, PCIIDEState *d);
|
58 | a9deb8c6 | Avi Kivity | void bmdma_cmd_writeb(BMDMAState *bm, uint32_t val);
|
59 | a9deb8c6 | Avi Kivity | extern MemoryRegionOps bmdma_addr_ioport_ops;
|
60 | 3e7e1558 | Juan Quintela | void pci_ide_create_devs(PCIDevice *dev, DriveInfo **hd_table);
|
61 | 407a4f30 | Juan Quintela | |
62 | 407a4f30 | Juan Quintela | extern const VMStateDescription vmstate_ide_pci; |
63 | 65c0f135 | Juan Quintela | #endif |