Statistics
| Branch: | Revision:

root / hw / ide / pci.h @ d81e54de

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