From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630319279214474.33901818476704; Mon, 30 Aug 2021 03:27:59 -0700 (PDT) Received: from localhost ([::1]:52206 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKeWE-0000Ao-6i for importer@patchew.org; Mon, 30 Aug 2021 06:27:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58840) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeTb-0005hU-Vc for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:23 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53284 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeTV-0006q5-DD for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:14 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeSx-0003D2-Ln; Mon, 30 Aug 2021 11:24:40 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:36 +0100 Message-Id: <20210830102447.10806-2-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 01/12] mac_via: introduce new VMStateDescription for q800 VIA1 and VIA2 X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319279831100003 Content-Type: text/plain; charset="utf-8" Move the parent mos6522 objects from vmstate_mac_via into the new VMStateDe= scription structures to begin the process of splitting MacVIAState into separate VIA1= and VIA2 devices. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier --- hw/misc/mac_via.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index ff0156db76..46e65058e0 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -1083,16 +1083,12 @@ static const VMStateDescription vmstate_mac_via =3D= { .post_load =3D mac_via_post_load, .fields =3D (VMStateField[]) { /* VIAs */ - VMSTATE_STRUCT(mos6522_via1.parent_obj, MacVIAState, 0, vmstate_mo= s6522, - MOS6522State), VMSTATE_UINT8(mos6522_via1.last_b, MacVIAState), VMSTATE_BUFFER(mos6522_via1.PRAM, MacVIAState), VMSTATE_TIMER_PTR(mos6522_via1.one_second_timer, MacVIAState), VMSTATE_INT64(mos6522_via1.next_second, MacVIAState), VMSTATE_TIMER_PTR(mos6522_via1.sixty_hz_timer, MacVIAState), VMSTATE_INT64(mos6522_via1.next_sixty_hz, MacVIAState), - VMSTATE_STRUCT(mos6522_via2.parent_obj, MacVIAState, 0, vmstate_mo= s6522, - MOS6522State), /* RTC */ VMSTATE_UINT32(tick_offset, MacVIAState), VMSTATE_UINT8(data_out, MacVIAState), @@ -1156,11 +1152,23 @@ static void mos6522_q800_via1_init(Object *obj) VIA1_IRQ_NB); } =20 +static const VMStateDescription vmstate_q800_via1 =3D { + .name =3D "q800-via1", + .version_id =3D 0, + .minimum_version_id =3D 0, + .fields =3D (VMStateField[]) { + VMSTATE_STRUCT(parent_obj, MOS6522Q800VIA1State, 0, vmstate_mos652= 2, + MOS6522State), + VMSTATE_END_OF_LIST() + } +}; + static void mos6522_q800_via1_class_init(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); =20 dc->reset =3D mos6522_q800_via1_reset; + dc->vmsd =3D &vmstate_q800_via1; } =20 static const TypeInfo mos6522_q800_via1_type_info =3D { @@ -1200,12 +1208,24 @@ static void mos6522_q800_via2_init(Object *obj) VIA2_IRQ_NB); } =20 +static const VMStateDescription vmstate_q800_via2 =3D { + .name =3D "q800-via2", + .version_id =3D 0, + .minimum_version_id =3D 0, + .fields =3D (VMStateField[]) { + VMSTATE_STRUCT(parent_obj, MOS6522Q800VIA2State, 0, vmstate_mos652= 2, + MOS6522State), + VMSTATE_END_OF_LIST() + } +}; + static void mos6522_q800_via2_class_init(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); MOS6522DeviceClass *mdc =3D MOS6522_CLASS(oc); =20 dc->reset =3D mos6522_q800_via2_reset; + dc->vmsd =3D &vmstate_q800_via2; mdc->portB_write =3D mos6522_q800_via2_portB_write; } =20 --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630319394022108.40151853965119; Mon, 30 Aug 2021 03:29:54 -0700 (PDT) Received: from localhost ([::1]:60384 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKeY5-0005gK-1h for importer@patchew.org; Mon, 30 Aug 2021 06:29:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58890) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeTi-0005hj-DV for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:24 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53290 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeTW-00071W-0A for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:15 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeT2-0003D2-Sc; Mon, 30 Aug 2021 11:24:46 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:37 +0100 Message-Id: <20210830102447.10806-3-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 02/12] mac_via: move last_b variable into q800 VIA1 VMStateDescription X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319395034100001 Content-Type: text/plain; charset="utf-8" This variable is already present in MOS6522Q800VIA1State and can be moved immediately into the q800 VIA1 VMStateDescription. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier --- hw/misc/mac_via.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index 46e65058e0..6fb0b9391d 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -1083,7 +1083,6 @@ static const VMStateDescription vmstate_mac_via =3D { .post_load =3D mac_via_post_load, .fields =3D (VMStateField[]) { /* VIAs */ - VMSTATE_UINT8(mos6522_via1.last_b, MacVIAState), VMSTATE_BUFFER(mos6522_via1.PRAM, MacVIAState), VMSTATE_TIMER_PTR(mos6522_via1.one_second_timer, MacVIAState), VMSTATE_INT64(mos6522_via1.next_second, MacVIAState), @@ -1159,6 +1158,7 @@ static const VMStateDescription vmstate_q800_via1 =3D= { .fields =3D (VMStateField[]) { VMSTATE_STRUCT(parent_obj, MOS6522Q800VIA1State, 0, vmstate_mos652= 2, MOS6522State), + VMSTATE_UINT8(last_b, MOS6522Q800VIA1State), VMSTATE_END_OF_LIST() } }; --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630319279001988.2035670026822; Mon, 30 Aug 2021 03:27:59 -0700 (PDT) Received: from localhost ([::1]:52108 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKeWD-00006i-Iw for importer@patchew.org; Mon, 30 Aug 2021 06:27:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58908) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeTj-0005hq-4O for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:24 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53298 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeTb-00075j-CO for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:21 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeT8-0003D2-2v; Mon, 30 Aug 2021 11:24:51 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:38 +0100 Message-Id: <20210830102447.10806-4-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 03/12] mac_via: move PRAM contents and block backend to MOS6522Q800VIA1State X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630320182150100001 Content-Type: text/plain; charset="utf-8" The PRAM contents are accessed using clock and data pins on q800 VIA1 port B and so can be moved to MOS6522Q800VIA1State. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier --- hw/misc/mac_via.c | 59 ++++++++++++++++++++------------------- include/hw/misc/mac_via.h | 7 +++-- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index 6fb0b9391d..abbe99af11 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -374,11 +374,10 @@ static void via2_irq_request(void *opaque, int irq, i= nt level) } =20 =20 -static void pram_update(MacVIAState *m) +static void pram_update(MOS6522Q800VIA1State *v1s) { - if (m->blk) { - if (blk_pwrite(m->blk, 0, m->mos6522_via1.PRAM, - sizeof(m->mos6522_via1.PRAM), 0) < 0) { + if (v1s->blk) { + if (blk_pwrite(v1s->blk, 0, v1s->PRAM, sizeof(v1s->PRAM), 0) < 0) { qemu_log("pram_update: cannot write to file\n"); } } @@ -556,7 +555,7 @@ static void via1_rtc_update(MacVIAState *m) /* PRAM address 0x00 -> 0x13 */ trace_via1_rtc_cmd_pram_write(m->cmd - REG_PRAM_ADDR, m->data_= out); v1s->PRAM[m->cmd - REG_PRAM_ADDR] =3D m->data_out; - pram_update(m); + pram_update(v1s); m->cmd =3D REG_EMPTY; break; case REG_PRAM_SECT...REG_PRAM_SECT_LAST: @@ -587,7 +586,7 @@ static void via1_rtc_update(MacVIAState *m) g_assert(REG_PRAM_SECT <=3D m->cmd && m->cmd <=3D REG_PRAM_SECT_LAST); sector =3D m->cmd - REG_PRAM_SECT; v1s->PRAM[sector * 32 + m->alt] =3D m->data_out; - pram_update(m); + pram_update(v1s); trace_via1_rtc_cmd_pram_sect_write(sector, m->alt, sector * 32 + m->al= t, m->data_out); m->alt =3D REG_EMPTY; @@ -965,6 +964,7 @@ static void mac_via_reset(DeviceState *dev) static void mac_via_realize(DeviceState *dev, Error **errp) { MacVIAState *m =3D MAC_VIA(dev); + MOS6522Q800VIA1State *v1s =3D &m->mos6522_via1; MOS6522State *ms; ADBBusState *adb_bus =3D &m->adb_bus; struct tm tm; @@ -1009,23 +1009,22 @@ static void mac_via_realize(DeviceState *dev, Error= **errp) m->adb_data_ready =3D qdev_get_gpio_in_named(dev, "via1-irq", VIA1_IRQ_ADB_READY_BIT); =20 - if (m->blk) { - int64_t len =3D blk_getlength(m->blk); + if (v1s->blk) { + int64_t len =3D blk_getlength(v1s->blk); if (len < 0) { error_setg_errno(errp, -len, "could not get length of backing image"); return; } - ret =3D blk_set_perm(m->blk, + ret =3D blk_set_perm(v1s->blk, BLK_PERM_CONSISTENT_READ | BLK_PERM_WRITE, BLK_PERM_ALL, errp); if (ret < 0) { return; } =20 - len =3D blk_pread(m->blk, 0, m->mos6522_via1.PRAM, - sizeof(m->mos6522_via1.PRAM)); - if (len !=3D sizeof(m->mos6522_via1.PRAM)) { + len =3D blk_pread(v1s->blk, 0, v1s->PRAM, sizeof(v1s->PRAM)); + if (len !=3D sizeof(v1s->PRAM)) { error_setg(errp, "can't read PRAM contents"); return; } @@ -1054,23 +1053,23 @@ static void mac_via_init(Object *obj) TYPE_ADB_BUS, DEVICE(obj), "adb.0"); } =20 -static void postload_update_cb(void *opaque, bool running, RunState state) +static void via1_postload_update_cb(void *opaque, bool running, RunState s= tate) { - MacVIAState *m =3D MAC_VIA(opaque); + MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(opaque); =20 - qemu_del_vm_change_state_handler(m->vmstate); - m->vmstate =3D NULL; + qemu_del_vm_change_state_handler(v1s->vmstate); + v1s->vmstate =3D NULL; =20 - pram_update(m); + pram_update(v1s); } =20 -static int mac_via_post_load(void *opaque, int version_id) +static int via1_post_load(void *opaque, int version_id) { - MacVIAState *m =3D MAC_VIA(opaque); + MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(opaque); =20 - if (m->blk) { - m->vmstate =3D qemu_add_vm_change_state_handler(postload_update_cb, - m); + if (v1s->blk) { + v1s->vmstate =3D qemu_add_vm_change_state_handler( + via1_postload_update_cb, v1s); } =20 return 0; @@ -1080,7 +1079,6 @@ static const VMStateDescription vmstate_mac_via =3D { .name =3D "mac-via", .version_id =3D 2, .minimum_version_id =3D 2, - .post_load =3D mac_via_post_load, .fields =3D (VMStateField[]) { /* VIAs */ VMSTATE_BUFFER(mos6522_via1.PRAM, MacVIAState), @@ -1108,11 +1106,6 @@ static const VMStateDescription vmstate_mac_via =3D { } }; =20 -static Property mac_via_properties[] =3D { - DEFINE_PROP_DRIVE("drive", MacVIAState, blk), - DEFINE_PROP_END_OF_LIST(), -}; - static void mac_via_class_init(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); @@ -1120,7 +1113,6 @@ static void mac_via_class_init(ObjectClass *oc, void = *data) dc->realize =3D mac_via_realize; dc->reset =3D mac_via_reset; dc->vmsd =3D &vmstate_mac_via; - device_class_set_props(dc, mac_via_properties); } =20 static TypeInfo mac_via_info =3D { @@ -1155,20 +1147,29 @@ static const VMStateDescription vmstate_q800_via1 = =3D { .name =3D "q800-via1", .version_id =3D 0, .minimum_version_id =3D 0, + .post_load =3D via1_post_load, .fields =3D (VMStateField[]) { VMSTATE_STRUCT(parent_obj, MOS6522Q800VIA1State, 0, vmstate_mos652= 2, MOS6522State), VMSTATE_UINT8(last_b, MOS6522Q800VIA1State), + /* RTC */ + VMSTATE_BUFFER(PRAM, MOS6522Q800VIA1State), VMSTATE_END_OF_LIST() } }; =20 +static Property mos6522_q800_via1_properties[] =3D { + DEFINE_PROP_DRIVE("drive", MOS6522Q800VIA1State, blk), + DEFINE_PROP_END_OF_LIST(), +}; + static void mos6522_q800_via1_class_init(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); =20 dc->reset =3D mos6522_q800_via1_reset; dc->vmsd =3D &vmstate_q800_via1; + device_class_set_props(dc, mos6522_q800_via1_properties); } =20 static const TypeInfo mos6522_q800_via1_type_info =3D { diff --git a/include/hw/misc/mac_via.h b/include/hw/misc/mac_via.h index 3058b30685..bd1c65d1b9 100644 --- a/include/hw/misc/mac_via.h +++ b/include/hw/misc/mac_via.h @@ -40,7 +40,11 @@ struct MOS6522Q800VIA1State { =20 qemu_irq irqs[VIA1_IRQ_NB]; uint8_t last_b; + + /* RTC */ uint8_t PRAM[256]; + BlockBackend *blk; + VMChangeStateEntry *vmstate; =20 /* external timers */ QEMUTimer *one_second_timer; @@ -80,8 +84,6 @@ OBJECT_DECLARE_SIMPLE_TYPE(MacVIAState, MAC_VIA) struct MacVIAState { SysBusDevice busdev; =20 - VMChangeStateEntry *vmstate; - /* MMIO */ MemoryRegion mmio; MemoryRegion via1mem; @@ -101,7 +103,6 @@ struct MacVIAState { uint8_t cmd; int wprotect; int alt; - BlockBackend *blk; =20 /* ADB */ ADBBusState adb_bus; --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 163031964395777.40425898218575; Mon, 30 Aug 2021 03:34:03 -0700 (PDT) Received: from localhost ([::1]:39936 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKec6-0002nd-Qx for importer@patchew.org; Mon, 30 Aug 2021 06:34:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59076) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU8-0005rG-NQ for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:49 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53304 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU4-00079n-Ac for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:48 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeTD-0003D2-AF; Mon, 30 Aug 2021 11:24:55 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:39 +0100 Message-Id: <20210830102447.10806-5-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 04/12] mac_via: move PRAM/RTC variables to MOS6522Q800VIA1State X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319644274100003 Content-Type: text/plain; charset="utf-8" The PRAM/RTC is accessed using clock and data pins on q800 VIA1 port B and = so can be moved to MOS6522Q800VIA1State. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/misc/mac_via.c | 135 +++++++++++++++++++------------------- include/hw/misc/mac_via.h | 21 +++--- 2 files changed, 77 insertions(+), 79 deletions(-) diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index abbe99af11..3978e6b441 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -433,9 +433,8 @@ static int via1_rtc_compact_cmd(uint8_t value) return REG_INVALID; } =20 -static void via1_rtc_update(MacVIAState *m) +static void via1_rtc_update(MOS6522Q800VIA1State *v1s) { - MOS6522Q800VIA1State *v1s =3D &m->mos6522_via1; MOS6522State *s =3D MOS6522(v1s); int cmd, sector, addr; uint32_t time; @@ -447,40 +446,40 @@ static void via1_rtc_update(MacVIAState *m) if (s->dirb & VIA1B_vRTCData) { /* send bits to the RTC */ if (!(v1s->last_b & VIA1B_vRTCClk) && (s->b & VIA1B_vRTCClk)) { - m->data_out <<=3D 1; - m->data_out |=3D s->b & VIA1B_vRTCData; - m->data_out_cnt++; + v1s->data_out <<=3D 1; + v1s->data_out |=3D s->b & VIA1B_vRTCData; + v1s->data_out_cnt++; } - trace_via1_rtc_update_data_out(m->data_out_cnt, m->data_out); + trace_via1_rtc_update_data_out(v1s->data_out_cnt, v1s->data_out); } else { - trace_via1_rtc_update_data_in(m->data_in_cnt, m->data_in); + trace_via1_rtc_update_data_in(v1s->data_in_cnt, v1s->data_in); /* receive bits from the RTC */ if ((v1s->last_b & VIA1B_vRTCClk) && !(s->b & VIA1B_vRTCClk) && - m->data_in_cnt) { + v1s->data_in_cnt) { s->b =3D (s->b & ~VIA1B_vRTCData) | - ((m->data_in >> 7) & VIA1B_vRTCData); - m->data_in <<=3D 1; - m->data_in_cnt--; + ((v1s->data_in >> 7) & VIA1B_vRTCData); + v1s->data_in <<=3D 1; + v1s->data_in_cnt--; } return; } =20 - if (m->data_out_cnt !=3D 8) { + if (v1s->data_out_cnt !=3D 8) { return; } =20 - m->data_out_cnt =3D 0; + v1s->data_out_cnt =3D 0; =20 - trace_via1_rtc_internal_status(m->cmd, m->alt, m->data_out); + trace_via1_rtc_internal_status(v1s->cmd, v1s->alt, v1s->data_out); /* first byte: it's a command */ - if (m->cmd =3D=3D REG_EMPTY) { + if (v1s->cmd =3D=3D REG_EMPTY) { =20 - cmd =3D via1_rtc_compact_cmd(m->data_out); + cmd =3D via1_rtc_compact_cmd(v1s->data_out); trace_via1_rtc_internal_cmd(cmd); =20 if (cmd =3D=3D REG_INVALID) { - trace_via1_rtc_cmd_invalid(m->data_out); + trace_via1_rtc_cmd_invalid(v1s->data_out); return; } =20 @@ -492,20 +491,20 @@ static void via1_rtc_update(MacVIAState *m) * register 3 is highest-order byte */ =20 - time =3D m->tick_offset + (qemu_clock_get_ns(QEMU_CLOCK_VI= RTUAL) + time =3D v1s->tick_offset + (qemu_clock_get_ns(QEMU_CLOCK_= VIRTUAL) / NANOSECONDS_PER_SECOND); trace_via1_rtc_internal_time(time); - m->data_in =3D (time >> ((cmd & 0x03) << 3)) & 0xff; - m->data_in_cnt =3D 8; + v1s->data_in =3D (time >> ((cmd & 0x03) << 3)) & 0xff; + v1s->data_in_cnt =3D 8; trace_via1_rtc_cmd_seconds_read((cmd & 0x7f) - REG_0, - m->data_in); + v1s->data_in); break; case REG_PRAM_ADDR...REG_PRAM_ADDR_LAST: /* PRAM address 0x00 -> 0x13 */ - m->data_in =3D v1s->PRAM[(cmd & 0x7f) - REG_PRAM_ADDR]; - m->data_in_cnt =3D 8; + v1s->data_in =3D v1s->PRAM[(cmd & 0x7f) - REG_PRAM_ADDR]; + v1s->data_in_cnt =3D 8; trace_via1_rtc_cmd_pram_read((cmd & 0x7f) - REG_PRAM_ADDR, - m->data_in); + v1s->data_in); break; case REG_PRAM_SECT...REG_PRAM_SECT_LAST: /* @@ -513,7 +512,7 @@ static void via1_rtc_update(MacVIAState *m) * the only two-byte read command */ trace_via1_rtc_internal_set_cmd(cmd); - m->cmd =3D cmd; + v1s->cmd =3D cmd; break; default: g_assert_not_reached(); @@ -523,9 +522,9 @@ static void via1_rtc_update(MacVIAState *m) } =20 /* this is a write command, needs a parameter */ - if (cmd =3D=3D REG_WPROTECT || !m->wprotect) { + if (cmd =3D=3D REG_WPROTECT || !v1s->wprotect) { trace_via1_rtc_internal_set_cmd(cmd); - m->cmd =3D cmd; + v1s->cmd =3D cmd; } else { trace_via1_rtc_internal_ignore_cmd(cmd); } @@ -533,46 +532,47 @@ static void via1_rtc_update(MacVIAState *m) } =20 /* second byte: it's a parameter */ - if (m->alt =3D=3D REG_EMPTY) { - switch (m->cmd & 0x7f) { + if (v1s->alt =3D=3D REG_EMPTY) { + switch (v1s->cmd & 0x7f) { case REG_0...REG_3: /* seconds register */ /* FIXME */ - trace_via1_rtc_cmd_seconds_write(m->cmd - REG_0, m->data_out); - m->cmd =3D REG_EMPTY; + trace_via1_rtc_cmd_seconds_write(v1s->cmd - REG_0, v1s->data_o= ut); + v1s->cmd =3D REG_EMPTY; break; case REG_TEST: /* device control: nothing to do */ - trace_via1_rtc_cmd_test_write(m->data_out); - m->cmd =3D REG_EMPTY; + trace_via1_rtc_cmd_test_write(v1s->data_out); + v1s->cmd =3D REG_EMPTY; break; case REG_WPROTECT: /* Write Protect register */ - trace_via1_rtc_cmd_wprotect_write(m->data_out); - m->wprotect =3D !!(m->data_out & 0x80); - m->cmd =3D REG_EMPTY; + trace_via1_rtc_cmd_wprotect_write(v1s->data_out); + v1s->wprotect =3D !!(v1s->data_out & 0x80); + v1s->cmd =3D REG_EMPTY; break; case REG_PRAM_ADDR...REG_PRAM_ADDR_LAST: /* PRAM address 0x00 -> 0x13 */ - trace_via1_rtc_cmd_pram_write(m->cmd - REG_PRAM_ADDR, m->data_= out); - v1s->PRAM[m->cmd - REG_PRAM_ADDR] =3D m->data_out; + trace_via1_rtc_cmd_pram_write(v1s->cmd - REG_PRAM_ADDR, + v1s->data_out); + v1s->PRAM[v1s->cmd - REG_PRAM_ADDR] =3D v1s->data_out; pram_update(v1s); - m->cmd =3D REG_EMPTY; + v1s->cmd =3D REG_EMPTY; break; case REG_PRAM_SECT...REG_PRAM_SECT_LAST: - addr =3D (m->data_out >> 2) & 0x1f; - sector =3D (m->cmd & 0x7f) - REG_PRAM_SECT; - if (m->cmd & 0x80) { + addr =3D (v1s->data_out >> 2) & 0x1f; + sector =3D (v1s->cmd & 0x7f) - REG_PRAM_SECT; + if (v1s->cmd & 0x80) { /* it's a read */ - m->data_in =3D v1s->PRAM[sector * 32 + addr]; - m->data_in_cnt =3D 8; + v1s->data_in =3D v1s->PRAM[sector * 32 + addr]; + v1s->data_in_cnt =3D 8; trace_via1_rtc_cmd_pram_sect_read(sector, addr, sector * 32 + addr, - m->data_in); - m->cmd =3D REG_EMPTY; + v1s->data_in); + v1s->cmd =3D REG_EMPTY; } else { /* it's a write, we need one more parameter */ trace_via1_rtc_internal_set_alt(addr, sector, addr); - m->alt =3D addr; + v1s->alt =3D addr; } break; default: @@ -583,14 +583,14 @@ static void via1_rtc_update(MacVIAState *m) } =20 /* third byte: it's the data of a REG_PRAM_SECT write */ - g_assert(REG_PRAM_SECT <=3D m->cmd && m->cmd <=3D REG_PRAM_SECT_LAST); - sector =3D m->cmd - REG_PRAM_SECT; - v1s->PRAM[sector * 32 + m->alt] =3D m->data_out; + g_assert(REG_PRAM_SECT <=3D v1s->cmd && v1s->cmd <=3D REG_PRAM_SECT_LA= ST); + sector =3D v1s->cmd - REG_PRAM_SECT; + v1s->PRAM[sector * 32 + v1s->alt] =3D v1s->data_out; pram_update(v1s); - trace_via1_rtc_cmd_pram_sect_write(sector, m->alt, sector * 32 + m->al= t, - m->data_out); - m->alt =3D REG_EMPTY; - m->cmd =3D REG_EMPTY; + trace_via1_rtc_cmd_pram_sect_write(sector, v1s->alt, sector * 32 + v1s= ->alt, + v1s->data_out); + v1s->alt =3D REG_EMPTY; + v1s->cmd =3D REG_EMPTY; } =20 static void adb_via_poll(void *opaque) @@ -903,7 +903,7 @@ static void mos6522_q800_via1_write(void *opaque, hwadd= r addr, uint64_t val, =20 switch (addr) { case VIA_REG_B: - via1_rtc_update(m); + via1_rtc_update(v1s); via1_adb_update(m); =20 v1s->last_b =3D ms->b; @@ -953,12 +953,13 @@ static const MemoryRegionOps mos6522_q800_via2_ops = =3D { static void mac_via_reset(DeviceState *dev) { MacVIAState *m =3D MAC_VIA(dev); + MOS6522Q800VIA1State *v1s =3D &m->mos6522_via1; ADBBusState *adb_bus =3D &m->adb_bus; =20 adb_set_autopoll_enabled(adb_bus, true); =20 - m->cmd =3D REG_EMPTY; - m->alt =3D REG_EMPTY; + v1s->cmd =3D REG_EMPTY; + v1s->alt =3D REG_EMPTY; } =20 static void mac_via_realize(DeviceState *dev, Error **errp) @@ -1003,7 +1004,7 @@ static void mac_via_realize(DeviceState *dev, Error *= *errp) via1_sixty_hz_update(&m->mos6522_via1); =20 qemu_get_timedate(&tm, 0); - m->tick_offset =3D (uint32_t)mktimegm(&tm) + RTC_OFFSET; + v1s->tick_offset =3D (uint32_t)mktimegm(&tm) + RTC_OFFSET; =20 adb_register_autopoll_callback(adb_bus, adb_via_poll, m); m->adb_data_ready =3D qdev_get_gpio_in_named(dev, "via1-irq", @@ -1081,20 +1082,10 @@ static const VMStateDescription vmstate_mac_via =3D= { .minimum_version_id =3D 2, .fields =3D (VMStateField[]) { /* VIAs */ - VMSTATE_BUFFER(mos6522_via1.PRAM, MacVIAState), VMSTATE_TIMER_PTR(mos6522_via1.one_second_timer, MacVIAState), VMSTATE_INT64(mos6522_via1.next_second, MacVIAState), VMSTATE_TIMER_PTR(mos6522_via1.sixty_hz_timer, MacVIAState), VMSTATE_INT64(mos6522_via1.next_sixty_hz, MacVIAState), - /* RTC */ - VMSTATE_UINT32(tick_offset, MacVIAState), - VMSTATE_UINT8(data_out, MacVIAState), - VMSTATE_INT32(data_out_cnt, MacVIAState), - VMSTATE_UINT8(data_in, MacVIAState), - VMSTATE_UINT8(data_in_cnt, MacVIAState), - VMSTATE_UINT8(cmd, MacVIAState), - VMSTATE_INT32(wprotect, MacVIAState), - VMSTATE_INT32(alt, MacVIAState), /* ADB */ VMSTATE_INT32(adb_data_in_size, MacVIAState), VMSTATE_INT32(adb_data_in_index, MacVIAState), @@ -1154,6 +1145,14 @@ static const VMStateDescription vmstate_q800_via1 = =3D { VMSTATE_UINT8(last_b, MOS6522Q800VIA1State), /* RTC */ VMSTATE_BUFFER(PRAM, MOS6522Q800VIA1State), + VMSTATE_UINT32(tick_offset, MOS6522Q800VIA1State), + VMSTATE_UINT8(data_out, MOS6522Q800VIA1State), + VMSTATE_INT32(data_out_cnt, MOS6522Q800VIA1State), + VMSTATE_UINT8(data_in, MOS6522Q800VIA1State), + VMSTATE_UINT8(data_in_cnt, MOS6522Q800VIA1State), + VMSTATE_UINT8(cmd, MOS6522Q800VIA1State), + VMSTATE_INT32(wprotect, MOS6522Q800VIA1State), + VMSTATE_INT32(alt, MOS6522Q800VIA1State), VMSTATE_END_OF_LIST() } }; diff --git a/include/hw/misc/mac_via.h b/include/hw/misc/mac_via.h index bd1c65d1b9..b2c499ed6b 100644 --- a/include/hw/misc/mac_via.h +++ b/include/hw/misc/mac_via.h @@ -46,6 +46,16 @@ struct MOS6522Q800VIA1State { BlockBackend *blk; VMChangeStateEntry *vmstate; =20 + uint32_t tick_offset; + + uint8_t data_out; + int data_out_cnt; + uint8_t data_in; + uint8_t data_in_cnt; + uint8_t cmd; + int wprotect; + int alt; + /* external timers */ QEMUTimer *one_second_timer; int64_t next_second; @@ -93,17 +103,6 @@ struct MacVIAState { MOS6522Q800VIA1State mos6522_via1; MOS6522Q800VIA2State mos6522_via2; =20 - /* RTC */ - uint32_t tick_offset; - - uint8_t data_out; - int data_out_cnt; - uint8_t data_in; - uint8_t data_in_cnt; - uint8_t cmd; - int wprotect; - int alt; - /* ADB */ ADBBusState adb_bus; qemu_irq adb_data_ready; --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630319404923203.2354961702532; Mon, 30 Aug 2021 03:30:04 -0700 (PDT) Received: from localhost ([::1]:60746 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKeYF-0005vL-KW for importer@patchew.org; Mon, 30 Aug 2021 06:30:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58948) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU4-0005kS-CD for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:44 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53310 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeTh-0007FZ-Oe for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:33 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeTH-0003D2-Iq; Mon, 30 Aug 2021 11:24:59 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:40 +0100 Message-Id: <20210830102447.10806-6-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 05/12] mac_via: move ADB variables to MOS6522Q800VIA1State X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319406161100005 Content-Type: text/plain; charset="utf-8" The ADB is accessed using clock and data pins on q800 VIA1 port B and so ca= n be moved to MOS6522Q800VIA1State. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/m68k/q800.c | 6 +- hw/misc/mac_via.c | 169 +++++++++++++++++++------------------- include/hw/misc/mac_via.h | 20 ++--- 3 files changed, 96 insertions(+), 99 deletions(-) diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index ac0a13060b..e14f68f19b 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -225,7 +225,7 @@ static void q800_init(MachineState *machine) hwaddr parameters_base; CPUState *cs; DeviceState *dev; - DeviceState *via_dev; + DeviceState *via_dev, *via1_dev; DeviceState *escc_orgate; SysBusESPState *sysbus_esp; ESPState *esp; @@ -285,8 +285,8 @@ static void q800_init(MachineState *machine) qdev_connect_gpio_out_named(DEVICE(sysbus), "irq", 1, qdev_get_gpio_in(glue, 1)); =20 - - adb_bus =3D qdev_get_child_bus(via_dev, "adb.0"); + via1_dev =3D DEVICE(MOS6522_Q800_VIA1(&MAC_VIA(via_dev)->mos6522_via1)= ); + adb_bus =3D qdev_get_child_bus(DEVICE(via1_dev), "adb.0"); dev =3D qdev_new(TYPE_ADB_KEYBOARD); qdev_realize_and_unref(dev, adb_bus, &error_fatal); dev =3D qdev_new(TYPE_ADB_MOUSE); diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index 3978e6b441..b4a65480fd 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -595,10 +595,9 @@ static void via1_rtc_update(MOS6522Q800VIA1State *v1s) =20 static void adb_via_poll(void *opaque) { - MacVIAState *m =3D opaque; - MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(&m->mos6522_via1); + MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(opaque); MOS6522State *s =3D MOS6522(v1s); - ADBBusState *adb_bus =3D &m->adb_bus; + ADBBusState *adb_bus =3D &v1s->adb_bus; uint8_t obuf[9]; uint8_t *data =3D &s->sr; int olen; @@ -610,50 +609,50 @@ static void adb_via_poll(void *opaque) */ adb_autopoll_block(adb_bus); =20 - if (m->adb_data_in_size > 0 && m->adb_data_in_index =3D=3D 0) { + if (v1s->adb_data_in_size > 0 && v1s->adb_data_in_index =3D=3D 0) { /* * For older Linux kernels that switch to IDLE mode after sending = the * ADB command, detect if there is an existing response and return= that * as a a "fake" autopoll reply or bus timeout accordingly */ - *data =3D m->adb_data_out[0]; - olen =3D m->adb_data_in_size; + *data =3D v1s->adb_data_out[0]; + olen =3D v1s->adb_data_in_size; =20 s->b &=3D ~VIA1B_vADBInt; - qemu_irq_raise(m->adb_data_ready); + qemu_irq_raise(v1s->adb_data_ready); } else { /* * Otherwise poll as normal */ - m->adb_data_in_index =3D 0; - m->adb_data_out_index =3D 0; + v1s->adb_data_in_index =3D 0; + v1s->adb_data_out_index =3D 0; olen =3D adb_poll(adb_bus, obuf, adb_bus->autopoll_mask); =20 if (olen > 0) { /* Autopoll response */ *data =3D obuf[0]; olen--; - memcpy(m->adb_data_in, &obuf[1], olen); - m->adb_data_in_size =3D olen; + memcpy(v1s->adb_data_in, &obuf[1], olen); + v1s->adb_data_in_size =3D olen; =20 s->b &=3D ~VIA1B_vADBInt; - qemu_irq_raise(m->adb_data_ready); + qemu_irq_raise(v1s->adb_data_ready); } else { - *data =3D m->adb_autopoll_cmd; + *data =3D v1s->adb_autopoll_cmd; obuf[0] =3D 0xff; obuf[1] =3D 0xff; olen =3D 2; =20 - memcpy(m->adb_data_in, obuf, olen); - m->adb_data_in_size =3D olen; + memcpy(v1s->adb_data_in, obuf, olen); + v1s->adb_data_in_size =3D olen; =20 s->b &=3D ~VIA1B_vADBInt; - qemu_irq_raise(m->adb_data_ready); + qemu_irq_raise(v1s->adb_data_ready); } } =20 trace_via1_adb_poll(*data, (s->b & VIA1B_vADBInt) ? "+" : "-", - adb_bus->status, m->adb_data_in_index, olen); + adb_bus->status, v1s->adb_data_in_index, olen); } =20 static int adb_via_send_len(uint8_t data) @@ -686,11 +685,10 @@ static int adb_via_send_len(uint8_t data) } } =20 -static void adb_via_send(MacVIAState *s, int state, uint8_t data) +static void adb_via_send(MOS6522Q800VIA1State *v1s, int state, uint8_t dat= a) { - MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(&s->mos6522_via1); MOS6522State *ms =3D MOS6522(v1s); - ADBBusState *adb_bus =3D &s->adb_bus; + ADBBusState *adb_bus =3D &v1s->adb_bus; uint16_t autopoll_mask; =20 switch (state) { @@ -706,22 +704,22 @@ static void adb_via_send(MacVIAState *s, int state, u= int8_t data) ms->b &=3D ~VIA1B_vADBInt; } else { ms->b |=3D VIA1B_vADBInt; - s->adb_data_out_index =3D 0; - s->adb_data_out[s->adb_data_out_index++] =3D data; + v1s->adb_data_out_index =3D 0; + v1s->adb_data_out[v1s->adb_data_out_index++] =3D data; } =20 trace_via1_adb_send(" NEW", data, (ms->b & VIA1B_vADBInt) ? "+" : = "-"); - qemu_irq_raise(s->adb_data_ready); + qemu_irq_raise(v1s->adb_data_ready); break; =20 case ADB_STATE_EVEN: case ADB_STATE_ODD: ms->b |=3D VIA1B_vADBInt; - s->adb_data_out[s->adb_data_out_index++] =3D data; + v1s->adb_data_out[v1s->adb_data_out_index++] =3D data; =20 trace_via1_adb_send(state =3D=3D ADB_STATE_EVEN ? "EVEN" : " ODD", data, (ms->b & VIA1B_vADBInt) ? "+" : "-"); - qemu_irq_raise(s->adb_data_ready); + qemu_irq_raise(v1s->adb_data_ready); break; =20 case ADB_STATE_IDLE: @@ -729,40 +727,39 @@ static void adb_via_send(MacVIAState *s, int state, u= int8_t data) } =20 /* If the command is complete, execute it */ - if (s->adb_data_out_index =3D=3D adb_via_send_len(s->adb_data_out[0]))= { - s->adb_data_in_size =3D adb_request(adb_bus, s->adb_data_in, - s->adb_data_out, - s->adb_data_out_index); - s->adb_data_in_index =3D 0; + if (v1s->adb_data_out_index =3D=3D adb_via_send_len(v1s->adb_data_out[= 0])) { + v1s->adb_data_in_size =3D adb_request(adb_bus, v1s->adb_data_in, + v1s->adb_data_out, + v1s->adb_data_out_index); + v1s->adb_data_in_index =3D 0; =20 if (adb_bus->status & ADB_STATUS_BUSTIMEOUT) { /* * Bus timeout (but allow first EVEN and ODD byte to indicate * timeout via vADBInt and SRQ status) */ - s->adb_data_in[0] =3D 0xff; - s->adb_data_in[1] =3D 0xff; - s->adb_data_in_size =3D 2; + v1s->adb_data_in[0] =3D 0xff; + v1s->adb_data_in[1] =3D 0xff; + v1s->adb_data_in_size =3D 2; } =20 /* * If last command is TALK, store it for use by autopoll and adjust * the autopoll mask accordingly */ - if ((s->adb_data_out[0] & 0xc) =3D=3D 0xc) { - s->adb_autopoll_cmd =3D s->adb_data_out[0]; + if ((v1s->adb_data_out[0] & 0xc) =3D=3D 0xc) { + v1s->adb_autopoll_cmd =3D v1s->adb_data_out[0]; =20 - autopoll_mask =3D 1 << (s->adb_autopoll_cmd >> 4); + autopoll_mask =3D 1 << (v1s->adb_autopoll_cmd >> 4); adb_set_autopoll_mask(adb_bus, autopoll_mask); } } } =20 -static void adb_via_receive(MacVIAState *s, int state, uint8_t *data) +static void adb_via_receive(MOS6522Q800VIA1State *v1s, int state, uint8_t = *data) { - MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(&s->mos6522_via1); MOS6522State *ms =3D MOS6522(v1s); - ADBBusState *adb_bus =3D &s->adb_bus; + ADBBusState *adb_bus =3D &v1s->adb_bus; uint16_t pending; =20 switch (state) { @@ -776,16 +773,16 @@ static void adb_via_receive(MacVIAState *s, int state= , uint8_t *data) =20 trace_via1_adb_receive("IDLE", *data, (ms->b & VIA1B_vADBInt) ? "+" : "-", adb_bus->stat= us, - s->adb_data_in_index, s->adb_data_in_size); + v1s->adb_data_in_index, v1s->adb_data_in_size); =20 break; =20 case ADB_STATE_EVEN: case ADB_STATE_ODD: - switch (s->adb_data_in_index) { + switch (v1s->adb_data_in_index) { case 0: /* First EVEN byte: vADBInt indicates bus timeout */ - *data =3D s->adb_data_in[s->adb_data_in_index]; + *data =3D v1s->adb_data_in[v1s->adb_data_in_index]; if (adb_bus->status & ADB_STATUS_BUSTIMEOUT) { ms->b &=3D ~VIA1B_vADBInt; } else { @@ -794,16 +791,16 @@ static void adb_via_receive(MacVIAState *s, int state= , uint8_t *data) =20 trace_via1_adb_receive(state =3D=3D ADB_STATE_EVEN ? "EVEN" : = " ODD", *data, (ms->b & VIA1B_vADBInt) ? "+" : = "-", - adb_bus->status, s->adb_data_in_index, - s->adb_data_in_size); + adb_bus->status, v1s->adb_data_in_index, + v1s->adb_data_in_size); =20 - s->adb_data_in_index++; + v1s->adb_data_in_index++; break; =20 case 1: /* First ODD byte: vADBInt indicates SRQ */ - *data =3D s->adb_data_in[s->adb_data_in_index]; - pending =3D adb_bus->pending & ~(1 << (s->adb_autopoll_cmd >> = 4)); + *data =3D v1s->adb_data_in[v1s->adb_data_in_index]; + pending =3D adb_bus->pending & ~(1 << (v1s->adb_autopoll_cmd >= > 4)); if (pending) { ms->b &=3D ~VIA1B_vADBInt; } else { @@ -812,10 +809,10 @@ static void adb_via_receive(MacVIAState *s, int state= , uint8_t *data) =20 trace_via1_adb_receive(state =3D=3D ADB_STATE_EVEN ? "EVEN" : = " ODD", *data, (ms->b & VIA1B_vADBInt) ? "+" : = "-", - adb_bus->status, s->adb_data_in_index, - s->adb_data_in_size); + adb_bus->status, v1s->adb_data_in_index, + v1s->adb_data_in_size); =20 - s->adb_data_in_index++; + v1s->adb_data_in_index++; break; =20 default: @@ -825,11 +822,11 @@ static void adb_via_receive(MacVIAState *s, int state= , uint8_t *data) * end of the poll reply, so provide these extra bytes below to * keep it happy */ - if (s->adb_data_in_index < s->adb_data_in_size) { + if (v1s->adb_data_in_index < v1s->adb_data_in_size) { /* Next data byte */ - *data =3D s->adb_data_in[s->adb_data_in_index]; + *data =3D v1s->adb_data_in[v1s->adb_data_in_index]; ms->b |=3D VIA1B_vADBInt; - } else if (s->adb_data_in_index =3D=3D s->adb_data_in_size) { + } else if (v1s->adb_data_in_index =3D=3D v1s->adb_data_in_size= ) { if (adb_bus->status & ADB_STATUS_BUSTIMEOUT) { /* Bus timeout (no more data) */ *data =3D 0xff; @@ -848,23 +845,22 @@ static void adb_via_receive(MacVIAState *s, int state= , uint8_t *data) =20 trace_via1_adb_receive(state =3D=3D ADB_STATE_EVEN ? "EVEN" : = " ODD", *data, (ms->b & VIA1B_vADBInt) ? "+" : = "-", - adb_bus->status, s->adb_data_in_index, - s->adb_data_in_size); + adb_bus->status, v1s->adb_data_in_index, + v1s->adb_data_in_size); =20 - if (s->adb_data_in_index <=3D s->adb_data_in_size) { - s->adb_data_in_index++; + if (v1s->adb_data_in_index <=3D v1s->adb_data_in_size) { + v1s->adb_data_in_index++; } break; } =20 - qemu_irq_raise(s->adb_data_ready); + qemu_irq_raise(v1s->adb_data_ready); break; } } =20 -static void via1_adb_update(MacVIAState *m) +static void via1_adb_update(MOS6522Q800VIA1State *v1s) { - MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(&m->mos6522_via1); MOS6522State *s =3D MOS6522(v1s); int oldstate, state; =20 @@ -874,10 +870,10 @@ static void via1_adb_update(MacVIAState *m) if (state !=3D oldstate) { if (s->acr & VIA1ACR_vShiftOut) { /* output mode */ - adb_via_send(m, state, s->sr); + adb_via_send(v1s, state, s->sr); } else { /* input mode */ - adb_via_receive(m, state, &s->sr); + adb_via_receive(v1s, state, &s->sr); } } } @@ -895,7 +891,6 @@ static void mos6522_q800_via1_write(void *opaque, hwadd= r addr, uint64_t val, unsigned size) { MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(opaque); - MacVIAState *m =3D container_of(v1s, MacVIAState, mos6522_via1); MOS6522State *ms =3D MOS6522(v1s); =20 addr =3D (addr >> 9) & 0xf; @@ -904,7 +899,7 @@ static void mos6522_q800_via1_write(void *opaque, hwadd= r addr, uint64_t val, switch (addr) { case VIA_REG_B: via1_rtc_update(v1s); - via1_adb_update(m); + via1_adb_update(v1s); =20 v1s->last_b =3D ms->b; break; @@ -954,7 +949,7 @@ static void mac_via_reset(DeviceState *dev) { MacVIAState *m =3D MAC_VIA(dev); MOS6522Q800VIA1State *v1s =3D &m->mos6522_via1; - ADBBusState *adb_bus =3D &m->adb_bus; + ADBBusState *adb_bus =3D &v1s->adb_bus; =20 adb_set_autopoll_enabled(adb_bus, true); =20 @@ -967,17 +962,10 @@ static void mac_via_realize(DeviceState *dev, Error *= *errp) MacVIAState *m =3D MAC_VIA(dev); MOS6522Q800VIA1State *v1s =3D &m->mos6522_via1; MOS6522State *ms; - ADBBusState *adb_bus =3D &m->adb_bus; + ADBBusState *adb_bus =3D &v1s->adb_bus; struct tm tm; int ret; =20 - /* Init VIAs 1 and 2 */ - object_initialize_child(OBJECT(dev), "via1", &m->mos6522_via1, - TYPE_MOS6522_Q800_VIA1); - - object_initialize_child(OBJECT(dev), "via2", &m->mos6522_via2, - TYPE_MOS6522_Q800_VIA2); - /* Pass through mos6522 output IRQs */ ms =3D MOS6522(&m->mos6522_via1); object_property_add_alias(OBJECT(dev), "irq[0]", OBJECT(ms), @@ -1006,9 +994,9 @@ static void mac_via_realize(DeviceState *dev, Error **= errp) qemu_get_timedate(&tm, 0); v1s->tick_offset =3D (uint32_t)mktimegm(&tm) + RTC_OFFSET; =20 - adb_register_autopoll_callback(adb_bus, adb_via_poll, m); - m->adb_data_ready =3D qdev_get_gpio_in_named(dev, "via1-irq", - VIA1_IRQ_ADB_READY_BIT); + adb_register_autopoll_callback(adb_bus, adb_via_poll, v1s); + v1s->adb_data_ready =3D qdev_get_gpio_in_named(dev, "via1-irq", + VIA1_IRQ_ADB_READY_BIT); =20 if (v1s->blk) { int64_t len =3D blk_getlength(v1s->blk); @@ -1049,9 +1037,12 @@ static void mac_via_init(Object *obj) &m->mos6522_via2, "via2", VIA_SIZE); memory_region_add_subregion(&m->mmio, VIA_SIZE, &m->via2mem); =20 - /* ADB */ - qbus_create_inplace((BusState *)&m->adb_bus, sizeof(m->adb_bus), - TYPE_ADB_BUS, DEVICE(obj), "adb.0"); + /* Init VIAs 1 and 2 */ + object_initialize_child(obj, "via1", &m->mos6522_via1, + TYPE_MOS6522_Q800_VIA1); + + object_initialize_child(obj, "via2", &m->mos6522_via2, + TYPE_MOS6522_Q800_VIA2); } =20 static void via1_postload_update_cb(void *opaque, bool running, RunState s= tate) @@ -1086,13 +1077,6 @@ static const VMStateDescription vmstate_mac_via =3D { VMSTATE_INT64(mos6522_via1.next_second, MacVIAState), VMSTATE_TIMER_PTR(mos6522_via1.sixty_hz_timer, MacVIAState), VMSTATE_INT64(mos6522_via1.next_sixty_hz, MacVIAState), - /* ADB */ - VMSTATE_INT32(adb_data_in_size, MacVIAState), - VMSTATE_INT32(adb_data_in_index, MacVIAState), - VMSTATE_INT32(adb_data_out_index, MacVIAState), - VMSTATE_BUFFER(adb_data_in, MacVIAState), - VMSTATE_BUFFER(adb_data_out, MacVIAState), - VMSTATE_UINT8(adb_autopoll_cmd, MacVIAState), VMSTATE_END_OF_LIST() } }; @@ -1130,6 +1114,12 @@ static void mos6522_q800_via1_reset(DeviceState *dev) =20 static void mos6522_q800_via1_init(Object *obj) { + MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(obj); + + /* ADB */ + qbus_create_inplace((BusState *)&v1s->adb_bus, sizeof(v1s->adb_bus), + TYPE_ADB_BUS, DEVICE(v1s), "adb.0"); + qdev_init_gpio_in_named(DEVICE(obj), via1_irq_request, "via1-irq", VIA1_IRQ_NB); } @@ -1153,6 +1143,13 @@ static const VMStateDescription vmstate_q800_via1 = =3D { VMSTATE_UINT8(cmd, MOS6522Q800VIA1State), VMSTATE_INT32(wprotect, MOS6522Q800VIA1State), VMSTATE_INT32(alt, MOS6522Q800VIA1State), + /* ADB */ + VMSTATE_INT32(adb_data_in_size, MOS6522Q800VIA1State), + VMSTATE_INT32(adb_data_in_index, MOS6522Q800VIA1State), + VMSTATE_INT32(adb_data_out_index, MOS6522Q800VIA1State), + VMSTATE_BUFFER(adb_data_in, MOS6522Q800VIA1State), + VMSTATE_BUFFER(adb_data_out, MOS6522Q800VIA1State), + VMSTATE_UINT8(adb_autopoll_cmd, MOS6522Q800VIA1State), VMSTATE_END_OF_LIST() } }; diff --git a/include/hw/misc/mac_via.h b/include/hw/misc/mac_via.h index b2c499ed6b..182dcb7422 100644 --- a/include/hw/misc/mac_via.h +++ b/include/hw/misc/mac_via.h @@ -56,6 +56,16 @@ struct MOS6522Q800VIA1State { int wprotect; int alt; =20 + /* ADB */ + ADBBusState adb_bus; + qemu_irq adb_data_ready; + int adb_data_in_size; + int adb_data_in_index; + int adb_data_out_index; + uint8_t adb_data_in[128]; + uint8_t adb_data_out[16]; + uint8_t adb_autopoll_cmd; + /* external timers */ QEMUTimer *one_second_timer; int64_t next_second; @@ -102,16 +112,6 @@ struct MacVIAState { /* VIAs */ MOS6522Q800VIA1State mos6522_via1; MOS6522Q800VIA2State mos6522_via2; - - /* ADB */ - ADBBusState adb_bus; - qemu_irq adb_data_ready; - int adb_data_in_size; - int adb_data_in_index; - int adb_data_out_index; - uint8_t adb_data_in[128]; - uint8_t adb_data_out[16]; - uint8_t adb_autopoll_cmd; }; =20 #endif --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 163031928046091.20084433647651; Mon, 30 Aug 2021 03:28:00 -0700 (PDT) Received: from localhost ([::1]:52260 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKeWF-0000Cz-Ek for importer@patchew.org; Mon, 30 Aug 2021 06:27:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59018) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU6-0005l2-8N for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:46 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53316 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU2-0007LB-SG for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:45 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeTL-0003D2-Su; Mon, 30 Aug 2021 11:25:04 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:41 +0100 Message-Id: <20210830102447.10806-7-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 06/12] mac_via: move q800 VIA1 timer variables to q800 VIA1 VMStateDescription X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319281922100007 Content-Type: text/plain; charset="utf-8" These variables are already present in MOS6522Q800VIA1State and so it is ju= st the VMStateDescription move that is needed. With this change the mac_via VMStateDescription is now empty and can be rem= oved completely. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier --- hw/misc/mac_via.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index b4a65480fd..47e221dd88 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -1067,27 +1067,12 @@ static int via1_post_load(void *opaque, int version= _id) return 0; } =20 -static const VMStateDescription vmstate_mac_via =3D { - .name =3D "mac-via", - .version_id =3D 2, - .minimum_version_id =3D 2, - .fields =3D (VMStateField[]) { - /* VIAs */ - VMSTATE_TIMER_PTR(mos6522_via1.one_second_timer, MacVIAState), - VMSTATE_INT64(mos6522_via1.next_second, MacVIAState), - VMSTATE_TIMER_PTR(mos6522_via1.sixty_hz_timer, MacVIAState), - VMSTATE_INT64(mos6522_via1.next_sixty_hz, MacVIAState), - VMSTATE_END_OF_LIST() - } -}; - static void mac_via_class_init(ObjectClass *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); =20 dc->realize =3D mac_via_realize; dc->reset =3D mac_via_reset; - dc->vmsd =3D &vmstate_mac_via; } =20 static TypeInfo mac_via_info =3D { @@ -1150,6 +1135,11 @@ static const VMStateDescription vmstate_q800_via1 = =3D { VMSTATE_BUFFER(adb_data_in, MOS6522Q800VIA1State), VMSTATE_BUFFER(adb_data_out, MOS6522Q800VIA1State), VMSTATE_UINT8(adb_autopoll_cmd, MOS6522Q800VIA1State), + /* Timers */ + VMSTATE_TIMER_PTR(one_second_timer, MOS6522Q800VIA1State), + VMSTATE_INT64(next_second, MOS6522Q800VIA1State), + VMSTATE_TIMER_PTR(sixty_hz_timer, MOS6522Q800VIA1State), + VMSTATE_INT64(next_sixty_hz, MOS6522Q800VIA1State), VMSTATE_END_OF_LIST() } }; --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630319642115258.80036299042274; Mon, 30 Aug 2021 03:34:02 -0700 (PDT) Received: from localhost ([::1]:39814 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKec5-0002in-3p for importer@patchew.org; Mon, 30 Aug 2021 06:34:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59056) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU7-0005nH-9J for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:47 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53320 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU4-0007MP-AE for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:46 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeTR-0003D2-2i; Mon, 30 Aug 2021 11:25:10 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:42 +0100 Message-Id: <20210830102447.10806-8-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 07/12] mac_via: move VIA1 reset logic from mac_via_reset() to mos6522_q800_via1_reset() X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: 0 X-Spam_score: 0.0 X-Spam_bar: / X-Spam_report: (0.0 / 5.0 requ) SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319644215100001 Content-Type: text/plain; charset="utf-8" After this change mac_via_reset() is now empty and can be removed. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/misc/mac_via.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index 47e221dd88..a2df17d9be 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -945,18 +945,6 @@ static const MemoryRegionOps mos6522_q800_via2_ops =3D= { }, }; =20 -static void mac_via_reset(DeviceState *dev) -{ - MacVIAState *m =3D MAC_VIA(dev); - MOS6522Q800VIA1State *v1s =3D &m->mos6522_via1; - ADBBusState *adb_bus =3D &v1s->adb_bus; - - adb_set_autopoll_enabled(adb_bus, true); - - v1s->cmd =3D REG_EMPTY; - v1s->alt =3D REG_EMPTY; -} - static void mac_via_realize(DeviceState *dev, Error **errp) { MacVIAState *m =3D MAC_VIA(dev); @@ -1072,7 +1060,6 @@ static void mac_via_class_init(ObjectClass *oc, void = *data) DeviceClass *dc =3D DEVICE_CLASS(oc); =20 dc->realize =3D mac_via_realize; - dc->reset =3D mac_via_reset; } =20 static TypeInfo mac_via_info =3D { @@ -1086,8 +1073,10 @@ static TypeInfo mac_via_info =3D { /* VIA 1 */ static void mos6522_q800_via1_reset(DeviceState *dev) { - MOS6522State *ms =3D MOS6522(dev); + MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(dev); + MOS6522State *ms =3D MOS6522(v1s); MOS6522DeviceClass *mdc =3D MOS6522_GET_CLASS(ms); + ADBBusState *adb_bus =3D &v1s->adb_bus; =20 mdc->parent_reset(dev); =20 @@ -1095,6 +1084,11 @@ static void mos6522_q800_via1_reset(DeviceState *dev) ms->timers[1].frequency =3D VIA_TIMER_FREQ; =20 ms->b =3D VIA1B_vADB_StateMask | VIA1B_vADBInt | VIA1B_vRTCEnb; + + /* ADB/RTC */ + adb_set_autopoll_enabled(adb_bus, true); + v1s->cmd =3D REG_EMPTY; + v1s->alt =3D REG_EMPTY; } =20 static void mos6522_q800_via1_init(Object *obj) --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630319404534828.3595437725946; Mon, 30 Aug 2021 03:30:04 -0700 (PDT) Received: from localhost ([::1]:60650 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKeYF-0005rX-9H for importer@patchew.org; Mon, 30 Aug 2021 06:30:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU8-0005re-Sh for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:49 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53328 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU4-0007Op-Ck for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:48 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeTW-0003D2-9t; Mon, 30 Aug 2021 11:25:15 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:43 +0100 Message-Id: <20210830102447.10806-9-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 08/12] mac_via: move VIA1 realize logic from mac_via_realize() to mos6522_q800_via1_realize() X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319406060100003 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier --- hw/misc/mac_via.c | 86 ++++++++++++++++++++++++----------------------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index a2df17d9be..bb8d682ce9 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -948,11 +948,7 @@ static const MemoryRegionOps mos6522_q800_via2_ops =3D= { static void mac_via_realize(DeviceState *dev, Error **errp) { MacVIAState *m =3D MAC_VIA(dev); - MOS6522Q800VIA1State *v1s =3D &m->mos6522_via1; MOS6522State *ms; - ADBBusState *adb_bus =3D &v1s->adb_bus; - struct tm tm; - int ret; =20 /* Pass through mos6522 output IRQs */ ms =3D MOS6522(&m->mos6522_via1); @@ -968,44 +964,6 @@ static void mac_via_realize(DeviceState *dev, Error **= errp) /* Pass through mos6522 input IRQs */ qdev_pass_gpios(DEVICE(&m->mos6522_via1), dev, "via1-irq"); qdev_pass_gpios(DEVICE(&m->mos6522_via2), dev, "via2-irq"); - - /* VIA 1 */ - m->mos6522_via1.one_second_timer =3D timer_new_ms(QEMU_CLOCK_VIRTUAL, - via1_one_second, - &m->mos6522_via1); - via1_one_second_update(&m->mos6522_via1); - m->mos6522_via1.sixty_hz_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, - via1_sixty_hz, - &m->mos6522_via1); - via1_sixty_hz_update(&m->mos6522_via1); - - qemu_get_timedate(&tm, 0); - v1s->tick_offset =3D (uint32_t)mktimegm(&tm) + RTC_OFFSET; - - adb_register_autopoll_callback(adb_bus, adb_via_poll, v1s); - v1s->adb_data_ready =3D qdev_get_gpio_in_named(dev, "via1-irq", - VIA1_IRQ_ADB_READY_BIT); - - if (v1s->blk) { - int64_t len =3D blk_getlength(v1s->blk); - if (len < 0) { - error_setg_errno(errp, -len, - "could not get length of backing image"); - return; - } - ret =3D blk_set_perm(v1s->blk, - BLK_PERM_CONSISTENT_READ | BLK_PERM_WRITE, - BLK_PERM_ALL, errp); - if (ret < 0) { - return; - } - - len =3D blk_pread(v1s->blk, 0, v1s->PRAM, sizeof(v1s->PRAM)); - if (len !=3D sizeof(v1s->PRAM)) { - error_setg(errp, "can't read PRAM contents"); - return; - } - } } =20 static void mac_via_init(Object *obj) @@ -1091,6 +1049,49 @@ static void mos6522_q800_via1_reset(DeviceState *dev) v1s->alt =3D REG_EMPTY; } =20 +static void mos6522_q800_via1_realize(DeviceState *dev, Error **errp) +{ + MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(dev); + ADBBusState *adb_bus =3D &v1s->adb_bus; + struct tm tm; + int ret; + + v1s->one_second_timer =3D timer_new_ms(QEMU_CLOCK_VIRTUAL, via1_one_se= cond, + v1s); + via1_one_second_update(v1s); + v1s->sixty_hz_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, via1_sixty_hz, + v1s); + via1_sixty_hz_update(v1s); + + qemu_get_timedate(&tm, 0); + v1s->tick_offset =3D (uint32_t)mktimegm(&tm) + RTC_OFFSET; + + adb_register_autopoll_callback(adb_bus, adb_via_poll, v1s); + v1s->adb_data_ready =3D qdev_get_gpio_in_named(dev, "via1-irq", + VIA1_IRQ_ADB_READY_BIT); + + if (v1s->blk) { + int64_t len =3D blk_getlength(v1s->blk); + if (len < 0) { + error_setg_errno(errp, -len, + "could not get length of backing image"); + return; + } + ret =3D blk_set_perm(v1s->blk, + BLK_PERM_CONSISTENT_READ | BLK_PERM_WRITE, + BLK_PERM_ALL, errp); + if (ret < 0) { + return; + } + + len =3D blk_pread(v1s->blk, 0, v1s->PRAM, sizeof(v1s->PRAM)); + if (len !=3D sizeof(v1s->PRAM)) { + error_setg(errp, "can't read PRAM contents"); + return; + } + } +} + static void mos6522_q800_via1_init(Object *obj) { MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(obj); @@ -1147,6 +1148,7 @@ static void mos6522_q800_via1_class_init(ObjectClass = *oc, void *data) { DeviceClass *dc =3D DEVICE_CLASS(oc); =20 + dc->realize =3D mos6522_q800_via1_realize; dc->reset =3D mos6522_q800_via1_reset; dc->vmsd =3D &vmstate_q800_via1; device_class_set_props(dc, mos6522_q800_via1_properties); --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630319404023593.3927641485436; Mon, 30 Aug 2021 03:30:04 -0700 (PDT) Received: from localhost ([::1]:60644 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKeYE-0005rM-VO for importer@patchew.org; Mon, 30 Aug 2021 06:30:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59058) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU7-0005ne-GL for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:47 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53334 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU4-0007Tx-4P for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:47 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeTb-0003D2-H7; Mon, 30 Aug 2021 11:25:20 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:44 +0100 Message-Id: <20210830102447.10806-10-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 09/12] mac_via: remove mac_via device X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319405957100001 Content-Type: text/plain; charset="utf-8" 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 Reviewed-by: Laurent Vivier --- hw/m68k/q800.c | 34 +++++++++-------- hw/misc/mac_via.c | 78 +++++++-------------------------------- include/hw/misc/mac_via.h | 21 +++-------- 3 files changed, 36 insertions(+), 97 deletions(-) diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index e14f68f19b..ec28e69802 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -225,7 +225,7 @@ static void q800_init(MachineState *machine) hwaddr parameters_base; CPUState *cs; DeviceState *dev; - DeviceState *via_dev, *via1_dev; + DeviceState *via1_dev, *via2_dev; DeviceState *escc_orgate; SysBusESPState *sysbus_esp; ESPState *esp; @@ -270,28 +270,30 @@ static void q800_init(MachineState *machine) object_property_set_link(OBJECT(glue), "cpu", OBJECT(cpu), &error_abor= t); sysbus_realize_and_unref(SYS_BUS_DEVICE(glue), &error_fatal); =20 - /* VIA */ - - via_dev =3D qdev_new(TYPE_MAC_VIA); + /* VIA 1 */ + via1_dev =3D qdev_new(TYPE_MOS6522_Q800_VIA1); dinfo =3D drive_get(IF_MTD, 0, 0); if (dinfo) { - qdev_prop_set_drive(via_dev, "drive", blk_by_legacy_dinfo(dinfo)); + qdev_prop_set_drive(via1_dev, "drive", blk_by_legacy_dinfo(dinfo)); } - sysbus =3D SYS_BUS_DEVICE(via_dev); + sysbus =3D SYS_BUS_DEVICE(via1_dev); sysbus_realize_and_unref(sysbus, &error_fatal); - sysbus_mmio_map(sysbus, 0, VIA_BASE); - qdev_connect_gpio_out_named(DEVICE(sysbus), "irq", 0, - qdev_get_gpio_in(glue, 0)); - qdev_connect_gpio_out_named(DEVICE(sysbus), "irq", 1, - qdev_get_gpio_in(glue, 1)); - - via1_dev =3D DEVICE(MOS6522_Q800_VIA1(&MAC_VIA(via_dev)->mos6522_via1)= ); - adb_bus =3D qdev_get_child_bus(DEVICE(via1_dev), "adb.0"); + sysbus_mmio_map(sysbus, 1, VIA_BASE); + sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(glue, 0)); + + adb_bus =3D qdev_get_child_bus(via1_dev, "adb.0"); dev =3D qdev_new(TYPE_ADB_KEYBOARD); qdev_realize_and_unref(dev, adb_bus, &error_fatal); dev =3D qdev_new(TYPE_ADB_MOUSE); qdev_realize_and_unref(dev, adb_bus, &error_fatal); =20 + /* VIA 2 */ + via2_dev =3D qdev_new(TYPE_MOS6522_Q800_VIA2); + sysbus =3D SYS_BUS_DEVICE(via2_dev); + sysbus_realize_and_unref(sysbus, &error_fatal); + sysbus_mmio_map(sysbus, 1, VIA_BASE + VIA_SIZE); + sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(glue, 1)); + /* MACSONIC */ =20 if (nb_nics > 1) { @@ -375,11 +377,11 @@ static void q800_init(MachineState *machine) =20 sysbus =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sysbus, &error_fatal); - sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in_named(via_dev, + sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in_named(via2_dev, "via2-irq", VIA2_IRQ_SCSI_BIT= )); sysbus_connect_irq(sysbus, 1, - qdev_get_gpio_in_named(via_dev, "via2-irq", + qdev_get_gpio_in_named(via2_dev, "via2-irq", VIA2_IRQ_SCSI_DATA_BIT)); sysbus_mmio_map(sysbus, 0, ESP_BASE); sysbus_mmio_map(sysbus, 1, ESP_PDMA); diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index bb8d682ce9..7b9f067e71 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -34,11 +34,9 @@ #include "qemu/log.h" =20 /* - * VIAs: There are two in every machine, + * VIAs: There are two in every machine */ =20 -#define VIA_SIZE (0x2000) - /* * Not all of these are true post MacII I think. * CSA: probably the ones CHRP marks as 'unused' change purposes @@ -945,52 +943,6 @@ static const MemoryRegionOps mos6522_q800_via2_ops =3D= { }, }; =20 -static void mac_via_realize(DeviceState *dev, Error **errp) -{ - MacVIAState *m =3D MAC_VIA(dev); - MOS6522State *ms; - - /* Pass through mos6522 output IRQs */ - ms =3D MOS6522(&m->mos6522_via1); - object_property_add_alias(OBJECT(dev), "irq[0]", OBJECT(ms), - SYSBUS_DEVICE_GPIO_IRQ "[0]"); - ms =3D MOS6522(&m->mos6522_via2); - object_property_add_alias(OBJECT(dev), "irq[1]", OBJECT(ms), - SYSBUS_DEVICE_GPIO_IRQ "[0]"); - - sysbus_realize(SYS_BUS_DEVICE(&m->mos6522_via1), &error_abort); - sysbus_realize(SYS_BUS_DEVICE(&m->mos6522_via2), &error_abort); - - /* Pass through mos6522 input IRQs */ - qdev_pass_gpios(DEVICE(&m->mos6522_via1), dev, "via1-irq"); - qdev_pass_gpios(DEVICE(&m->mos6522_via2), dev, "via2-irq"); -} - -static void mac_via_init(Object *obj) -{ - SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); - MacVIAState *m =3D MAC_VIA(obj); - - /* MMIO */ - memory_region_init(&m->mmio, obj, "mac-via", 2 * VIA_SIZE); - sysbus_init_mmio(sbd, &m->mmio); - - memory_region_init_io(&m->via1mem, obj, &mos6522_q800_via1_ops, - &m->mos6522_via1, "via1", VIA_SIZE); - memory_region_add_subregion(&m->mmio, 0x0, &m->via1mem); - - memory_region_init_io(&m->via2mem, obj, &mos6522_q800_via2_ops, - &m->mos6522_via2, "via2", VIA_SIZE); - memory_region_add_subregion(&m->mmio, VIA_SIZE, &m->via2mem); - - /* Init VIAs 1 and 2 */ - object_initialize_child(obj, "via1", &m->mos6522_via1, - TYPE_MOS6522_Q800_VIA1); - - object_initialize_child(obj, "via2", &m->mos6522_via2, - TYPE_MOS6522_Q800_VIA2); -} - static void via1_postload_update_cb(void *opaque, bool running, RunState s= tate) { MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(opaque); @@ -1013,21 +965,6 @@ static int via1_post_load(void *opaque, int version_i= d) return 0; } =20 -static void mac_via_class_init(ObjectClass *oc, void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(oc); - - dc->realize =3D mac_via_realize; -} - -static TypeInfo mac_via_info =3D { - .name =3D TYPE_MAC_VIA, - .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(MacVIAState), - .instance_init =3D mac_via_init, - .class_init =3D mac_via_class_init, -}; - /* VIA 1 */ static void mos6522_q800_via1_reset(DeviceState *dev) { @@ -1095,6 +1032,11 @@ static void mos6522_q800_via1_realize(DeviceState *d= ev, Error **errp) static void mos6522_q800_via1_init(Object *obj) { MOS6522Q800VIA1State *v1s =3D MOS6522_Q800_VIA1(obj); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(v1s); + + memory_region_init_io(&v1s->via_mem, obj, &mos6522_q800_via1_ops, v1s, + "via1", VIA_SIZE); + sysbus_init_mmio(sbd, &v1s->via_mem); =20 /* ADB */ qbus_create_inplace((BusState *)&v1s->adb_bus, sizeof(v1s->adb_bus), @@ -1187,6 +1129,13 @@ static void mos6522_q800_via2_reset(DeviceState *dev) =20 static void mos6522_q800_via2_init(Object *obj) { + MOS6522Q800VIA2State *v2s =3D MOS6522_Q800_VIA2(obj); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(v2s); + + memory_region_init_io(&v2s->via_mem, obj, &mos6522_q800_via2_ops, v2s, + "via2", VIA_SIZE); + sysbus_init_mmio(sbd, &v2s->via_mem); + qdev_init_gpio_in_named(DEVICE(obj), via2_irq_request, "via2-irq", VIA2_IRQ_NB); } @@ -1224,7 +1173,6 @@ static void mac_via_register_types(void) { type_register_static(&mos6522_q800_via1_type_info); type_register_static(&mos6522_q800_via2_type_info); - type_register_static(&mac_via_info); } =20 type_init(mac_via_register_types); diff --git a/include/hw/misc/mac_via.h b/include/hw/misc/mac_via.h index 182dcb7422..9a8bca056e 100644 --- a/include/hw/misc/mac_via.h +++ b/include/hw/misc/mac_via.h @@ -15,6 +15,8 @@ #include "qom/object.h" =20 =20 +#define VIA_SIZE 0x2000 + /* VIA 1 */ #define VIA1_IRQ_ONE_SECOND_BIT 0 #define VIA1_IRQ_60HZ_BIT 1 @@ -38,6 +40,8 @@ struct MOS6522Q800VIA1State { /*< private >*/ MOS6522State parent_obj; =20 + MemoryRegion via_mem; + qemu_irq irqs[VIA1_IRQ_NB]; uint8_t last_b; =20 @@ -95,23 +99,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(MOS6522Q800VIA2State, MOS6522= _Q800_VIA2) struct MOS6522Q800VIA2State { /*< private >*/ MOS6522State parent_obj; -}; - - -#define TYPE_MAC_VIA "mac_via" -OBJECT_DECLARE_SIMPLE_TYPE(MacVIAState, MAC_VIA) - -struct MacVIAState { - SysBusDevice busdev; - - /* MMIO */ - MemoryRegion mmio; - MemoryRegion via1mem; - MemoryRegion via2mem; =20 - /* VIAs */ - MOS6522Q800VIA1State mos6522_via1; - MOS6522Q800VIA2State mos6522_via2; + MemoryRegion via_mem; }; =20 #endif --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630319629761527.5660517543937; Mon, 30 Aug 2021 03:33:49 -0700 (PDT) Received: from localhost ([::1]:39534 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKebs-0002X8-IV for importer@patchew.org; Mon, 30 Aug 2021 06:33:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59132) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeUC-00060C-Gr for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:52 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53340 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeU6-0007bp-RP for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:52 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeTg-0003D2-QM; Mon, 30 Aug 2021 11:25:25 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:45 +0100 Message-Id: <20210830102447.10806-11-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 10/12] mac_via: remove explicit viaN prefix from VIA IRQ gpios X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319631638100001 Content-Type: text/plain; charset="utf-8" Now that q800 VIA1 and VIA2 are completely separate devices there is no nee= d to add a specific device prefix to ensure that the IRQ lines remain separate. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/m68k/q800.c | 10 ++++------ hw/misc/mac_via.c | 9 +++------ 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c index ec28e69802..5ba87f789c 100644 --- a/hw/m68k/q800.c +++ b/hw/m68k/q800.c @@ -377,12 +377,10 @@ static void q800_init(MachineState *machine) =20 sysbus =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(sysbus, &error_fatal); - sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in_named(via2_dev, - "via2-irq", - VIA2_IRQ_SCSI_BIT= )); - sysbus_connect_irq(sysbus, 1, - qdev_get_gpio_in_named(via2_dev, "via2-irq", - VIA2_IRQ_SCSI_DATA_BIT)); + sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(via2_dev, + VIA2_IRQ_SCSI_BIT)); + sysbus_connect_irq(sysbus, 1, qdev_get_gpio_in(via2_dev, + VIA2_IRQ_SCSI_DATA_BIT)= ); sysbus_mmio_map(sysbus, 0, ESP_BASE); sysbus_mmio_map(sysbus, 1, ESP_PDMA); =20 diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index 7b9f067e71..f093f7388e 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -1004,8 +1004,7 @@ static void mos6522_q800_via1_realize(DeviceState *de= v, Error **errp) v1s->tick_offset =3D (uint32_t)mktimegm(&tm) + RTC_OFFSET; =20 adb_register_autopoll_callback(adb_bus, adb_via_poll, v1s); - v1s->adb_data_ready =3D qdev_get_gpio_in_named(dev, "via1-irq", - VIA1_IRQ_ADB_READY_BIT); + v1s->adb_data_ready =3D qdev_get_gpio_in(dev, VIA1_IRQ_ADB_READY_BIT); =20 if (v1s->blk) { int64_t len =3D blk_getlength(v1s->blk); @@ -1042,8 +1041,7 @@ static void mos6522_q800_via1_init(Object *obj) qbus_create_inplace((BusState *)&v1s->adb_bus, sizeof(v1s->adb_bus), TYPE_ADB_BUS, DEVICE(v1s), "adb.0"); =20 - qdev_init_gpio_in_named(DEVICE(obj), via1_irq_request, "via1-irq", - VIA1_IRQ_NB); + qdev_init_gpio_in(DEVICE(obj), via1_irq_request, VIA1_IRQ_NB); } =20 static const VMStateDescription vmstate_q800_via1 =3D { @@ -1136,8 +1134,7 @@ static void mos6522_q800_via2_init(Object *obj) "via2", VIA_SIZE); sysbus_init_mmio(sbd, &v2s->via_mem); =20 - qdev_init_gpio_in_named(DEVICE(obj), via2_irq_request, "via2-irq", - VIA2_IRQ_NB); + qdev_init_gpio_in(DEVICE(obj), via2_irq_request, VIA2_IRQ_NB); } =20 static const VMStateDescription vmstate_q800_via2 =3D { --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630319744306101.96561475892997; Mon, 30 Aug 2021 03:35:44 -0700 (PDT) Received: from localhost ([::1]:44846 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKedj-0006Al-8r for importer@patchew.org; Mon, 30 Aug 2021 06:35:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59154) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeUE-00066r-HA for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:54 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53346 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeUB-0007iS-RN for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:54 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeTm-0003D2-0t; Mon, 30 Aug 2021 11:25:31 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:46 +0100 Message-Id: <20210830102447.10806-12-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 11/12] mac_via: rename VIA2_IRQ_SLOT_BIT to VIA2_IRQ_NUBUS_BIT X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319746663100001 Content-Type: text/plain; charset="utf-8" Also improve the alignment of the shifted constants. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier --- include/hw/misc/mac_via.h | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/include/hw/misc/mac_via.h b/include/hw/misc/mac_via.h index 9a8bca056e..5168e3ce66 100644 --- a/include/hw/misc/mac_via.h +++ b/include/hw/misc/mac_via.h @@ -26,11 +26,11 @@ =20 #define VIA1_IRQ_NB 8 =20 -#define VIA1_IRQ_ONE_SECOND (1 << VIA1_IRQ_ONE_SECOND_BIT) -#define VIA1_IRQ_60HZ (1 << VIA1_IRQ_60HZ_BIT) -#define VIA1_IRQ_ADB_READY (1 << VIA1_IRQ_ADB_READY_BIT) -#define VIA1_IRQ_ADB_DATA (1 << VIA1_IRQ_ADB_DATA_BIT) -#define VIA1_IRQ_ADB_CLOCK (1 << VIA1_IRQ_ADB_CLOCK_BIT) +#define VIA1_IRQ_ONE_SECOND (1 << VIA1_IRQ_ONE_SECOND_BIT) +#define VIA1_IRQ_60HZ (1 << VIA1_IRQ_60HZ_BIT) +#define VIA1_IRQ_ADB_READY (1 << VIA1_IRQ_ADB_READY_BIT) +#define VIA1_IRQ_ADB_DATA (1 << VIA1_IRQ_ADB_DATA_BIT) +#define VIA1_IRQ_ADB_CLOCK (1 << VIA1_IRQ_ADB_CLOCK_BIT) =20 =20 #define TYPE_MOS6522_Q800_VIA1 "mos6522-q800-via1" @@ -80,18 +80,18 @@ struct MOS6522Q800VIA1State { =20 /* VIA 2 */ #define VIA2_IRQ_SCSI_DATA_BIT 0 -#define VIA2_IRQ_SLOT_BIT 1 +#define VIA2_IRQ_NUBUS_BIT 1 #define VIA2_IRQ_UNUSED_BIT 2 #define VIA2_IRQ_SCSI_BIT 3 #define VIA2_IRQ_ASC_BIT 4 =20 #define VIA2_IRQ_NB 8 =20 -#define VIA2_IRQ_SCSI_DATA (1 << VIA2_IRQ_SCSI_DATA_BIT) -#define VIA2_IRQ_SLOT (1 << VIA2_IRQ_SLOT_BIT) -#define VIA2_IRQ_UNUSED (1 << VIA2_IRQ_SCSI_BIT) -#define VIA2_IRQ_SCSI (1 << VIA2_IRQ_UNUSED_BIT) -#define VIA2_IRQ_ASC (1 << VIA2_IRQ_ASC_BIT) +#define VIA2_IRQ_SCSI_DATA (1 << VIA2_IRQ_SCSI_DATA_BIT) +#define VIA2_IRQ_NUBUS (1 << VIA2_IRQ_NUBUS_BIT) +#define VIA2_IRQ_UNUSED (1 << VIA2_IRQ_SCSI_BIT) +#define VIA2_IRQ_SCSI (1 << VIA2_IRQ_UNUSED_BIT) +#define VIA2_IRQ_ASC (1 << VIA2_IRQ_ASC_BIT) =20 #define TYPE_MOS6522_Q800_VIA2 "mos6522-q800-via2" OBJECT_DECLARE_SIMPLE_TYPE(MOS6522Q800VIA2State, MOS6522_Q800_VIA2) --=20 2.20.1 From nobody Thu May 2 08:23:13 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1630319750755235.18812743528952; Mon, 30 Aug 2021 03:35:50 -0700 (PDT) Received: from localhost ([::1]:45220 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mKedp-0006S5-Qh for importer@patchew.org; Mon, 30 Aug 2021 06:35:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59174) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeUI-0006Jj-Ic for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:58 -0400 Received: from mail.ilande.co.uk ([2001:41c9:1:41f::167]:53350 helo=mail.default.ilande.bv.iomart.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mKeUH-0007mN-0J for qemu-devel@nongnu.org; Mon, 30 Aug 2021 06:25:58 -0400 Received: from host86-179-186-93.range86-179.btcentralplus.com ([86.179.186.93] helo=kentang.home) by mail.default.ilande.bv.iomart.io with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mKeTr-0003D2-6G; Mon, 30 Aug 2021 11:25:36 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, laurent@vivier.eu Date: Mon, 30 Aug 2021 11:24:47 +0100 Message-Id: <20210830102447.10806-13-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> References: <20210830102447.10806-1-mark.cave-ayland@ilande.co.uk> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-SA-Exim-Connect-IP: 86.179.186.93 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk Subject: [PATCH 12/12] mac_via: add qdev gpios for nubus slot interrupts to VIA2 X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on mail.default.ilande.bv.iomart.io) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:41c9:1:41f::167; envelope-from=mark.cave-ayland@ilande.co.uk; helo=mail.default.ilande.bv.iomart.io X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZM-MESSAGEID: 1630319752655100001 Content-Type: text/plain; charset="utf-8" These will soon be required to enable nubus devices to support interrupts. Signed-off-by: Mark Cave-Ayland Reviewed-by: Laurent Vivier --- hw/misc/mac_via.c | 23 +++++++++++++++++++++++ include/hw/misc/mac_via.h | 10 ++++++++++ 2 files changed, 33 insertions(+) diff --git a/hw/misc/mac_via.c b/hw/misc/mac_via.c index f093f7388e..d1abcd97b5 100644 --- a/hw/misc/mac_via.c +++ b/hw/misc/mac_via.c @@ -1123,6 +1123,26 @@ static void mos6522_q800_via2_reset(DeviceState *dev) =20 ms->dirb =3D 0; ms->b =3D 0; + ms->dira =3D 0; + ms->a =3D 0x7f; +} + +static void via2_nubus_irq_request(void *opaque, int irq, int level) +{ + MOS6522Q800VIA2State *v2s =3D opaque; + MOS6522State *s =3D MOS6522(v2s); + MOS6522DeviceClass *mdc =3D MOS6522_GET_CLASS(s); + + if (level) { + /* Port A nubus IRQ inputs are active LOW */ + s->a &=3D ~(1 << irq); + s->ifr |=3D 1 << VIA2_IRQ_NUBUS_BIT; + } else { + s->a |=3D (1 << irq); + s->ifr &=3D ~(1 << VIA2_IRQ_NUBUS_BIT); + } + + mdc->update_irq(s); } =20 static void mos6522_q800_via2_init(Object *obj) @@ -1135,6 +1155,9 @@ static void mos6522_q800_via2_init(Object *obj) sysbus_init_mmio(sbd, &v2s->via_mem); =20 qdev_init_gpio_in(DEVICE(obj), via2_irq_request, VIA2_IRQ_NB); + + qdev_init_gpio_in_named(DEVICE(obj), via2_nubus_irq_request, "nubus-ir= q", + VIA2_NUBUS_IRQ_NB); } =20 static const VMStateDescription vmstate_q800_via2 =3D { diff --git a/include/hw/misc/mac_via.h b/include/hw/misc/mac_via.h index 5168e3ce66..4506abe5d0 100644 --- a/include/hw/misc/mac_via.h +++ b/include/hw/misc/mac_via.h @@ -93,6 +93,16 @@ struct MOS6522Q800VIA1State { #define VIA2_IRQ_SCSI (1 << VIA2_IRQ_UNUSED_BIT) #define VIA2_IRQ_ASC (1 << VIA2_IRQ_ASC_BIT) =20 +#define VIA2_NUBUS_IRQ_NB 7 + +#define VIA2_NUBUS_IRQ_9 0 +#define VIA2_NUBUS_IRQ_A 1 +#define VIA2_NUBUS_IRQ_B 2 +#define VIA2_NUBUS_IRQ_C 3 +#define VIA2_NUBUS_IRQ_D 4 +#define VIA2_NUBUS_IRQ_E 5 +#define VIA2_NUBUS_IRQ_INTVIDEO 6 + #define TYPE_MOS6522_Q800_VIA2 "mos6522-q800-via2" OBJECT_DECLARE_SIMPLE_TYPE(MOS6522Q800VIA2State, MOS6522_Q800_VIA2) =20 --=20 2.20.1