提交 86c86157 编写于 作者: G Gerd Hoffmann 提交者: malc

qdev: drop iobase properties from isa bus

Lot of ISA devices work at fixed addresses, so having iobase
as bus property doesn't make much sense.  Devices which can
have different iobases will get a device property.

Also simply hard-code stuff which can't be configured anyway.
Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
上级 316940b0
......@@ -1871,14 +1871,14 @@ static void fdctrl_connect_drives(fdctrl_t *fdctrl, BlockDriverState **fds)
}
}
fdctrl_t *fdctrl_init_isa(int isairq, int dma_chann,
uint32_t io_base,
BlockDriverState **fds)
fdctrl_t *fdctrl_init_isa(BlockDriverState **fds)
{
fdctrl_t *fdctrl;
ISADevice *dev;
int isairq = 6;
int dma_chann = 2;
dev = isa_create_simple("isa-fdc", io_base, 0, isairq, -1);
dev = isa_create_simple("isa-fdc", isairq, -1);
fdctrl = &(DO_UPCAST(fdctrl_isabus_t, busdev, dev)->state);
fdctrl->dma_chann = dma_chann;
......@@ -1968,14 +1968,15 @@ static int isabus_fdc_init1(ISADevice *dev)
{
fdctrl_isabus_t *isa = DO_UPCAST(fdctrl_isabus_t, busdev, dev);
fdctrl_t *fdctrl = &isa->state;
int iobase = 0x3f0;
register_ioport_read(isa->busdev.iobase[0] + 0x01, 5, 1,
register_ioport_read(iobase + 0x01, 5, 1,
&fdctrl_read_port, fdctrl);
register_ioport_read(isa->busdev.iobase[0] + 0x07, 1, 1,
register_ioport_read(iobase + 0x07, 1, 1,
&fdctrl_read_port, fdctrl);
register_ioport_write(isa->busdev.iobase[0] + 0x01, 5, 1,
register_ioport_write(iobase + 0x01, 5, 1,
&fdctrl_write_port, fdctrl);
register_ioport_write(isa->busdev.iobase[0] + 0x07, 1, 1,
register_ioport_write(iobase + 0x07, 1, 1,
&fdctrl_write_port, fdctrl);
isa_init_irq(&isa->busdev, &fdctrl->irq);
......
......@@ -3,9 +3,7 @@
typedef struct fdctrl_t fdctrl_t;
fdctrl_t *fdctrl_init_isa(int isairq, int dma_chann,
uint32_t io_base,
BlockDriverState **fds);
fdctrl_t *fdctrl_init_isa(BlockDriverState **fds);
fdctrl_t *fdctrl_init_sysbus(qemu_irq irq, int dma_chann,
target_phys_addr_t mmio_base,
BlockDriverState **fds);
......
......@@ -35,11 +35,6 @@ static struct BusInfo isa_bus_info = {
.name = "ISA",
.size = sizeof(ISABus),
.print_dev = isabus_dev_print,
.props = (Property[]) {
DEFINE_PROP_HEX32("iobase", ISADevice, iobase[0], -1),
DEFINE_PROP_HEX32("iobase2", ISADevice, iobase[1], -1),
DEFINE_PROP_END_OF_LIST(),
}
};
ISABus *isa_bus_new(DeviceState *dev)
......@@ -122,8 +117,7 @@ void isa_qdev_register(ISADeviceInfo *info)
qdev_register(&info->qdev);
}
ISADevice *isa_create_simple(const char *name, uint32_t iobase, uint32_t iobase2,
uint32_t irq, uint32 irq2)
ISADevice *isa_create_simple(const char *name, uint32_t irq, uint32 irq2)
{
DeviceState *dev;
ISADevice *isa;
......@@ -134,8 +128,6 @@ ISADevice *isa_create_simple(const char *name, uint32_t iobase, uint32_t iobase2
}
dev = qdev_create(&isabus->qbus, name);
isa = DO_UPCAST(ISADevice, qdev, dev);
isa->iobase[0] = iobase;
isa->iobase[1] = iobase2;
qdev_init(dev);
if (irq != -1) {
isa_connect_irq(isa, 0, irq);
......
......@@ -12,7 +12,6 @@ typedef struct ISADeviceInfo ISADeviceInfo;
struct ISADevice {
DeviceState qdev;
uint32_t iobase[2];
uint32_t isairq[2];
qemu_irq *irqs[2];
int nirqs;
......@@ -30,8 +29,7 @@ void isa_connect_irq(ISADevice *dev, int devirq, int isairq);
qemu_irq isa_reserve_irq(int isairq);
void isa_init_irq(ISADevice *dev, qemu_irq *p);
void isa_qdev_register(ISADeviceInfo *info);
ISADevice *isa_create_simple(const char *name, uint32_t iobase, uint32_t iobase2,
uint32_t irq, uint32_t irq2);
ISADevice *isa_create_simple(const char *name, uint32_t irq, uint32_t irq2);
extern target_phys_addr_t isa_mem_base;
......
......@@ -921,7 +921,7 @@ void mips_malta_init (ram_addr_t ram_size,
DMA_init(0);
/* Super I/O */
isa_dev = isa_create_simple("i8042", 0x60, 0x64, 1, 12);
isa_dev = isa_create_simple("i8042", 1, 12);
rtc_state = rtc_init(0x70, isa_reserve_irq(8), 2000);
serial_init(0x3f8, isa_reserve_irq(4), 115200, serial_hds[0]);
......@@ -932,7 +932,7 @@ void mips_malta_init (ram_addr_t ram_size,
dinfo = drive_get(IF_FLOPPY, 0, i);
fd[i] = dinfo ? dinfo->bdrv : NULL;
}
floppy_controller = fdctrl_init_isa(6, 2, 0x3f0, fd);
floppy_controller = fdctrl_init_isa(fd);
/* Sound card */
#ifdef HAS_AUDIO
......
......@@ -1373,7 +1373,7 @@ static void pc_init1(ram_addr_t ram_size,
}
}
isa_dev = isa_create_simple("i8042", 0x60, 0x64, 1, 12);
isa_dev = isa_create_simple("i8042", 1, 12);
DMA_init(0);
#ifdef HAS_AUDIO
audio_init(pci_enabled ? pci_bus : NULL, isa_irq);
......@@ -1383,7 +1383,7 @@ static void pc_init1(ram_addr_t ram_size,
dinfo = drive_get(IF_FLOPPY, 0, i);
fd[i] = dinfo ? dinfo->bdrv : NULL;
}
floppy_controller = fdctrl_init_isa(6, 2, 0x3f0, fd);
floppy_controller = fdctrl_init_isa(fd);
cmos_init(below_4g_mem_size, above_4g_mem_size, boot_device, hd);
......
......@@ -455,10 +455,10 @@ static int i8042_initfn(ISADevice *dev)
kbd_reset(s);
register_savevm("pckbd", 0, 3, kbd_save, kbd_load, s);
register_ioport_read(dev->iobase[0], 1, 1, kbd_read_data, s);
register_ioport_write(dev->iobase[0], 1, 1, kbd_write_data, s);
register_ioport_read(dev->iobase[1], 1, 1, kbd_read_status, s);
register_ioport_write(dev->iobase[1], 1, 1, kbd_write_command, s);
register_ioport_read(0x60, 1, 1, kbd_read_data, s);
register_ioport_write(0x60, 1, 1, kbd_write_data, s);
register_ioport_read(0x64, 1, 1, kbd_read_status, s);
register_ioport_write(0x64, 1, 1, kbd_write_command, s);
s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
......
......@@ -719,7 +719,7 @@ static void ppc_prep_init (ram_addr_t ram_size,
dinfo = drive_get(IF_FLOPPY, 0, i);
fd[i] = dinfo ? dinfo->bdrv : NULL;
}
fdctrl_init_isa(6, 2, 0x3f0, fd);
fdctrl_init_isa(fd);
/* Register speaker port */
register_ioport_read(0x61, 1, 1, speaker_ioport_read, NULL);
......
......@@ -617,12 +617,12 @@ static void sun4uv_init(ram_addr_t RAM_size,
pci_cmd646_ide_init(pci_bus, hd, 1);
isa_create_simple("i8042", 0x60, 0x64, 1, 12);
isa_create_simple("i8042", 1, 12);
for(i = 0; i < MAX_FD; i++) {
dinfo = drive_get(IF_FLOPPY, 0, i);
fd[i] = dinfo ? dinfo->bdrv : NULL;
}
fdctrl_init_isa(6, 2, 0x3f0, fd);
fdctrl_init_isa(fd);
/* FIXME: wire up interrupts. */
nvram = m48t59_init(NULL/*8*/, 0, 0x0074, NVRAM_SIZE, 59);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册