pvpanic.c (e47dccc64b6ca570e4db96fd5fdb3bef251eb559) | pvpanic.c (db895a1e6a97e919f9b86d60c969377357b05066) |
---|---|
1/* 2 * QEMU simulated pvpanic device. 3 * 4 * Copyright Fujitsu, Corp. 2013 5 * 6 * Authors: 7 * Wen Congyang <wency@cn.fujitsu.com> 8 * Hu Tao <hutao@cn.fujitsu.com> --- 72 unchanged lines hidden (view full) --- 81 .read = pvpanic_ioport_read, 82 .write = pvpanic_ioport_write, 83 .impl = { 84 .min_access_size = 1, 85 .max_access_size = 1, 86 }, 87}; 88 | 1/* 2 * QEMU simulated pvpanic device. 3 * 4 * Copyright Fujitsu, Corp. 2013 5 * 6 * Authors: 7 * Wen Congyang <wency@cn.fujitsu.com> 8 * Hu Tao <hutao@cn.fujitsu.com> --- 72 unchanged lines hidden (view full) --- 81 .read = pvpanic_ioport_read, 82 .write = pvpanic_ioport_write, 83 .impl = { 84 .min_access_size = 1, 85 .max_access_size = 1, 86 }, 87}; 88 |
89static int pvpanic_isa_initfn(ISADevice *dev) | 89static void pvpanic_isa_initfn(Object *obj) |
90{ | 90{ |
91 PVPanicState *s = ISA_PVPANIC_DEVICE(obj); 92 93 memory_region_init_io(&s->io, &pvpanic_ops, s, "pvpanic", 1); 94} 95 96static void pvpanic_isa_realizefn(DeviceState *dev, Error **errp) 97{ 98 ISADevice *d = ISA_DEVICE(dev); |
|
91 PVPanicState *s = ISA_PVPANIC_DEVICE(dev); 92 static bool port_configured; 93 FWCfgState *fw_cfg; 94 | 99 PVPanicState *s = ISA_PVPANIC_DEVICE(dev); 100 static bool port_configured; 101 FWCfgState *fw_cfg; 102 |
95 memory_region_init_io(&s->io, &pvpanic_ops, s, "pvpanic", 1); 96 isa_register_ioport(dev, &s->io, s->ioport); | 103 isa_register_ioport(d, &s->io, s->ioport); |
97 98 if (!port_configured) { 99 fw_cfg = fw_cfg_find(); 100 if (fw_cfg) { 101 fw_cfg_add_file(fw_cfg, "etc/pvpanic-port", 102 g_memdup(&s->ioport, sizeof(s->ioport)), 103 sizeof(s->ioport)); 104 port_configured = true; 105 } 106 } | 104 105 if (!port_configured) { 106 fw_cfg = fw_cfg_find(); 107 if (fw_cfg) { 108 fw_cfg_add_file(fw_cfg, "etc/pvpanic-port", 109 g_memdup(&s->ioport, sizeof(s->ioport)), 110 sizeof(s->ioport)); 111 port_configured = true; 112 } 113 } |
107 108 return 0; | |
109} 110 111int pvpanic_init(ISABus *bus) 112{ 113 isa_create_simple(bus, TYPE_ISA_PVPANIC_DEVICE); 114 return 0; 115} 116 117static Property pvpanic_isa_properties[] = { 118 DEFINE_PROP_UINT16("ioport", PVPanicState, ioport, 0x505), 119 DEFINE_PROP_END_OF_LIST(), 120}; 121 122static void pvpanic_isa_class_init(ObjectClass *klass, void *data) 123{ 124 DeviceClass *dc = DEVICE_CLASS(klass); | 114} 115 116int pvpanic_init(ISABus *bus) 117{ 118 isa_create_simple(bus, TYPE_ISA_PVPANIC_DEVICE); 119 return 0; 120} 121 122static Property pvpanic_isa_properties[] = { 123 DEFINE_PROP_UINT16("ioport", PVPanicState, ioport, 0x505), 124 DEFINE_PROP_END_OF_LIST(), 125}; 126 127static void pvpanic_isa_class_init(ObjectClass *klass, void *data) 128{ 129 DeviceClass *dc = DEVICE_CLASS(klass); |
125 ISADeviceClass *ic = ISA_DEVICE_CLASS(klass); | |
126 | 130 |
127 ic->init = pvpanic_isa_initfn; | 131 dc->realize = pvpanic_isa_realizefn; |
128 dc->no_user = 1; 129 dc->props = pvpanic_isa_properties; 130} 131 132static TypeInfo pvpanic_isa_info = { 133 .name = TYPE_ISA_PVPANIC_DEVICE, 134 .parent = TYPE_ISA_DEVICE, 135 .instance_size = sizeof(PVPanicState), | 132 dc->no_user = 1; 133 dc->props = pvpanic_isa_properties; 134} 135 136static TypeInfo pvpanic_isa_info = { 137 .name = TYPE_ISA_PVPANIC_DEVICE, 138 .parent = TYPE_ISA_DEVICE, 139 .instance_size = sizeof(PVPanicState), |
140 .instance_init = pvpanic_isa_initfn, |
|
136 .class_init = pvpanic_isa_class_init, 137}; 138 139static void pvpanic_register_types(void) 140{ 141 type_register_static(&pvpanic_isa_info); 142} 143 144type_init(pvpanic_register_types) | 141 .class_init = pvpanic_isa_class_init, 142}; 143 144static void pvpanic_register_types(void) 145{ 146 type_register_static(&pvpanic_isa_info); 147} 148 149type_init(pvpanic_register_types) |