]>
Commit | Line | Data |
---|---|---|
79383c9c BS |
1 | #ifndef HW_ISA_H |
2 | #define HW_ISA_H | |
f915a115 | 3 | |
87ecb68b PB |
4 | /* ISA bus */ |
5 | ||
32993977 | 6 | #include "ioport.h" |
af956cad | 7 | #include "memory.h" |
f915a115 GH |
8 | #include "qdev.h" |
9 | ||
10 | typedef struct ISABus ISABus; | |
11 | typedef struct ISADevice ISADevice; | |
12 | typedef struct ISADeviceInfo ISADeviceInfo; | |
13 | ||
14 | struct ISADevice { | |
15 | DeviceState qdev; | |
2091ba23 | 16 | uint32_t isairq[2]; |
f915a115 | 17 | int nirqs; |
dee41d58 GN |
18 | uint16_t ioports[32]; |
19 | int nioports; | |
f915a115 GH |
20 | }; |
21 | ||
81a322d4 | 22 | typedef int (*isa_qdev_initfn)(ISADevice *dev); |
f915a115 GH |
23 | struct ISADeviceInfo { |
24 | DeviceInfo qdev; | |
25 | isa_qdev_initfn init; | |
26 | }; | |
27 | ||
28 | ISABus *isa_bus_new(DeviceState *dev); | |
2091ba23 | 29 | void isa_bus_irqs(qemu_irq *irqs); |
ee951a37 | 30 | qemu_irq isa_get_irq(int isairq); |
2e15e23b | 31 | void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq); |
dee41d58 GN |
32 | void isa_init_ioport(ISADevice *dev, uint16_t ioport); |
33 | void isa_init_ioport_range(ISADevice *dev, uint16_t start, uint16_t length); | |
f915a115 | 34 | void isa_qdev_register(ISADeviceInfo *info); |
924f6d72 | 35 | ISADevice *isa_create(const char *name); |
86f4a9a5 | 36 | ISADevice *isa_try_create(const char *name); |
2e15e23b | 37 | ISADevice *isa_create_simple(const char *name); |
87ecb68b | 38 | |
c227f099 | 39 | extern target_phys_addr_t isa_mem_base; |
87ecb68b | 40 | |
af956cad | 41 | void isa_mmio_setup(MemoryRegion *mr, target_phys_addr_t size); |
968d683c | 42 | void isa_mmio_init(target_phys_addr_t base, target_phys_addr_t size); |
87ecb68b PB |
43 | |
44 | /* dma.c */ | |
45 | int DMA_get_channel_mode (int nchan); | |
46 | int DMA_read_memory (int nchan, void *buf, int pos, int size); | |
47 | int DMA_write_memory (int nchan, void *buf, int pos, int size); | |
48 | void DMA_hold_DREQ (int nchan); | |
49 | void DMA_release_DREQ (int nchan); | |
50 | void DMA_schedule(int nchan); | |
4556bd8b | 51 | void DMA_init(int high_page_enable, qemu_irq *cpu_request_exit); |
87ecb68b PB |
52 | void DMA_register_channel (int nchan, |
53 | DMA_transfer_handler transfer_handler, | |
54 | void *opaque); | |
79383c9c | 55 | #endif |