From 3d2bf4a1093a8598a5ac6038a2510ef864a68118 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Thu, 20 Aug 2009 15:22:22 +0200 Subject: ide: split away ide-mmio.c create ide-mmio.c and place mmio support there. only build ide-mmio support for platforms using it. Signed-off-by: Gerd Hoffmann Signed-off-by: Anthony Liguori --- hw/ide.c | 92 ---------------------------------------------------------------- 1 file changed, 92 deletions(-) (limited to 'hw/ide.c') diff --git a/hw/ide.c b/hw/ide.c index 4a12ea8878..7e4e83b04a 100644 --- a/hw/ide.c +++ b/hw/ide.c @@ -2699,98 +2699,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 */ -- cgit v1.2.3-55-g7522