Statistics
| Branch: | Revision:

root / hw / ide / pci.h @ 2860e3eb

History | View | Annotate | Download (1.1 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 40a6238a Alexander Graf
    IORange addr_ioport;
23 40a6238a Alexander Graf
    QEMUBH *bh;
24 40a6238a Alexander Graf
    qemu_irq irq;
25 40a6238a Alexander Graf
} BMDMAState;
26 40a6238a Alexander Graf
27 65c0f135 Juan Quintela
typedef struct PCIIDEState {
28 65c0f135 Juan Quintela
    PCIDevice dev;
29 65c0f135 Juan Quintela
    IDEBus bus[2];
30 65c0f135 Juan Quintela
    BMDMAState bmdma[2];
31 7e078316 Juan Quintela
    uint32_t secondary; /* used only for cmd646 */
32 65c0f135 Juan Quintela
} PCIIDEState;
33 65c0f135 Juan Quintela
34 40a6238a Alexander Graf
35 40a6238a Alexander Graf
static inline IDEState *bmdma_active_if(BMDMAState *bmdma)
36 40a6238a Alexander Graf
{
37 40a6238a Alexander Graf
    assert(bmdma->unit != (uint8_t)-1);
38 40a6238a Alexander Graf
    return bmdma->bus->ifs + bmdma->unit;
39 40a6238a Alexander Graf
}
40 40a6238a Alexander Graf
41 40a6238a Alexander Graf
42 40a6238a Alexander Graf
void bmdma_init(IDEBus *bus, BMDMAState *bm);
43 3e7e1558 Juan Quintela
void bmdma_cmd_writeb(void *opaque, uint32_t addr, uint32_t val);
44 9fbef1ac Avi Kivity
extern const IORangeOps bmdma_addr_ioport_ops;
45 3e7e1558 Juan Quintela
void pci_ide_create_devs(PCIDevice *dev, DriveInfo **hd_table);
46 407a4f30 Juan Quintela
47 407a4f30 Juan Quintela
extern const VMStateDescription vmstate_ide_pci;
48 65c0f135 Juan Quintela
#endif