diff options
Diffstat (limited to 'hw/ide.c')
-rw-r--r-- | hw/ide.c | 92 |
1 files changed, 0 insertions, 92 deletions
@@ -2700,98 +2700,6 @@ void ide_dma_cancel(BMDMAState *bm) } /***********************************************************/ -/* MMIO based ide port - * This emulates IDE device connected directly to the CPU bus without - * dedicated ide controller, which is often seen on embedded boards. - */ - -typedef struct { - IDEBus *bus; - int shift; -} MMIOState; - -static uint32_t mmio_ide_read (void *opaque, target_phys_addr_t addr) -{ - MMIOState *s = (MMIOState*)opaque; - IDEBus *bus = s->bus; - addr >>= s->shift; - if (addr & 7) - return ide_ioport_read(bus, addr); - else - return ide_data_readw(bus, 0); -} - -static void mmio_ide_write (void *opaque, target_phys_addr_t addr, - uint32_t val) -{ - MMIOState *s = (MMIOState*)opaque; - IDEBus *bus = s->bus; - addr >>= s->shift; - if (addr & 7) - ide_ioport_write(bus, addr, val); - else - ide_data_writew(bus, 0, val); -} - -static CPUReadMemoryFunc * const mmio_ide_reads[] = { - mmio_ide_read, - mmio_ide_read, - mmio_ide_read, -}; - -static CPUWriteMemoryFunc * const mmio_ide_writes[] = { - mmio_ide_write, - mmio_ide_write, - mmio_ide_write, -}; - -static uint32_t mmio_ide_status_read (void *opaque, target_phys_addr_t addr) -{ - MMIOState *s= (MMIOState*)opaque; - IDEBus *bus = s->bus; - return ide_status_read(bus, 0); -} - -static void mmio_ide_cmd_write (void *opaque, target_phys_addr_t addr, - uint32_t val) -{ - MMIOState *s = (MMIOState*)opaque; - IDEBus *bus = s->bus; - ide_cmd_write(bus, 0, val); -} - -static CPUReadMemoryFunc * const mmio_ide_status[] = { - mmio_ide_status_read, - mmio_ide_status_read, - mmio_ide_status_read, -}; - -static CPUWriteMemoryFunc * const mmio_ide_cmd[] = { - mmio_ide_cmd_write, - mmio_ide_cmd_write, - mmio_ide_cmd_write, -}; - -void mmio_ide_init (target_phys_addr_t membase, target_phys_addr_t membase2, - qemu_irq irq, int shift, - BlockDriverState *hd0, BlockDriverState *hd1) -{ - MMIOState *s = qemu_mallocz(sizeof(MMIOState)); - IDEBus *bus = qemu_mallocz(sizeof(*bus)); - int mem1, mem2; - - ide_init2(bus, hd0, hd1, irq); - - s->bus = bus; - s->shift = shift; - - mem1 = cpu_register_io_memory(mmio_ide_reads, mmio_ide_writes, s); - mem2 = cpu_register_io_memory(mmio_ide_status, mmio_ide_cmd, s); - cpu_register_physical_memory(membase, 16 << shift, mem1); - cpu_register_physical_memory(membase2, 2 << shift, mem2); -} - -/***********************************************************/ /* CF-ATA Microdrive */ #define METADATA_SIZE 0x20 |