1fa2ba3b8SLaurent Vivier /* 29bf674bcSMark Cave-Ayland * QEMU Nubus 3fa2ba3b8SLaurent Vivier * 4fa2ba3b8SLaurent Vivier * Copyright (c) 2013-2018 Laurent Vivier <laurent@vivier.eu> 5fa2ba3b8SLaurent Vivier * 6fa2ba3b8SLaurent Vivier * This work is licensed under the terms of the GNU GPL, version 2 or later. 7fa2ba3b8SLaurent Vivier * See the COPYING file in the top-level directory. 8fa2ba3b8SLaurent Vivier * 9fa2ba3b8SLaurent Vivier */ 10fa2ba3b8SLaurent Vivier 11fa2ba3b8SLaurent Vivier #include "qemu/osdep.h" 12fa2ba3b8SLaurent Vivier #include "hw/sysbus.h" 13fa2ba3b8SLaurent Vivier #include "hw/nubus/nubus.h" 14fa2ba3b8SLaurent Vivier 15*1fa04232SMark Cave-Ayland 16*1fa04232SMark Cave-Ayland static void nubus_bridge_init(Object *obj) 17*1fa04232SMark Cave-Ayland { 18*1fa04232SMark Cave-Ayland NubusBridge *s = NUBUS_BRIDGE(obj); 19*1fa04232SMark Cave-Ayland 20*1fa04232SMark Cave-Ayland s->bus = NUBUS_BUS(qbus_create(TYPE_NUBUS_BUS, DEVICE(s), NULL)); 21*1fa04232SMark Cave-Ayland } 22*1fa04232SMark Cave-Ayland 23fa2ba3b8SLaurent Vivier static void nubus_bridge_class_init(ObjectClass *klass, void *data) 24fa2ba3b8SLaurent Vivier { 25fa2ba3b8SLaurent Vivier DeviceClass *dc = DEVICE_CLASS(klass); 26fa2ba3b8SLaurent Vivier 27fa2ba3b8SLaurent Vivier dc->fw_name = "nubus"; 28fa2ba3b8SLaurent Vivier } 29fa2ba3b8SLaurent Vivier 30fa2ba3b8SLaurent Vivier static const TypeInfo nubus_bridge_info = { 31fa2ba3b8SLaurent Vivier .name = TYPE_NUBUS_BRIDGE, 32fa2ba3b8SLaurent Vivier .parent = TYPE_SYS_BUS_DEVICE, 33*1fa04232SMark Cave-Ayland .instance_init = nubus_bridge_init, 349bf674bcSMark Cave-Ayland .instance_size = sizeof(NubusBridge), 35fa2ba3b8SLaurent Vivier .class_init = nubus_bridge_class_init, 36fa2ba3b8SLaurent Vivier }; 37fa2ba3b8SLaurent Vivier 38fa2ba3b8SLaurent Vivier static void nubus_register_types(void) 39fa2ba3b8SLaurent Vivier { 40fa2ba3b8SLaurent Vivier type_register_static(&nubus_bridge_info); 41fa2ba3b8SLaurent Vivier } 42fa2ba3b8SLaurent Vivier 43fa2ba3b8SLaurent Vivier type_init(nubus_register_types) 44