@@ -948,11 +948,7 @@ static const MemoryRegionOps mos6522_q800_via2_ops = {
948
948
static void mac_via_realize (DeviceState * dev , Error * * errp )
949
949
{
950
950
MacVIAState * m = MAC_VIA (dev );
951
- MOS6522Q800VIA1State * v1s = & m -> mos6522_via1 ;
952
951
MOS6522State * ms ;
953
- ADBBusState * adb_bus = & v1s -> adb_bus ;
954
- struct tm tm ;
955
- int ret ;
956
952
957
953
/* Pass through mos6522 output IRQs */
958
954
ms = MOS6522 (& m -> mos6522_via1 );
@@ -968,44 +964,6 @@ static void mac_via_realize(DeviceState *dev, Error **errp)
968
964
/* Pass through mos6522 input IRQs */
969
965
qdev_pass_gpios (DEVICE (& m -> mos6522_via1 ), dev , "via1-irq" );
970
966
qdev_pass_gpios (DEVICE (& m -> mos6522_via2 ), dev , "via2-irq" );
971
-
972
- /* VIA 1 */
973
- m -> mos6522_via1 .one_second_timer = timer_new_ms (QEMU_CLOCK_VIRTUAL ,
974
- via1_one_second ,
975
- & m -> mos6522_via1 );
976
- via1_one_second_update (& m -> mos6522_via1 );
977
- m -> mos6522_via1 .sixty_hz_timer = timer_new_ns (QEMU_CLOCK_VIRTUAL ,
978
- via1_sixty_hz ,
979
- & m -> mos6522_via1 );
980
- via1_sixty_hz_update (& m -> mos6522_via1 );
981
-
982
- qemu_get_timedate (& tm , 0 );
983
- v1s -> tick_offset = (uint32_t )mktimegm (& tm ) + RTC_OFFSET ;
984
-
985
- adb_register_autopoll_callback (adb_bus , adb_via_poll , v1s );
986
- v1s -> adb_data_ready = qdev_get_gpio_in_named (dev , "via1-irq" ,
987
- VIA1_IRQ_ADB_READY_BIT );
988
-
989
- if (v1s -> blk ) {
990
- int64_t len = blk_getlength (v1s -> blk );
991
- if (len < 0 ) {
992
- error_setg_errno (errp , - len ,
993
- "could not get length of backing image" );
994
- return ;
995
- }
996
- ret = blk_set_perm (v1s -> blk ,
997
- BLK_PERM_CONSISTENT_READ | BLK_PERM_WRITE ,
998
- BLK_PERM_ALL , errp );
999
- if (ret < 0 ) {
1000
- return ;
1001
- }
1002
-
1003
- len = blk_pread (v1s -> blk , 0 , v1s -> PRAM , sizeof (v1s -> PRAM ));
1004
- if (len != sizeof (v1s -> PRAM )) {
1005
- error_setg (errp , "can't read PRAM contents" );
1006
- return ;
1007
- }
1008
- }
1009
967
}
1010
968
1011
969
static void mac_via_init (Object * obj )
@@ -1091,6 +1049,49 @@ static void mos6522_q800_via1_reset(DeviceState *dev)
1091
1049
v1s -> alt = REG_EMPTY ;
1092
1050
}
1093
1051
1052
+ static void mos6522_q800_via1_realize (DeviceState * dev , Error * * errp )
1053
+ {
1054
+ MOS6522Q800VIA1State * v1s = MOS6522_Q800_VIA1 (dev );
1055
+ ADBBusState * adb_bus = & v1s -> adb_bus ;
1056
+ struct tm tm ;
1057
+ int ret ;
1058
+
1059
+ v1s -> one_second_timer = timer_new_ms (QEMU_CLOCK_VIRTUAL , via1_one_second ,
1060
+ v1s );
1061
+ via1_one_second_update (v1s );
1062
+ v1s -> sixty_hz_timer = timer_new_ns (QEMU_CLOCK_VIRTUAL , via1_sixty_hz ,
1063
+ v1s );
1064
+ via1_sixty_hz_update (v1s );
1065
+
1066
+ qemu_get_timedate (& tm , 0 );
1067
+ v1s -> tick_offset = (uint32_t )mktimegm (& tm ) + RTC_OFFSET ;
1068
+
1069
+ adb_register_autopoll_callback (adb_bus , adb_via_poll , v1s );
1070
+ v1s -> adb_data_ready = qdev_get_gpio_in_named (dev , "via1-irq" ,
1071
+ VIA1_IRQ_ADB_READY_BIT );
1072
+
1073
+ if (v1s -> blk ) {
1074
+ int64_t len = blk_getlength (v1s -> blk );
1075
+ if (len < 0 ) {
1076
+ error_setg_errno (errp , - len ,
1077
+ "could not get length of backing image" );
1078
+ return ;
1079
+ }
1080
+ ret = blk_set_perm (v1s -> blk ,
1081
+ BLK_PERM_CONSISTENT_READ | BLK_PERM_WRITE ,
1082
+ BLK_PERM_ALL , errp );
1083
+ if (ret < 0 ) {
1084
+ return ;
1085
+ }
1086
+
1087
+ len = blk_pread (v1s -> blk , 0 , v1s -> PRAM , sizeof (v1s -> PRAM ));
1088
+ if (len != sizeof (v1s -> PRAM )) {
1089
+ error_setg (errp , "can't read PRAM contents" );
1090
+ return ;
1091
+ }
1092
+ }
1093
+ }
1094
+
1094
1095
static void mos6522_q800_via1_init (Object * obj )
1095
1096
{
1096
1097
MOS6522Q800VIA1State * v1s = MOS6522_Q800_VIA1 (obj );
@@ -1147,6 +1148,7 @@ static void mos6522_q800_via1_class_init(ObjectClass *oc, void *data)
1147
1148
{
1148
1149
DeviceClass * dc = DEVICE_CLASS (oc );
1149
1150
1151
+ dc -> realize = mos6522_q800_via1_realize ;
1150
1152
dc -> reset = mos6522_q800_via1_reset ;
1151
1153
dc -> vmsd = & vmstate_q800_via1 ;
1152
1154
device_class_set_props (dc , mos6522_q800_via1_properties );
0 commit comments