From nobody Thu Dec 18 19:31:58 2025 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1576495334; cv=none; d=zohomail.com; s=zohoarc; b=XgLHHDJmryeFRKP3GFJmtpAE/2e0s0+fgkGXEL7/RiKRY/58Rm47WUBmXhaAjAig/8gBxowGvyNAwgTu1oGNx2YdPKZdHisbMpy04LLKCgWp2mYkzfEyC+ABJk11QU0ymNTZhK5y1WBZw03DR8g8X3DLrkPqrgkYb67vCCUWm2k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1576495334; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=2o7CDQS8pVXcqWWDWE4VR4sQFaFf+rJlwan49ZOJRHk=; b=hMeIERWofrjoLMfUeYZsayAZt7jyIUTbL1Nh8K+5CXpqrsd8zk68WQB0ze9pZmfT9peK9ku89iGDbHVhyqyvbEwg1yXPAvFfJHuY6WL1MY61zahijhN6GEyDfT2X39w2dliNgvUIJjfQ447OeALCFGZRrptbV3akU6SYViX2328= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1576495334289188.52939534573875; Mon, 16 Dec 2019 03:22:14 -0800 (PST) Received: from localhost ([::1]:51544 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1igoS4-00066T-Lj for importer@patchew.org; Mon, 16 Dec 2019 06:22:12 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:50995) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1igoFj-0007lZ-C8 for qemu-devel@nongnu.org; Mon, 16 Dec 2019 06:09:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1igoFh-00087H-Dy for qemu-devel@nongnu.org; Mon, 16 Dec 2019 06:09:27 -0500 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]:39903) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1igoFh-00083A-65 for qemu-devel@nongnu.org; Mon, 16 Dec 2019 06:09:25 -0500 Received: by mail-wr1-x444.google.com with SMTP id y11so6714323wrt.6 for ; Mon, 16 Dec 2019 03:09:25 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id x10sm20976131wrp.58.2019.12.16.03.09.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Dec 2019 03:09:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=2o7CDQS8pVXcqWWDWE4VR4sQFaFf+rJlwan49ZOJRHk=; b=LMxvKzpX2tcpgTuqcluk1e3C8ltGQ51Xvrvcp1FsSUFpagJTfEC8gRZAUt/Xj1p1mD QpeUDUTlI22hMrRXePfAPl/yUBz2FQZbDYM9l3MDBp5Xa8iD6PjdQ7jcMlEGvAMcL4oj WXIZvZP+ZS6jGz+7RHb12d7y+VRr9Vjlu2P1vaO+hph9aCrbXp8/WkZnsncmYytqhIPs FeHYriX0x4AJ30BSjuhBgZxhP2qgRqqEnxOk46HCJM8x53Pu6yH2LPbqDMrsLdR9xDsx z9edofKKbW4DCdY+QZsDi0mhDsuxCUsxRZ58xaF6jgAbup7oV4CVGHkZIs4pCHzw3dgE Pa/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2o7CDQS8pVXcqWWDWE4VR4sQFaFf+rJlwan49ZOJRHk=; b=RYYF1WDrAK0PVUeptsEuCQxk8orTYirvUe79n41JVDeWcPVSeLyWB7UQZpJiCCgw3t /pDeAH4nphAgAJ2feRsiOYy0gKYzYIm8lPe50My/cLOoiSzLmIYfBWMjDLgXZHysB0Rq ZpXaSKxh91+eDe0YNoR5fhpUHIzgS//80ruC1ORmMHO1zftej4unAtPC8JQySIVUwmNX nZ4KcBtzdg68ymZN3HwiH8CptBk43urgjteOjLGMTtG8SWxkolrD2vG38ORzl90lyrfK kKdzQqntYIa96G5XL/yA3b5jEMVL1YN2KCChfz9X8r/EA4V6d6+djrRFb2rYflrSNLph lEAg== X-Gm-Message-State: APjAAAWBl401UIyZ3L8LN4Z7eSL8D4Ia9fOTP0CfOjHeTccFcj6cCX9U icnfRyljN1crwDgv2iS0mbLwKBPmo3WE5w== X-Google-Smtp-Source: APXvYqzEcTSECqS8xERDuZ4DYNQQEBPtYYjJA/1bydF6JoinbPqudo7oWi64fDUjmZooCJonVdqB1Q== X-Received: by 2002:a5d:480b:: with SMTP id l11mr30123514wrq.129.1576494563815; Mon, 16 Dec 2019 03:09:23 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 15/34] aspeed: Remove AspeedBoardConfig array and use AspeedMachineClass Date: Mon, 16 Dec 2019 11:08:45 +0000 Message-Id: <20191216110904.30815-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191216110904.30815-1-peter.maydell@linaro.org> References: <20191216110904.30815-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::444 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-ZohoMail-DKIM: pass (identity @linaro.org) From: C=C3=A9dric Le Goater AspeedBoardConfig is a redundant way to define class attributes and it complexifies the machine definition and initialization. Signed-off-by: C=C3=A9dric Le Goater Reviewed-by: Joel Stanley Signed-off-by: C=C3=A9dric Le Goater Message-id: 20191119141211.25716-14-clg@kaod.org Signed-off-by: Peter Maydell --- include/hw/arm/aspeed.h | 24 ++-- hw/arm/aspeed.c | 243 ++++++++++++++++++++++------------------ 2 files changed, 143 insertions(+), 124 deletions(-) diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h index f49bc7081e4..4423cd0cda7 100644 --- a/include/hw/arm/aspeed.h +++ b/include/hw/arm/aspeed.h @@ -13,19 +13,6 @@ =20 typedef struct AspeedBoardState AspeedBoardState; =20 -typedef struct AspeedBoardConfig { - const char *name; - const char *desc; - const char *soc_name; - uint32_t hw_strap1; - uint32_t hw_strap2; - const char *fmc_model; - const char *spi_model; - uint32_t num_cs; - void (*i2c_init)(AspeedBoardState *bmc); - uint32_t ram; -} AspeedBoardConfig; - #define TYPE_ASPEED_MACHINE MACHINE_TYPE_NAME("aspeed") #define ASPEED_MACHINE(obj) \ OBJECT_CHECK(AspeedMachine, (obj), TYPE_ASPEED_MACHINE) @@ -41,7 +28,16 @@ typedef struct AspeedMachine { =20 typedef struct AspeedMachineClass { MachineClass parent_obj; - const AspeedBoardConfig *board; + + const char *name; + const char *desc; + const char *soc_name; + uint32_t hw_strap1; + uint32_t hw_strap2; + const char *fmc_model; + const char *spi_model; + uint32_t num_cs; + void (*i2c_init)(AspeedBoardState *bmc); } AspeedMachineClass; =20 =20 diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 028191ff36f..e34e6787430 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -167,10 +167,10 @@ static void aspeed_board_init_flashes(AspeedSMCState = *s, const char *flashtype, } } =20 -static void aspeed_board_init(MachineState *machine, - const AspeedBoardConfig *cfg) +static void aspeed_machine_init(MachineState *machine) { AspeedBoardState *bmc; + AspeedMachineClass *amc =3D ASPEED_MACHINE_GET_CLASS(machine); AspeedSoCClass *sc; DriveInfo *drive0 =3D drive_get(IF_MTD, 0, 0); ram_addr_t max_ram_size; @@ -182,18 +182,18 @@ static void aspeed_board_init(MachineState *machine, UINT32_MAX); =20 object_initialize_child(OBJECT(machine), "soc", &bmc->soc, - (sizeof(bmc->soc)), cfg->soc_name, &error_abor= t, + (sizeof(bmc->soc)), amc->soc_name, &error_abor= t, NULL); =20 sc =3D ASPEED_SOC_GET_CLASS(&bmc->soc); =20 object_property_set_uint(OBJECT(&bmc->soc), ram_size, "ram-size", &error_abort); - object_property_set_int(OBJECT(&bmc->soc), cfg->hw_strap1, "hw-strap1", + object_property_set_int(OBJECT(&bmc->soc), amc->hw_strap1, "hw-strap1", &error_abort); - object_property_set_int(OBJECT(&bmc->soc), cfg->hw_strap2, "hw-strap2", + object_property_set_int(OBJECT(&bmc->soc), amc->hw_strap2, "hw-strap2", &error_abort); - object_property_set_int(OBJECT(&bmc->soc), cfg->num_cs, "num-cs", + object_property_set_int(OBJECT(&bmc->soc), amc->num_cs, "num-cs", &error_abort); object_property_set_int(OBJECT(&bmc->soc), machine->smp.cpus, "num-cpu= s", &error_abort); @@ -230,8 +230,8 @@ static void aspeed_board_init(MachineState *machine, "max_ram", max_ram_size - ram_size); memory_region_add_subregion(&bmc->ram_container, ram_size, &bmc->max_r= am); =20 - aspeed_board_init_flashes(&bmc->soc.fmc, cfg->fmc_model, &error_abort); - aspeed_board_init_flashes(&bmc->soc.spi[0], cfg->spi_model, &error_abo= rt); + aspeed_board_init_flashes(&bmc->soc.fmc, amc->fmc_model, &error_abort); + aspeed_board_init_flashes(&bmc->soc.spi[0], amc->spi_model, &error_abo= rt); =20 /* Install first FMC flash content as a boot rom. */ if (drive0) { @@ -255,8 +255,8 @@ static void aspeed_board_init(MachineState *machine, aspeed_board_binfo.loader_start =3D sc->memmap[ASPEED_SDRAM]; aspeed_board_binfo.nb_cpus =3D bmc->soc.num_cpus; =20 - if (cfg->i2c_init) { - cfg->i2c_init(bmc); + if (amc->i2c_init) { + amc->i2c_init(bmc); } =20 for (i =3D 0; i < ARRAY_SIZE(bmc->soc.sdhci.slots); i++) { @@ -383,118 +383,141 @@ static void witherspoon_bmc_i2c_init(AspeedBoardSta= te *bmc) 0x60); } =20 -static void aspeed_machine_init(MachineState *machine) -{ - AspeedMachineClass *amc =3D ASPEED_MACHINE_GET_CLASS(machine); - - aspeed_board_init(machine, amc->board); -} - static void aspeed_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); - AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); - const AspeedBoardConfig *board =3D data; =20 - mc->desc =3D board->desc; mc->init =3D aspeed_machine_init; mc->max_cpus =3D ASPEED_CPUS_NUM; mc->no_floppy =3D 1; mc->no_cdrom =3D 1; mc->no_parallel =3D 1; - if (board->ram) { - mc->default_ram_size =3D board->ram; - } - amc->board =3D board; } =20 -static const TypeInfo aspeed_machine_type =3D { - .name =3D TYPE_ASPEED_MACHINE, - .parent =3D TYPE_MACHINE, - .instance_size =3D sizeof(AspeedMachine), - .class_size =3D sizeof(AspeedMachineClass), - .abstract =3D true, -}; - -static const AspeedBoardConfig aspeed_boards[] =3D { - { - .name =3D MACHINE_TYPE_NAME("palmetto-bmc"), - .desc =3D "OpenPOWER Palmetto BMC (ARM926EJ-S)", - .soc_name =3D "ast2400-a1", - .hw_strap1 =3D PALMETTO_BMC_HW_STRAP1, - .fmc_model =3D "n25q256a", - .spi_model =3D "mx25l25635e", - .num_cs =3D 1, - .i2c_init =3D palmetto_bmc_i2c_init, - .ram =3D 256 * MiB, - }, { - .name =3D MACHINE_TYPE_NAME("ast2500-evb"), - .desc =3D "Aspeed AST2500 EVB (ARM1176)", - .soc_name =3D "ast2500-a1", - .hw_strap1 =3D AST2500_EVB_HW_STRAP1, - .fmc_model =3D "w25q256", - .spi_model =3D "mx25l25635e", - .num_cs =3D 1, - .i2c_init =3D ast2500_evb_i2c_init, - .ram =3D 512 * MiB, - }, { - .name =3D MACHINE_TYPE_NAME("romulus-bmc"), - .desc =3D "OpenPOWER Romulus BMC (ARM1176)", - .soc_name =3D "ast2500-a1", - .hw_strap1 =3D ROMULUS_BMC_HW_STRAP1, - .fmc_model =3D "n25q256a", - .spi_model =3D "mx66l1g45g", - .num_cs =3D 2, - .i2c_init =3D romulus_bmc_i2c_init, - .ram =3D 512 * MiB, - }, { - .name =3D MACHINE_TYPE_NAME("swift-bmc"), - .desc =3D "OpenPOWER Swift BMC (ARM1176)", - .soc_name =3D "ast2500-a1", - .hw_strap1 =3D SWIFT_BMC_HW_STRAP1, - .fmc_model =3D "mx66l1g45g", - .spi_model =3D "mx66l1g45g", - .num_cs =3D 2, - .i2c_init =3D swift_bmc_i2c_init, - .ram =3D 512 * MiB, - }, { - .name =3D MACHINE_TYPE_NAME("witherspoon-bmc"), - .desc =3D "OpenPOWER Witherspoon BMC (ARM1176)", - .soc_name =3D "ast2500-a1", - .hw_strap1 =3D WITHERSPOON_BMC_HW_STRAP1, - .fmc_model =3D "mx25l25635e", - .spi_model =3D "mx66l1g45g", - .num_cs =3D 2, - .i2c_init =3D witherspoon_bmc_i2c_init, - .ram =3D 512 * MiB, - }, { - .name =3D MACHINE_TYPE_NAME("ast2600-evb"), - .desc =3D "Aspeed AST2600 EVB (Cortex A7)", - .soc_name =3D "ast2600-a0", - .hw_strap1 =3D AST2600_EVB_HW_STRAP1, - .hw_strap2 =3D AST2600_EVB_HW_STRAP2, - .fmc_model =3D "w25q512jv", - .spi_model =3D "mx66u51235f", - .num_cs =3D 1, - .i2c_init =3D ast2600_evb_i2c_init, - .ram =3D 1 * GiB, - }, -}; - -static void aspeed_machine_types(void) +static void aspeed_machine_palmetto_class_init(ObjectClass *oc, void *data) { - int i; + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); =20 - type_register_static(&aspeed_machine_type); - for (i =3D 0; i < ARRAY_SIZE(aspeed_boards); ++i) { - TypeInfo ti =3D { - .name =3D aspeed_boards[i].name, - .parent =3D TYPE_ASPEED_MACHINE, - .class_init =3D aspeed_machine_class_init, - .class_data =3D (void *)&aspeed_boards[i], - }; - type_register(&ti); + mc->desc =3D "OpenPOWER Palmetto BMC (ARM926EJ-S)"; + amc->soc_name =3D "ast2400-a1"; + amc->hw_strap1 =3D PALMETTO_BMC_HW_STRAP1; + amc->fmc_model =3D "n25q256a"; + amc->spi_model =3D "mx25l25635e"; + amc->num_cs =3D 1; + amc->i2c_init =3D palmetto_bmc_i2c_init; + mc->default_ram_size =3D 256 * MiB; +}; + +static void aspeed_machine_ast2500_evb_class_init(ObjectClass *oc, void *d= ata) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "Aspeed AST2500 EVB (ARM1176)"; + amc->soc_name =3D "ast2500-a1"; + amc->hw_strap1 =3D AST2500_EVB_HW_STRAP1; + amc->fmc_model =3D "w25q256"; + amc->spi_model =3D "mx25l25635e"; + amc->num_cs =3D 1; + amc->i2c_init =3D ast2500_evb_i2c_init; + mc->default_ram_size =3D 512 * MiB; +}; + +static void aspeed_machine_romulus_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "OpenPOWER Romulus BMC (ARM1176)"; + amc->soc_name =3D "ast2500-a1"; + amc->hw_strap1 =3D ROMULUS_BMC_HW_STRAP1; + amc->fmc_model =3D "n25q256a"; + amc->spi_model =3D "mx66l1g45g"; + amc->num_cs =3D 2; + amc->i2c_init =3D romulus_bmc_i2c_init; + mc->default_ram_size =3D 512 * MiB; +}; + +static void aspeed_machine_swift_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "OpenPOWER Swift BMC (ARM1176)"; + amc->soc_name =3D "ast2500-a1"; + amc->hw_strap1 =3D SWIFT_BMC_HW_STRAP1; + amc->fmc_model =3D "mx66l1g45g"; + amc->spi_model =3D "mx66l1g45g"; + amc->num_cs =3D 2; + amc->i2c_init =3D swift_bmc_i2c_init; + mc->default_ram_size =3D 512 * MiB; +}; + +static void aspeed_machine_witherspoon_class_init(ObjectClass *oc, void *d= ata) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "OpenPOWER Witherspoon BMC (ARM1176)"; + amc->soc_name =3D "ast2500-a1"; + amc->hw_strap1 =3D WITHERSPOON_BMC_HW_STRAP1; + amc->fmc_model =3D "mx25l25635e"; + amc->spi_model =3D "mx66l1g45g"; + amc->num_cs =3D 2; + amc->i2c_init =3D witherspoon_bmc_i2c_init; + mc->default_ram_size =3D 512 * MiB; +}; + +static void aspeed_machine_ast2600_evb_class_init(ObjectClass *oc, void *d= ata) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + AspeedMachineClass *amc =3D ASPEED_MACHINE_CLASS(oc); + + mc->desc =3D "Aspeed AST2600 EVB (Cortex A7)"; + amc->soc_name =3D "ast2600-a0"; + amc->hw_strap1 =3D AST2600_EVB_HW_STRAP1; + amc->hw_strap2 =3D AST2600_EVB_HW_STRAP2; + amc->fmc_model =3D "w25q512jv"; + amc->spi_model =3D "mx66u51235f"; + amc->num_cs =3D 1; + amc->i2c_init =3D ast2600_evb_i2c_init; + mc->default_ram_size =3D 1 * GiB; +}; + +static const TypeInfo aspeed_machine_types[] =3D { + { + .name =3D MACHINE_TYPE_NAME("palmetto-bmc"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_palmetto_class_init, + }, { + .name =3D MACHINE_TYPE_NAME("ast2500-evb"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_ast2500_evb_class_init, + }, { + .name =3D MACHINE_TYPE_NAME("romulus-bmc"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_romulus_class_init, + }, { + .name =3D MACHINE_TYPE_NAME("swift-bmc"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_swift_class_init, + }, { + .name =3D MACHINE_TYPE_NAME("witherspoon-bmc"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_witherspoon_class_init, + }, { + .name =3D MACHINE_TYPE_NAME("ast2600-evb"), + .parent =3D TYPE_ASPEED_MACHINE, + .class_init =3D aspeed_machine_ast2600_evb_class_init, + }, { + .name =3D TYPE_ASPEED_MACHINE, + .parent =3D TYPE_MACHINE, + .instance_size =3D sizeof(AspeedMachine), + .class_size =3D sizeof(AspeedMachineClass), + .class_init =3D aspeed_machine_class_init, + .abstract =3D true, } -} +}; =20 -type_init(aspeed_machine_types) +DEFINE_TYPES(aspeed_machine_types) --=20 2.20.1