From nobody Mon Feb 9 12:29:11 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1492788768283327.3130354948264; Fri, 21 Apr 2017 08:32:48 -0700 (PDT) Received: from localhost ([::1]:60182 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d1aYA-0002nX-MY for importer@patchew.org; Fri, 21 Apr 2017 11:32:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49855) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d1aWD-0001SB-0v for qemu-devel@nongnu.org; Fri, 21 Apr 2017 11:30:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d1aW9-0007ps-JT for qemu-devel@nongnu.org; Fri, 21 Apr 2017 11:30:44 -0400 Received: from zero.eik.bme.hu ([152.66.115.2]:33823) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d1aW9-0007oo-7i; Fri, 21 Apr 2017 11:30:41 -0400 Received: from zero.eik.bme.hu (blah.eik.bme.hu [152.66.115.182]) by localhost (Postfix) with SMTP id 1FFC07456CF; Fri, 21 Apr 2017 17:30:39 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 3C7417456FC; Fri, 21 Apr 2017 17:30:38 +0200 (CEST) Message-Id: <86803c6f40cd678b61b3b1a1429683f60f0aa89a.1492787889.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Date: Fri, 21 Apr 2017 17:18:09 +0200 To: qemu-devel@nongnu.org, qemu-trivial@nongnu.org X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x [fuzzy] X-Received-From: 152.66.115.2 Subject: [Qemu-devel] [PATCH v7 12/13] sm501: Add vmstate descriptor X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Magnus Damm , Aurelien Jarno , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: BALATON Zoltan Reviewed-by: Peter Maydell Tested-by: Aurelien Jarno --- v3: Added local_mem_size_index to vmstate, add vmstate for sysbus version t= oo hw/display/sm501.c | 100 +++++++++++++++++++++++++++++++++++++++++++++++++= +++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/hw/display/sm501.c b/hw/display/sm501.c index 4e09d8a..2094adb 100644 --- a/hw/display/sm501.c +++ b/hw/display/sm501.c @@ -66,6 +66,7 @@ =20 #define MMIO_BASE_OFFSET 0x3e00000 #define MMIO_SIZE 0x200000 +#define DC_PALETTE_ENTRIES (0x400 * 3) =20 /* SM501 register definitions taken from "linux/include/linux/sm501-regs.h= " */ =20 @@ -492,7 +493,7 @@ typedef struct SM501State { uint32_t uart0_mcr; uint32_t uart0_scr; =20 - uint8_t dc_palette[0x400 * 3]; + uint8_t dc_palette[DC_PALETTE_ENTRIES]; =20 uint32_t dc_panel_control; uint32_t dc_panel_panning_control; @@ -1618,6 +1619,78 @@ static void sm501_init(SM501State *s, DeviceState *d= ev, s->con =3D graphic_console_init(DEVICE(dev), 0, &sm501_ops, s); } =20 +static const VMStateDescription vmstate_sm501_state =3D { + .name =3D "sm501-state", + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_UINT32(local_mem_size_index, SM501State), + VMSTATE_UINT32(system_control, SM501State), + VMSTATE_UINT32(misc_control, SM501State), + VMSTATE_UINT32(gpio_31_0_control, SM501State), + VMSTATE_UINT32(gpio_63_32_control, SM501State), + VMSTATE_UINT32(dram_control, SM501State), + VMSTATE_UINT32(arbitration_control, SM501State), + VMSTATE_UINT32(irq_mask, SM501State), + VMSTATE_UINT32(misc_timing, SM501State), + VMSTATE_UINT32(power_mode_control, SM501State), + VMSTATE_UINT32(uart0_ier, SM501State), + VMSTATE_UINT32(uart0_lcr, SM501State), + VMSTATE_UINT32(uart0_mcr, SM501State), + VMSTATE_UINT32(uart0_scr, SM501State), + VMSTATE_UINT8_ARRAY(dc_palette, SM501State, DC_PALETTE_ENTRIES), + VMSTATE_UINT32(dc_panel_control, SM501State), + VMSTATE_UINT32(dc_panel_panning_control, SM501State), + VMSTATE_UINT32(dc_panel_fb_addr, SM501State), + VMSTATE_UINT32(dc_panel_fb_offset, SM501State), + VMSTATE_UINT32(dc_panel_fb_width, SM501State), + VMSTATE_UINT32(dc_panel_fb_height, SM501State), + VMSTATE_UINT32(dc_panel_tl_location, SM501State), + VMSTATE_UINT32(dc_panel_br_location, SM501State), + VMSTATE_UINT32(dc_panel_h_total, SM501State), + VMSTATE_UINT32(dc_panel_h_sync, SM501State), + VMSTATE_UINT32(dc_panel_v_total, SM501State), + VMSTATE_UINT32(dc_panel_v_sync, SM501State), + VMSTATE_UINT32(dc_panel_hwc_addr, SM501State), + VMSTATE_UINT32(dc_panel_hwc_location, SM501State), + VMSTATE_UINT32(dc_panel_hwc_color_1_2, SM501State), + VMSTATE_UINT32(dc_panel_hwc_color_3, SM501State), + VMSTATE_UINT32(dc_video_control, SM501State), + VMSTATE_UINT32(dc_crt_control, SM501State), + VMSTATE_UINT32(dc_crt_fb_addr, SM501State), + VMSTATE_UINT32(dc_crt_fb_offset, SM501State), + VMSTATE_UINT32(dc_crt_h_total, SM501State), + VMSTATE_UINT32(dc_crt_h_sync, SM501State), + VMSTATE_UINT32(dc_crt_v_total, SM501State), + VMSTATE_UINT32(dc_crt_v_sync, SM501State), + VMSTATE_UINT32(dc_crt_hwc_addr, SM501State), + VMSTATE_UINT32(dc_crt_hwc_location, SM501State), + VMSTATE_UINT32(dc_crt_hwc_color_1_2, SM501State), + VMSTATE_UINT32(dc_crt_hwc_color_3, SM501State), + VMSTATE_UINT32(twoD_source, SM501State), + VMSTATE_UINT32(twoD_destination, SM501State), + VMSTATE_UINT32(twoD_dimension, SM501State), + VMSTATE_UINT32(twoD_control, SM501State), + VMSTATE_UINT32(twoD_pitch, SM501State), + VMSTATE_UINT32(twoD_foreground, SM501State), + VMSTATE_UINT32(twoD_background, SM501State), + VMSTATE_UINT32(twoD_stretch, SM501State), + VMSTATE_UINT32(twoD_color_compare, SM501State), + VMSTATE_UINT32(twoD_color_compare_mask, SM501State), + VMSTATE_UINT32(twoD_mask, SM501State), + VMSTATE_UINT32(twoD_clip_tl, SM501State), + VMSTATE_UINT32(twoD_clip_br, SM501State), + VMSTATE_UINT32(twoD_mono_pattern_low, SM501State), + VMSTATE_UINT32(twoD_mono_pattern_high, SM501State), + VMSTATE_UINT32(twoD_window_width, SM501State), + VMSTATE_UINT32(twoD_source_base, SM501State), + VMSTATE_UINT32(twoD_destination_base, SM501State), + VMSTATE_UINT32(twoD_alpha, SM501State), + VMSTATE_UINT32(twoD_wrap, SM501State), + VMSTATE_END_OF_LIST() + } +}; + #define TYPE_SYSBUS_SM501 "sysbus-sm501" #define SYSBUS_SM501(obj) \ OBJECT_CHECK(SM501SysBusState, (obj), TYPE_SYSBUS_SM501) @@ -1677,6 +1750,17 @@ static void sm501_reset_sysbus(DeviceState *dev) sm501_reset(&s->state); } =20 +static const VMStateDescription vmstate_sm501_sysbus =3D { + .name =3D TYPE_SYSBUS_SM501, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_STRUCT(state, SM501SysBusState, 1, + vmstate_sm501_state, SM501State), + VMSTATE_END_OF_LIST() + } +}; + static void sm501_sysbus_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -1686,6 +1770,7 @@ static void sm501_sysbus_class_init(ObjectClass *klas= s, void *data) dc->desc =3D "SM501 Multimedia Companion"; dc->props =3D sm501_sysbus_properties; dc->reset =3D sm501_reset_sysbus; + dc->vmsd =3D &vmstate_sm501_sysbus; /* Note: pointer property "chr-state" may remain null, thus * no need for dc->cannot_instantiate_with_device_add_yet =3D true; */ @@ -1738,6 +1823,18 @@ static void sm501_reset_pci(DeviceState *dev) s->state.misc_control |=3D 1; } =20 +static const VMStateDescription vmstate_sm501_pci =3D { + .name =3D TYPE_PCI_SM501, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (VMStateField[]) { + VMSTATE_PCI_DEVICE(parent_obj, SM501PCIState), + VMSTATE_STRUCT(state, SM501PCIState, 1, + vmstate_sm501_state, SM501State), + VMSTATE_END_OF_LIST() + } +}; + static void sm501_pci_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -1752,6 +1849,7 @@ static void sm501_pci_class_init(ObjectClass *klass, = void *data) dc->props =3D sm501_pci_properties; dc->reset =3D sm501_reset_pci; dc->hotpluggable =3D false; + dc->vmsd =3D &vmstate_sm501_pci; } =20 static const TypeInfo sm501_pci_info =3D { --=20 2.7.4