root / hw / ide / pci.h @ 216db403
History | View | Annotate | Download (1.6 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 | f6c11d56 | Andreas Färber | #define TYPE_PCI_IDE "pci-ide" |
41 | f6c11d56 | Andreas Färber | #define PCI_IDE(obj) OBJECT_CHECK(PCIIDEState, (obj), TYPE_PCI_IDE)
|
42 | f6c11d56 | Andreas Färber | |
43 | 65c0f135 | Juan Quintela | typedef struct PCIIDEState { |
44 | f6c11d56 | Andreas Färber | /*< private >*/
|
45 | f6c11d56 | Andreas Färber | PCIDevice parent_obj; |
46 | f6c11d56 | Andreas Färber | /*< public >*/
|
47 | f6c11d56 | Andreas Färber | |
48 | 65c0f135 | Juan Quintela | IDEBus bus[2];
|
49 | 65c0f135 | Juan Quintela | BMDMAState bmdma[2];
|
50 | 7e078316 | Juan Quintela | uint32_t secondary; /* used only for cmd646 */
|
51 | a9deb8c6 | Avi Kivity | MemoryRegion bmdma_bar; |
52 | a9deb8c6 | Avi Kivity | CMD646BAR cmd646_bar[2]; /* used only for cmd646 */ |
53 | 65c0f135 | Juan Quintela | } PCIIDEState; |
54 | 65c0f135 | Juan Quintela | |
55 | 40a6238a | Alexander Graf | |
56 | 40a6238a | Alexander Graf | static inline IDEState *bmdma_active_if(BMDMAState *bmdma) |
57 | 40a6238a | Alexander Graf | { |
58 | 40a6238a | Alexander Graf | assert(bmdma->unit != (uint8_t)-1);
|
59 | 40a6238a | Alexander Graf | return bmdma->bus->ifs + bmdma->unit;
|
60 | 40a6238a | Alexander Graf | } |
61 | 40a6238a | Alexander Graf | |
62 | 40a6238a | Alexander Graf | |
63 | a9deb8c6 | Avi Kivity | void bmdma_init(IDEBus *bus, BMDMAState *bm, PCIIDEState *d);
|
64 | a9deb8c6 | Avi Kivity | void bmdma_cmd_writeb(BMDMAState *bm, uint32_t val);
|
65 | a9deb8c6 | Avi Kivity | extern MemoryRegionOps bmdma_addr_ioport_ops;
|
66 | 3e7e1558 | Juan Quintela | void pci_ide_create_devs(PCIDevice *dev, DriveInfo **hd_table);
|
67 | 407a4f30 | Juan Quintela | |
68 | 407a4f30 | Juan Quintela | extern const VMStateDescription vmstate_ide_pci; |
69 | 65c0f135 | Juan Quintela | #endif |