X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=hw%2Fisa.h;h=d2b6126602a5f932c2ce6516a4c98006b238a60c;hb=e07fc405dc0432c712c9e36c70229f0428f86fa1;hp=89b3004a53f68cfb959035adbc168f09edb4d1b3;hpb=87ecb68bdf8a3e40ef885ddbb7ca1797dca40ebf;p=qemu.git diff --git a/hw/isa.h b/hw/isa.h index 89b3004a5..d2b612660 100644 --- a/hw/isa.h +++ b/hw/isa.h @@ -1,12 +1,41 @@ +#ifndef HW_ISA_H +#define HW_ISA_H + /* ISA bus */ -extern target_phys_addr_t isa_mem_base; +#include "ioport.h" +#include "qdev.h" + +typedef struct ISABus ISABus; +typedef struct ISADevice ISADevice; +typedef struct ISADeviceInfo ISADeviceInfo; + +struct ISADevice { + DeviceState qdev; + uint32_t isairq[2]; + int nirqs; + uint16_t ioports[32]; + int nioports; +}; -int register_ioport_read(int start, int length, int size, - IOPortReadFunc *func, void *opaque); -int register_ioport_write(int start, int length, int size, - IOPortWriteFunc *func, void *opaque); -void isa_unassign_ioport(int start, int length); +typedef int (*isa_qdev_initfn)(ISADevice *dev); +struct ISADeviceInfo { + DeviceInfo qdev; + isa_qdev_initfn init; +}; + +ISABus *isa_bus_new(DeviceState *dev); +void isa_bus_irqs(qemu_irq *irqs); +qemu_irq isa_get_irq(int isairq); +void isa_init_irq(ISADevice *dev, qemu_irq *p, int isairq); +void isa_init_ioport(ISADevice *dev, uint16_t ioport); +void isa_init_ioport_range(ISADevice *dev, uint16_t start, uint16_t length); +void isa_qdev_register(ISADeviceInfo *info); +ISADevice *isa_create(const char *name); +ISADevice *isa_try_create(const char *name); +ISADevice *isa_create_simple(const char *name); + +extern target_phys_addr_t isa_mem_base; void isa_mmio_init(target_phys_addr_t base, target_phys_addr_t size); @@ -17,8 +46,8 @@ int DMA_write_memory (int nchan, void *buf, int pos, int size); void DMA_hold_DREQ (int nchan); void DMA_release_DREQ (int nchan); void DMA_schedule(int nchan); -void DMA_run (void); -void DMA_init (int high_page_enable); +void DMA_init(int high_page_enable, qemu_irq *cpu_request_exit); void DMA_register_channel (int nchan, DMA_transfer_handler transfer_handler, void *opaque); +#endif