get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/1197476/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 1197476,
    "url": "http://patchwork.ozlabs.org/api/patches/1197476/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20191119141211.25716-14-clg@kaod.org/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20191119141211.25716-14-clg@kaod.org>",
    "list_archive_url": null,
    "date": "2019-11-19T14:12:07",
    "name": "[13/17] aspeed: Remove AspeedBoardConfig array and use AspeedMachineClass",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "b63da5c2a3798595d3c30a26278d1398cda72117",
    "submitter": {
        "id": 68548,
        "url": "http://patchwork.ozlabs.org/api/people/68548/?format=api",
        "name": "Cédric Le Goater",
        "email": "clg@kaod.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20191119141211.25716-14-clg@kaod.org/mbox/",
    "series": [
        {
            "id": 143789,
            "url": "http://patchwork.ozlabs.org/api/series/143789/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=143789",
            "date": "2019-11-19T14:11:54",
            "name": "aspeed: extensions and fixes",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/143789/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1197476/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1197476/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org",
        "Authentication-Results": [
            "ozlabs.org; spf=pass (sender SPF authorized)\n\tsmtp.mailfrom=nongnu.org (client-ip=209.51.188.17;\n\thelo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdmarc=none (p=none dis=none) header.from=kaod.org"
        ],
        "Received": [
            "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 47HSfZ2m06z9sPn\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 20 Nov 2019 01:20:54 +1100 (AEDT)",
            "from localhost ([::1]:46016 helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1iX4N9-0005TK-Rz\n\tfor incoming@patchwork.ozlabs.org; Tue, 19 Nov 2019 09:20:51 -0500",
            "from eggs.gnu.org ([2001:470:142:3::10]:42193)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <clg@kaod.org>) id 1iX4Gg-0007XI-D1\n\tfor qemu-devel@nongnu.org; Tue, 19 Nov 2019 09:14:13 -0500",
            "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <clg@kaod.org>) id 1iX4Ge-0005jx-5h\n\tfor qemu-devel@nongnu.org; Tue, 19 Nov 2019 09:14:10 -0500",
            "from 19.mo5.mail-out.ovh.net ([46.105.35.78]:47639)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <clg@kaod.org>) id 1iX4Gd-0005jO-PT\n\tfor qemu-devel@nongnu.org; Tue, 19 Nov 2019 09:14:08 -0500",
            "from player795.ha.ovh.net (unknown [10.108.54.119])\n\tby mo5.mail-out.ovh.net (Postfix) with ESMTP id 3E45C25ABE0\n\tfor <qemu-devel@nongnu.org>; Tue, 19 Nov 2019 15:14:06 +0100 (CET)",
            "from kaod.org (deibp9eh1--blueice1n4.emea.ibm.com [195.212.29.166])\n\t(Authenticated sender: clg@kaod.org)\n\tby player795.ha.ovh.net (Postfix) with ESMTPSA id E8376C18AE91;\n\tTue, 19 Nov 2019 14:13:58 +0000 (UTC)"
        ],
        "From": "=?utf-8?q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>",
        "To": "Peter Maydell <peter.maydell@linaro.org>",
        "Subject": "[PATCH 13/17] aspeed: Remove AspeedBoardConfig array and use\n\tAspeedMachineClass",
        "Date": "Tue, 19 Nov 2019 15:12:07 +0100",
        "Message-Id": "<20191119141211.25716-14-clg@kaod.org>",
        "X-Mailer": "git-send-email 2.21.0",
        "In-Reply-To": "<20191119141211.25716-1-clg@kaod.org>",
        "References": "<20191119141211.25716-1-clg@kaod.org>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "X-Ovh-Tracer-Id": "17919259971289058065",
        "X-VR-SPAMSTATE": "OK",
        "X-VR-SPAMSCORE": "-100",
        "X-VR-SPAMCAUSE": "gggruggvucftvghtrhhoucdtuddrgedufedrudegkedgiedvucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuqfggjfdqfffguegfifdpvefjgfevmfevgfenuceurghilhhouhhtmecuhedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvufffkffojghfgggtgfesthekredtredtjeenucfhrhhomhepveorughrihgtucfnvgcuifhorghtvghruceotghlgheskhgrohgurdhorhhgqeenucfkpheptddrtddrtddrtddpudelhedrvdduvddrvdelrdduieeinecurfgrrhgrmhepmhhouggvpehsmhhtphdqohhuthdphhgvlhhopehplhgrhigvrhejleehrdhhrgdrohhvhhdrnhgvthdpihhnvghtpedtrddtrddtrddtpdhmrghilhhfrhhomheptghlgheskhgrohgurdhorhhgpdhrtghpthhtohepqhgvmhhuqdguvghvvghlsehnohhnghhnuhdrohhrghenucevlhhushhtvghrufhiiigvpeeh",
        "Content-Transfer-Encoding": "quoted-printable",
        "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]",
        "X-Received-From": "46.105.35.78",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.23",
        "Precedence": "list",
        "List-Id": "<qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Cc": "Andrew Jeffery <andrew@aj.id.au>, =?utf-8?q?C=C3=A9dric_Le_Goater?=\n\t<clg@kaod.org>, qemu-arm@nongnu.org, Joel Stanley <joel@jms.id.au>,\n\tqemu-devel@nongnu.org",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"
    },
    "content": "AspeedBoardConfig is a redundant way to define class attributes and it\ncomplexifies the machine definition and initialization.\n\nSigned-off-by: Cédric Le Goater <clg@kaod.org>\nReviewed-by: Joel Stanley <joel@jms.id.au>\nSigned-off-by: Cédric Le Goater <clg@kaod.org>\n---\n include/hw/arm/aspeed.h |  24 ++---\n hw/arm/aspeed.c         | 231 ++++++++++++++++++++++------------------\n 2 files changed, 137 insertions(+), 118 deletions(-)",
    "diff": "diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h\nindex f49bc7081e4d..4423cd0cda71 100644\n--- a/include/hw/arm/aspeed.h\n+++ b/include/hw/arm/aspeed.h\n@@ -13,19 +13,6 @@\n \n typedef struct AspeedBoardState AspeedBoardState;\n \n-typedef struct AspeedBoardConfig {\n-    const char *name;\n-    const char *desc;\n-    const char *soc_name;\n-    uint32_t hw_strap1;\n-    uint32_t hw_strap2;\n-    const char *fmc_model;\n-    const char *spi_model;\n-    uint32_t num_cs;\n-    void (*i2c_init)(AspeedBoardState *bmc);\n-    uint32_t ram;\n-} AspeedBoardConfig;\n-\n #define TYPE_ASPEED_MACHINE       MACHINE_TYPE_NAME(\"aspeed\")\n #define ASPEED_MACHINE(obj) \\\n     OBJECT_CHECK(AspeedMachine, (obj), TYPE_ASPEED_MACHINE)\n@@ -41,7 +28,16 @@ typedef struct AspeedMachine {\n \n typedef struct AspeedMachineClass {\n     MachineClass parent_obj;\n-    const AspeedBoardConfig *board;\n+\n+    const char *name;\n+    const char *desc;\n+    const char *soc_name;\n+    uint32_t hw_strap1;\n+    uint32_t hw_strap2;\n+    const char *fmc_model;\n+    const char *spi_model;\n+    uint32_t num_cs;\n+    void (*i2c_init)(AspeedBoardState *bmc);\n } AspeedMachineClass;\n \n \ndiff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c\nindex 028191ff36fc..e34e6787430b 100644\n--- a/hw/arm/aspeed.c\n+++ b/hw/arm/aspeed.c\n@@ -167,10 +167,10 @@ static void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype,\n     }\n }\n \n-static void aspeed_board_init(MachineState *machine,\n-                              const AspeedBoardConfig *cfg)\n+static void aspeed_machine_init(MachineState *machine)\n {\n     AspeedBoardState *bmc;\n+    AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine);\n     AspeedSoCClass *sc;\n     DriveInfo *drive0 = drive_get(IF_MTD, 0, 0);\n     ram_addr_t max_ram_size;\n@@ -182,18 +182,18 @@ static void aspeed_board_init(MachineState *machine,\n                        UINT32_MAX);\n \n     object_initialize_child(OBJECT(machine), \"soc\", &bmc->soc,\n-                            (sizeof(bmc->soc)), cfg->soc_name, &error_abort,\n+                            (sizeof(bmc->soc)), amc->soc_name, &error_abort,\n                             NULL);\n \n     sc = ASPEED_SOC_GET_CLASS(&bmc->soc);\n \n     object_property_set_uint(OBJECT(&bmc->soc), ram_size, \"ram-size\",\n                              &error_abort);\n-    object_property_set_int(OBJECT(&bmc->soc), cfg->hw_strap1, \"hw-strap1\",\n+    object_property_set_int(OBJECT(&bmc->soc), amc->hw_strap1, \"hw-strap1\",\n                             &error_abort);\n-    object_property_set_int(OBJECT(&bmc->soc), cfg->hw_strap2, \"hw-strap2\",\n+    object_property_set_int(OBJECT(&bmc->soc), amc->hw_strap2, \"hw-strap2\",\n                             &error_abort);\n-    object_property_set_int(OBJECT(&bmc->soc), cfg->num_cs, \"num-cs\",\n+    object_property_set_int(OBJECT(&bmc->soc), amc->num_cs, \"num-cs\",\n                             &error_abort);\n     object_property_set_int(OBJECT(&bmc->soc), machine->smp.cpus, \"num-cpus\",\n                             &error_abort);\n@@ -230,8 +230,8 @@ static void aspeed_board_init(MachineState *machine,\n                           \"max_ram\", max_ram_size  - ram_size);\n     memory_region_add_subregion(&bmc->ram_container, ram_size, &bmc->max_ram);\n \n-    aspeed_board_init_flashes(&bmc->soc.fmc, cfg->fmc_model, &error_abort);\n-    aspeed_board_init_flashes(&bmc->soc.spi[0], cfg->spi_model, &error_abort);\n+    aspeed_board_init_flashes(&bmc->soc.fmc, amc->fmc_model, &error_abort);\n+    aspeed_board_init_flashes(&bmc->soc.spi[0], amc->spi_model, &error_abort);\n \n     /* Install first FMC flash content as a boot rom. */\n     if (drive0) {\n@@ -255,8 +255,8 @@ static void aspeed_board_init(MachineState *machine,\n     aspeed_board_binfo.loader_start = sc->memmap[ASPEED_SDRAM];\n     aspeed_board_binfo.nb_cpus = bmc->soc.num_cpus;\n \n-    if (cfg->i2c_init) {\n-        cfg->i2c_init(bmc);\n+    if (amc->i2c_init) {\n+        amc->i2c_init(bmc);\n     }\n \n     for (i = 0; i < ARRAY_SIZE(bmc->soc.sdhci.slots); i++) {\n@@ -383,118 +383,141 @@ static void witherspoon_bmc_i2c_init(AspeedBoardState *bmc)\n                      0x60);\n }\n \n-static void aspeed_machine_init(MachineState *machine)\n-{\n-    AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine);\n-\n-    aspeed_board_init(machine, amc->board);\n-}\n-\n static void aspeed_machine_class_init(ObjectClass *oc, void *data)\n {\n     MachineClass *mc = MACHINE_CLASS(oc);\n-    AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);\n-    const AspeedBoardConfig *board = data;\n \n-    mc->desc = board->desc;\n     mc->init = aspeed_machine_init;\n     mc->max_cpus = ASPEED_CPUS_NUM;\n     mc->no_floppy = 1;\n     mc->no_cdrom = 1;\n     mc->no_parallel = 1;\n-    if (board->ram) {\n-        mc->default_ram_size = board->ram;\n-    }\n-    amc->board = board;\n }\n \n-static const TypeInfo aspeed_machine_type = {\n-    .name = TYPE_ASPEED_MACHINE,\n-    .parent = TYPE_MACHINE,\n-    .instance_size = sizeof(AspeedMachine),\n-    .class_size = sizeof(AspeedMachineClass),\n-    .abstract = true,\n+static void aspeed_machine_palmetto_class_init(ObjectClass *oc, void *data)\n+{\n+    MachineClass *mc = MACHINE_CLASS(oc);\n+    AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);\n+\n+    mc->desc       = \"OpenPOWER Palmetto BMC (ARM926EJ-S)\";\n+    amc->soc_name  = \"ast2400-a1\";\n+    amc->hw_strap1 = PALMETTO_BMC_HW_STRAP1;\n+    amc->fmc_model = \"n25q256a\";\n+    amc->spi_model = \"mx25l25635e\";\n+    amc->num_cs    = 1;\n+    amc->i2c_init  = palmetto_bmc_i2c_init;\n+    mc->default_ram_size       = 256 * MiB;\n+};\n+\n+static void aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, void *data)\n+{\n+    MachineClass *mc = MACHINE_CLASS(oc);\n+    AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);\n+\n+    mc->desc       = \"Aspeed AST2500 EVB (ARM1176)\";\n+    amc->soc_name  = \"ast2500-a1\";\n+    amc->hw_strap1 = AST2500_EVB_HW_STRAP1;\n+    amc->fmc_model = \"w25q256\";\n+    amc->spi_model = \"mx25l25635e\";\n+    amc->num_cs    = 1;\n+    amc->i2c_init  = ast2500_evb_i2c_init;\n+    mc->default_ram_size       = 512 * MiB;\n+};\n+\n+static void aspeed_machine_romulus_class_init(ObjectClass *oc, void *data)\n+{\n+    MachineClass *mc = MACHINE_CLASS(oc);\n+    AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);\n+\n+    mc->desc       = \"OpenPOWER Romulus BMC (ARM1176)\";\n+    amc->soc_name  = \"ast2500-a1\";\n+    amc->hw_strap1 = ROMULUS_BMC_HW_STRAP1;\n+    amc->fmc_model = \"n25q256a\";\n+    amc->spi_model = \"mx66l1g45g\";\n+    amc->num_cs    = 2;\n+    amc->i2c_init  = romulus_bmc_i2c_init;\n+    mc->default_ram_size       = 512 * MiB;\n };\n \n-static const AspeedBoardConfig aspeed_boards[] = {\n+static void aspeed_machine_swift_class_init(ObjectClass *oc, void *data)\n+{\n+    MachineClass *mc = MACHINE_CLASS(oc);\n+    AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);\n+\n+    mc->desc       = \"OpenPOWER Swift BMC (ARM1176)\";\n+    amc->soc_name  = \"ast2500-a1\";\n+    amc->hw_strap1 = SWIFT_BMC_HW_STRAP1;\n+    amc->fmc_model = \"mx66l1g45g\";\n+    amc->spi_model = \"mx66l1g45g\";\n+    amc->num_cs    = 2;\n+    amc->i2c_init  = swift_bmc_i2c_init;\n+    mc->default_ram_size       = 512 * MiB;\n+};\n+\n+static void aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *data)\n+{\n+    MachineClass *mc = MACHINE_CLASS(oc);\n+    AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);\n+\n+    mc->desc       = \"OpenPOWER Witherspoon BMC (ARM1176)\";\n+    amc->soc_name  = \"ast2500-a1\";\n+    amc->hw_strap1 = WITHERSPOON_BMC_HW_STRAP1;\n+    amc->fmc_model = \"mx25l25635e\";\n+    amc->spi_model = \"mx66l1g45g\";\n+    amc->num_cs    = 2;\n+    amc->i2c_init  = witherspoon_bmc_i2c_init;\n+    mc->default_ram_size = 512 * MiB;\n+};\n+\n+static void aspeed_machine_ast2600_evb_class_init(ObjectClass *oc, void *data)\n+{\n+    MachineClass *mc = MACHINE_CLASS(oc);\n+    AspeedMachineClass *amc = ASPEED_MACHINE_CLASS(oc);\n+\n+    mc->desc       = \"Aspeed AST2600 EVB (Cortex A7)\";\n+    amc->soc_name  = \"ast2600-a0\";\n+    amc->hw_strap1 = AST2600_EVB_HW_STRAP1;\n+    amc->hw_strap2 = AST2600_EVB_HW_STRAP2;\n+    amc->fmc_model = \"w25q512jv\";\n+    amc->spi_model = \"mx66u51235f\";\n+    amc->num_cs    = 1;\n+    amc->i2c_init  = ast2600_evb_i2c_init;\n+    mc->default_ram_size = 1 * GiB;\n+};\n+\n+static const TypeInfo aspeed_machine_types[] = {\n     {\n-        .name      = MACHINE_TYPE_NAME(\"palmetto-bmc\"),\n-        .desc      = \"OpenPOWER Palmetto BMC (ARM926EJ-S)\",\n-        .soc_name  = \"ast2400-a1\",\n-        .hw_strap1 = PALMETTO_BMC_HW_STRAP1,\n-        .fmc_model = \"n25q256a\",\n-        .spi_model = \"mx25l25635e\",\n-        .num_cs    = 1,\n-        .i2c_init  = palmetto_bmc_i2c_init,\n-        .ram       = 256 * MiB,\n+        .name          = MACHINE_TYPE_NAME(\"palmetto-bmc\"),\n+        .parent        = TYPE_ASPEED_MACHINE,\n+        .class_init    = aspeed_machine_palmetto_class_init,\n     }, {\n-        .name      = MACHINE_TYPE_NAME(\"ast2500-evb\"),\n-        .desc      = \"Aspeed AST2500 EVB (ARM1176)\",\n-        .soc_name  = \"ast2500-a1\",\n-        .hw_strap1 = AST2500_EVB_HW_STRAP1,\n-        .fmc_model = \"w25q256\",\n-        .spi_model = \"mx25l25635e\",\n-        .num_cs    = 1,\n-        .i2c_init  = ast2500_evb_i2c_init,\n-        .ram       = 512 * MiB,\n+        .name          = MACHINE_TYPE_NAME(\"ast2500-evb\"),\n+        .parent        = TYPE_ASPEED_MACHINE,\n+        .class_init    = aspeed_machine_ast2500_evb_class_init,\n     }, {\n-        .name      = MACHINE_TYPE_NAME(\"romulus-bmc\"),\n-        .desc      = \"OpenPOWER Romulus BMC (ARM1176)\",\n-        .soc_name  = \"ast2500-a1\",\n-        .hw_strap1 = ROMULUS_BMC_HW_STRAP1,\n-        .fmc_model = \"n25q256a\",\n-        .spi_model = \"mx66l1g45g\",\n-        .num_cs    = 2,\n-        .i2c_init  = romulus_bmc_i2c_init,\n-        .ram       = 512 * MiB,\n+        .name          = MACHINE_TYPE_NAME(\"romulus-bmc\"),\n+        .parent        = TYPE_ASPEED_MACHINE,\n+        .class_init    = aspeed_machine_romulus_class_init,\n     }, {\n-        .name      = MACHINE_TYPE_NAME(\"swift-bmc\"),\n-        .desc      = \"OpenPOWER Swift BMC (ARM1176)\",\n-        .soc_name  = \"ast2500-a1\",\n-        .hw_strap1 = SWIFT_BMC_HW_STRAP1,\n-        .fmc_model = \"mx66l1g45g\",\n-        .spi_model = \"mx66l1g45g\",\n-        .num_cs    = 2,\n-        .i2c_init  = swift_bmc_i2c_init,\n-        .ram       = 512 * MiB,\n+        .name          = MACHINE_TYPE_NAME(\"swift-bmc\"),\n+        .parent        = TYPE_ASPEED_MACHINE,\n+        .class_init    = aspeed_machine_swift_class_init,\n     }, {\n-        .name      = MACHINE_TYPE_NAME(\"witherspoon-bmc\"),\n-        .desc      = \"OpenPOWER Witherspoon BMC (ARM1176)\",\n-        .soc_name  = \"ast2500-a1\",\n-        .hw_strap1 = WITHERSPOON_BMC_HW_STRAP1,\n-        .fmc_model = \"mx25l25635e\",\n-        .spi_model = \"mx66l1g45g\",\n-        .num_cs    = 2,\n-        .i2c_init  = witherspoon_bmc_i2c_init,\n-        .ram       = 512 * MiB,\n+        .name          = MACHINE_TYPE_NAME(\"witherspoon-bmc\"),\n+        .parent        = TYPE_ASPEED_MACHINE,\n+        .class_init    = aspeed_machine_witherspoon_class_init,\n     }, {\n-        .name      = MACHINE_TYPE_NAME(\"ast2600-evb\"),\n-        .desc      = \"Aspeed AST2600 EVB (Cortex A7)\",\n-        .soc_name  = \"ast2600-a0\",\n-        .hw_strap1 = AST2600_EVB_HW_STRAP1,\n-        .hw_strap2 = AST2600_EVB_HW_STRAP2,\n-        .fmc_model = \"w25q512jv\",\n-        .spi_model = \"mx66u51235f\",\n-        .num_cs    = 1,\n-        .i2c_init  = ast2600_evb_i2c_init,\n-        .ram       = 1 * GiB,\n-    },\n-};\n-\n-static void aspeed_machine_types(void)\n-{\n-    int i;\n-\n-    type_register_static(&aspeed_machine_type);\n-    for (i = 0; i < ARRAY_SIZE(aspeed_boards); ++i) {\n-        TypeInfo ti = {\n-            .name       = aspeed_boards[i].name,\n-            .parent     = TYPE_ASPEED_MACHINE,\n-            .class_init = aspeed_machine_class_init,\n-            .class_data = (void *)&aspeed_boards[i],\n-        };\n-        type_register(&ti);\n+        .name          = MACHINE_TYPE_NAME(\"ast2600-evb\"),\n+        .parent        = TYPE_ASPEED_MACHINE,\n+        .class_init    = aspeed_machine_ast2600_evb_class_init,\n+    }, {\n+        .name          = TYPE_ASPEED_MACHINE,\n+        .parent        = TYPE_MACHINE,\n+        .instance_size = sizeof(AspeedMachine),\n+        .class_size    = sizeof(AspeedMachineClass),\n+        .class_init    = aspeed_machine_class_init,\n+        .abstract      = true,\n     }\n-}\n+};\n \n-type_init(aspeed_machine_types)\n+DEFINE_TYPES(aspeed_machine_types)\n",
    "prefixes": [
        "13/17"
    ]
}