1*fa2ba3b8SLaurent Vivier /* 2*fa2ba3b8SLaurent Vivier * Copyright (c) 2013-2018 Laurent Vivier <laurent@vivier.eu> 3*fa2ba3b8SLaurent Vivier * 4*fa2ba3b8SLaurent Vivier * This work is licensed under the terms of the GNU GPL, version 2 or later. 5*fa2ba3b8SLaurent Vivier * See the COPYING file in the top-level directory. 6*fa2ba3b8SLaurent Vivier * 7*fa2ba3b8SLaurent Vivier */ 8*fa2ba3b8SLaurent Vivier 9*fa2ba3b8SLaurent Vivier #include "qemu/osdep.h" 10*fa2ba3b8SLaurent Vivier #include "hw/sysbus.h" 11*fa2ba3b8SLaurent Vivier #include "hw/nubus/mac-nubus-bridge.h" 12*fa2ba3b8SLaurent Vivier 13*fa2ba3b8SLaurent Vivier 14*fa2ba3b8SLaurent Vivier static void mac_nubus_bridge_init(Object *obj) 15*fa2ba3b8SLaurent Vivier { 16*fa2ba3b8SLaurent Vivier MacNubusState *s = MAC_NUBUS_BRIDGE(obj); 17*fa2ba3b8SLaurent Vivier SysBusDevice *sbd = SYS_BUS_DEVICE(obj); 18*fa2ba3b8SLaurent Vivier 19*fa2ba3b8SLaurent Vivier s->bus = NUBUS_BUS(qbus_create(TYPE_NUBUS_BUS, DEVICE(s), NULL)); 20*fa2ba3b8SLaurent Vivier 21*fa2ba3b8SLaurent Vivier sysbus_init_mmio(sbd, &s->bus->super_slot_io); 22*fa2ba3b8SLaurent Vivier sysbus_init_mmio(sbd, &s->bus->slot_io); 23*fa2ba3b8SLaurent Vivier } 24*fa2ba3b8SLaurent Vivier 25*fa2ba3b8SLaurent Vivier static void mac_nubus_bridge_class_init(ObjectClass *klass, void *data) 26*fa2ba3b8SLaurent Vivier { 27*fa2ba3b8SLaurent Vivier DeviceClass *dc = DEVICE_CLASS(klass); 28*fa2ba3b8SLaurent Vivier 29*fa2ba3b8SLaurent Vivier dc->desc = "Nubus bridge"; 30*fa2ba3b8SLaurent Vivier } 31*fa2ba3b8SLaurent Vivier 32*fa2ba3b8SLaurent Vivier static const TypeInfo mac_nubus_bridge_info = { 33*fa2ba3b8SLaurent Vivier .name = TYPE_MAC_NUBUS_BRIDGE, 34*fa2ba3b8SLaurent Vivier .parent = TYPE_NUBUS_BRIDGE, 35*fa2ba3b8SLaurent Vivier .instance_init = mac_nubus_bridge_init, 36*fa2ba3b8SLaurent Vivier .instance_size = sizeof(MacNubusState), 37*fa2ba3b8SLaurent Vivier .class_init = mac_nubus_bridge_class_init, 38*fa2ba3b8SLaurent Vivier }; 39*fa2ba3b8SLaurent Vivier 40*fa2ba3b8SLaurent Vivier static void mac_nubus_bridge_register_types(void) 41*fa2ba3b8SLaurent Vivier { 42*fa2ba3b8SLaurent Vivier type_register_static(&mac_nubus_bridge_info); 43*fa2ba3b8SLaurent Vivier } 44*fa2ba3b8SLaurent Vivier 45*fa2ba3b8SLaurent Vivier type_init(mac_nubus_bridge_register_types) 46