Skip to content

Commit 02a68a3

Browse files
mcaylandvivier
authored andcommitted
mac_via: remove mac_via device
Remove the mac_via device and wire up both q800 VIA1 and VIA2 directly for the m68k q800 machine. Signed-off-by: Mark Cave-Ayland <[email protected]> Reviewed-by: Laurent Vivier <[email protected]> Message-Id: <[email protected]> Signed-off-by: Laurent Vivier <[email protected]>
1 parent 846ae7c commit 02a68a3

File tree

3 files changed

+36
-97
lines changed

3 files changed

+36
-97
lines changed

hw/m68k/q800.c

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ static void q800_init(MachineState *machine)
225225
hwaddr parameters_base;
226226
CPUState *cs;
227227
DeviceState *dev;
228-
DeviceState *via_dev, *via1_dev;
228+
DeviceState *via1_dev, *via2_dev;
229229
DeviceState *escc_orgate;
230230
SysBusESPState *sysbus_esp;
231231
ESPState *esp;
@@ -270,28 +270,30 @@ static void q800_init(MachineState *machine)
270270
object_property_set_link(OBJECT(glue), "cpu", OBJECT(cpu), &error_abort);
271271
sysbus_realize_and_unref(SYS_BUS_DEVICE(glue), &error_fatal);
272272

273-
/* VIA */
274-
275-
via_dev = qdev_new(TYPE_MAC_VIA);
273+
/* VIA 1 */
274+
via1_dev = qdev_new(TYPE_MOS6522_Q800_VIA1);
276275
dinfo = drive_get(IF_MTD, 0, 0);
277276
if (dinfo) {
278-
qdev_prop_set_drive(via_dev, "drive", blk_by_legacy_dinfo(dinfo));
277+
qdev_prop_set_drive(via1_dev, "drive", blk_by_legacy_dinfo(dinfo));
279278
}
280-
sysbus = SYS_BUS_DEVICE(via_dev);
279+
sysbus = SYS_BUS_DEVICE(via1_dev);
281280
sysbus_realize_and_unref(sysbus, &error_fatal);
282-
sysbus_mmio_map(sysbus, 0, VIA_BASE);
283-
qdev_connect_gpio_out_named(DEVICE(sysbus), "irq", 0,
284-
qdev_get_gpio_in(glue, 0));
285-
qdev_connect_gpio_out_named(DEVICE(sysbus), "irq", 1,
286-
qdev_get_gpio_in(glue, 1));
287-
288-
via1_dev = DEVICE(MOS6522_Q800_VIA1(&MAC_VIA(via_dev)->mos6522_via1));
289-
adb_bus = qdev_get_child_bus(DEVICE(via1_dev), "adb.0");
281+
sysbus_mmio_map(sysbus, 1, VIA_BASE);
282+
sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(glue, 0));
283+
284+
adb_bus = qdev_get_child_bus(via1_dev, "adb.0");
290285
dev = qdev_new(TYPE_ADB_KEYBOARD);
291286
qdev_realize_and_unref(dev, adb_bus, &error_fatal);
292287
dev = qdev_new(TYPE_ADB_MOUSE);
293288
qdev_realize_and_unref(dev, adb_bus, &error_fatal);
294289

290+
/* VIA 2 */
291+
via2_dev = qdev_new(TYPE_MOS6522_Q800_VIA2);
292+
sysbus = SYS_BUS_DEVICE(via2_dev);
293+
sysbus_realize_and_unref(sysbus, &error_fatal);
294+
sysbus_mmio_map(sysbus, 1, VIA_BASE + VIA_SIZE);
295+
sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(glue, 1));
296+
295297
/* MACSONIC */
296298

297299
if (nb_nics > 1) {
@@ -375,11 +377,11 @@ static void q800_init(MachineState *machine)
375377

376378
sysbus = SYS_BUS_DEVICE(dev);
377379
sysbus_realize_and_unref(sysbus, &error_fatal);
378-
sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in_named(via_dev,
380+
sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in_named(via2_dev,
379381
"via2-irq",
380382
VIA2_IRQ_SCSI_BIT));
381383
sysbus_connect_irq(sysbus, 1,
382-
qdev_get_gpio_in_named(via_dev, "via2-irq",
384+
qdev_get_gpio_in_named(via2_dev, "via2-irq",
383385
VIA2_IRQ_SCSI_DATA_BIT));
384386
sysbus_mmio_map(sysbus, 0, ESP_BASE);
385387
sysbus_mmio_map(sysbus, 1, ESP_PDMA);

hw/misc/mac_via.c

Lines changed: 13 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,9 @@
3434
#include "qemu/log.h"
3535

3636
/*
37-
* VIAs: There are two in every machine,
37+
* VIAs: There are two in every machine
3838
*/
3939

40-
#define VIA_SIZE (0x2000)
41-
4240
/*
4341
* Not all of these are true post MacII I think.
4442
* CSA: probably the ones CHRP marks as 'unused' change purposes
@@ -945,52 +943,6 @@ static const MemoryRegionOps mos6522_q800_via2_ops = {
945943
},
946944
};
947945

948-
static void mac_via_realize(DeviceState *dev, Error **errp)
949-
{
950-
MacVIAState *m = MAC_VIA(dev);
951-
MOS6522State *ms;
952-
953-
/* Pass through mos6522 output IRQs */
954-
ms = MOS6522(&m->mos6522_via1);
955-
object_property_add_alias(OBJECT(dev), "irq[0]", OBJECT(ms),
956-
SYSBUS_DEVICE_GPIO_IRQ "[0]");
957-
ms = MOS6522(&m->mos6522_via2);
958-
object_property_add_alias(OBJECT(dev), "irq[1]", OBJECT(ms),
959-
SYSBUS_DEVICE_GPIO_IRQ "[0]");
960-
961-
sysbus_realize(SYS_BUS_DEVICE(&m->mos6522_via1), &error_abort);
962-
sysbus_realize(SYS_BUS_DEVICE(&m->mos6522_via2), &error_abort);
963-
964-
/* Pass through mos6522 input IRQs */
965-
qdev_pass_gpios(DEVICE(&m->mos6522_via1), dev, "via1-irq");
966-
qdev_pass_gpios(DEVICE(&m->mos6522_via2), dev, "via2-irq");
967-
}
968-
969-
static void mac_via_init(Object *obj)
970-
{
971-
SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
972-
MacVIAState *m = MAC_VIA(obj);
973-
974-
/* MMIO */
975-
memory_region_init(&m->mmio, obj, "mac-via", 2 * VIA_SIZE);
976-
sysbus_init_mmio(sbd, &m->mmio);
977-
978-
memory_region_init_io(&m->via1mem, obj, &mos6522_q800_via1_ops,
979-
&m->mos6522_via1, "via1", VIA_SIZE);
980-
memory_region_add_subregion(&m->mmio, 0x0, &m->via1mem);
981-
982-
memory_region_init_io(&m->via2mem, obj, &mos6522_q800_via2_ops,
983-
&m->mos6522_via2, "via2", VIA_SIZE);
984-
memory_region_add_subregion(&m->mmio, VIA_SIZE, &m->via2mem);
985-
986-
/* Init VIAs 1 and 2 */
987-
object_initialize_child(obj, "via1", &m->mos6522_via1,
988-
TYPE_MOS6522_Q800_VIA1);
989-
990-
object_initialize_child(obj, "via2", &m->mos6522_via2,
991-
TYPE_MOS6522_Q800_VIA2);
992-
}
993-
994946
static void via1_postload_update_cb(void *opaque, bool running, RunState state)
995947
{
996948
MOS6522Q800VIA1State *v1s = MOS6522_Q800_VIA1(opaque);
@@ -1013,21 +965,6 @@ static int via1_post_load(void *opaque, int version_id)
1013965
return 0;
1014966
}
1015967

1016-
static void mac_via_class_init(ObjectClass *oc, void *data)
1017-
{
1018-
DeviceClass *dc = DEVICE_CLASS(oc);
1019-
1020-
dc->realize = mac_via_realize;
1021-
}
1022-
1023-
static TypeInfo mac_via_info = {
1024-
.name = TYPE_MAC_VIA,
1025-
.parent = TYPE_SYS_BUS_DEVICE,
1026-
.instance_size = sizeof(MacVIAState),
1027-
.instance_init = mac_via_init,
1028-
.class_init = mac_via_class_init,
1029-
};
1030-
1031968
/* VIA 1 */
1032969
static void mos6522_q800_via1_reset(DeviceState *dev)
1033970
{
@@ -1095,6 +1032,11 @@ static void mos6522_q800_via1_realize(DeviceState *dev, Error **errp)
10951032
static void mos6522_q800_via1_init(Object *obj)
10961033
{
10971034
MOS6522Q800VIA1State *v1s = MOS6522_Q800_VIA1(obj);
1035+
SysBusDevice *sbd = SYS_BUS_DEVICE(v1s);
1036+
1037+
memory_region_init_io(&v1s->via_mem, obj, &mos6522_q800_via1_ops, v1s,
1038+
"via1", VIA_SIZE);
1039+
sysbus_init_mmio(sbd, &v1s->via_mem);
10981040

10991041
/* ADB */
11001042
qbus_create_inplace((BusState *)&v1s->adb_bus, sizeof(v1s->adb_bus),
@@ -1187,6 +1129,13 @@ static void mos6522_q800_via2_reset(DeviceState *dev)
11871129

11881130
static void mos6522_q800_via2_init(Object *obj)
11891131
{
1132+
MOS6522Q800VIA2State *v2s = MOS6522_Q800_VIA2(obj);
1133+
SysBusDevice *sbd = SYS_BUS_DEVICE(v2s);
1134+
1135+
memory_region_init_io(&v2s->via_mem, obj, &mos6522_q800_via2_ops, v2s,
1136+
"via2", VIA_SIZE);
1137+
sysbus_init_mmio(sbd, &v2s->via_mem);
1138+
11901139
qdev_init_gpio_in_named(DEVICE(obj), via2_irq_request, "via2-irq",
11911140
VIA2_IRQ_NB);
11921141
}
@@ -1224,7 +1173,6 @@ static void mac_via_register_types(void)
12241173
{
12251174
type_register_static(&mos6522_q800_via1_type_info);
12261175
type_register_static(&mos6522_q800_via2_type_info);
1227-
type_register_static(&mac_via_info);
12281176
}
12291177

12301178
type_init(mac_via_register_types);

include/hw/misc/mac_via.h

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
#include "qom/object.h"
1616

1717

18+
#define VIA_SIZE 0x2000
19+
1820
/* VIA 1 */
1921
#define VIA1_IRQ_ONE_SECOND_BIT 0
2022
#define VIA1_IRQ_60HZ_BIT 1
@@ -38,6 +40,8 @@ struct MOS6522Q800VIA1State {
3840
/*< private >*/
3941
MOS6522State parent_obj;
4042

43+
MemoryRegion via_mem;
44+
4145
qemu_irq irqs[VIA1_IRQ_NB];
4246
uint8_t last_b;
4347

@@ -95,23 +99,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(MOS6522Q800VIA2State, MOS6522_Q800_VIA2)
9599
struct MOS6522Q800VIA2State {
96100
/*< private >*/
97101
MOS6522State parent_obj;
98-
};
99-
100-
101-
#define TYPE_MAC_VIA "mac_via"
102-
OBJECT_DECLARE_SIMPLE_TYPE(MacVIAState, MAC_VIA)
103-
104-
struct MacVIAState {
105-
SysBusDevice busdev;
106-
107-
/* MMIO */
108-
MemoryRegion mmio;
109-
MemoryRegion via1mem;
110-
MemoryRegion via2mem;
111102

112-
/* VIAs */
113-
MOS6522Q800VIA1State mos6522_via1;
114-
MOS6522Q800VIA2State mos6522_via2;
103+
MemoryRegion via_mem;
115104
};
116105

117106
#endif

0 commit comments

Comments
 (0)