From nobody Sat Nov 15 11:34:20 2025 Delivered-To: importer@patchew.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; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass(p=quarantine dis=none) header.from=amd.com ARC-Seal: i=2; a=rsa-sha256; t=1752659854; cv=pass; d=zohomail.com; s=zohoarc; b=Y4gFFIbRISJuOtBvQJx8JlIDpUILOWISp8kJ8KceUM4dxQTTj4tQEbdAeJLoAkFF4ZRpIUzUcM97hIpoKOSLFAT5PdrG9VE+nlZFB2aV0z9q6N+kqdfJa7PBBOI5z8Dt2fnyGa8BqHC+NWnecyf2yoXkh4VqEuS8lzviqhqJzO8= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1752659854; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LIF6jPbZFpEsFaFmrvAklnPkvP006XHCtXWPifnKu4c=; b=NiD/GbLedOXIRGnVyqFF8ZZQMcPOU/g8qKLRR0v8uBPWmpi7phLXuDWi9qjsClWX0C+unVg9crx62mdq7WKlE/8XF7uirk9mPXowd+ZJqIr0Jcb6JvxQx7cfrXjGP0v/JwjG6IdE7V+GUa96Q7jwawq9VyR1vxx55nQPliuOj7c= ARC-Authentication-Results: i=2; 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; arc=pass (i=1 dmarc=pass fromdomain=amd.com); dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175265985416410.169178691648995; Wed, 16 Jul 2025 02:57:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ubysz-00058H-4b; Wed, 16 Jul 2025 05:57:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ubyrl-0001Zh-CM; Wed, 16 Jul 2025 05:56:03 -0400 Received: from mail-co1nam11on20618.outbound.protection.outlook.com ([2a01:111:f403:2416::618] helo=NAM11-CO1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ubyrd-0006cD-Si; Wed, 16 Jul 2025 05:55:54 -0400 Received: from SJ0PR05CA0075.namprd05.prod.outlook.com (2603:10b6:a03:332::20) by DS0PR12MB8041.namprd12.prod.outlook.com (2603:10b6:8:147::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8880.27; Wed, 16 Jul 2025 09:55:38 +0000 Received: from SJ5PEPF00000205.namprd05.prod.outlook.com (2603:10b6:a03:332:cafe::58) by SJ0PR05CA0075.outlook.office365.com (2603:10b6:a03:332::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8943.16 via Frontend Transport; Wed, 16 Jul 2025 09:55:36 +0000 Received: from SATLEXMB03.amd.com (165.204.84.17) by SJ5PEPF00000205.mail.protection.outlook.com (10.167.244.38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8922.22 via Frontend Transport; Wed, 16 Jul 2025 09:55:36 +0000 Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Jul 2025 04:55:28 -0500 Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB06.amd.com (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 16 Jul 2025 04:55:27 -0500 Received: from XFR-LUMICHEL-L2.xilinx.com (10.180.168.240) by SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Wed, 16 Jul 2025 04:55:26 -0500 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=swVAk1BUO59cuXBAp3KFgHWZEEN6YvGEt3LTRtRBjwauIJunC7LXg3jhs/r0RcRw7qgUfelhLAeHloNMxWvCM55dke4mFLxGvttjSZnFhUDlVL2kRXw/32AVWXZ5gi0HMa2ADA6exuB/WixFuX1X9Ck4OgJbOjV9dGk3zpr2QeSloF4nQoKYn2S7zD4pJR3921cVTSTFHtwyBn2nKZxOI0IlrhukIlC0cPdQxi4skcWltPDakqDkHdrmpB/cXsoZ6U+TFS9Lyumnn5RQMJVB1DjZ1VPoMZ+JZK7QKWe0ti4RE6RyY8z4/gXKXPiyJEBCngyw6o9a50LrZvhxRS2YCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LIF6jPbZFpEsFaFmrvAklnPkvP006XHCtXWPifnKu4c=; b=Vo/X9rv66QoGrQ0vHoJfLA37MOGvvPqGK7JgFraL1lzbM946IqtVPl6/fYJByUSFw2K0qwscoL7n6sYScyb20xWsuXDC5rMUuk7DB31oLbP3FIPKTdDviBcTAV1JcuC/BsTEiaZ1oUab0MeuNkYXeGjTKUB2KrshjxHr76RKk40r8TxSQ5RRXA+dworvTkryG/Mb8Z9DQe/fVwFySuKAR3uUucHQWgGNuUZ7dOMlUPn0nGlkguK46rDRcff+SFgEN5TVqVTmbqkdxawum6D/wstClEkLBspjyiDBhpnMgGfzoG8c2dMMT4vHbiWRRs6gEK++6RMpP7W1zzyo0gyiDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LIF6jPbZFpEsFaFmrvAklnPkvP006XHCtXWPifnKu4c=; b=vQb0FZ+fKE3INiQo6URt53U2pvNt6F8JReyctjU7jta7wxyEdUKxnCVn0ApDgqya7Rr0iKAt4t+TuQvufM+Q+QqNZR3h6zlw5K9u1TPK1Fo0p+u1EsEZkcQAxwERUYr2ZX4JsFhJg6MrL4VJkj+7wFXDnUM9wDDBpOouj1Qp778= X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; 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 (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C From: Luc Michel To: , CC: Luc Michel , Peter Maydell , Francisco Iglesias , "Edgar E . Iglesias" , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Alistair Francis , "Frederic Konrad" , Sai Pavan Boddu Subject: [PATCH 15/48] hw/arm/xlnx-versal: bbram: refactor creation Date: Wed, 16 Jul 2025 11:53:57 +0200 Message-ID: <20250716095432.81923-16-luc.michel@amd.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250716095432.81923-1-luc.michel@amd.com> References: <20250716095432.81923-1-luc.michel@amd.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ5PEPF00000205:EE_|DS0PR12MB8041:EE_ X-MS-Office365-Filtering-Correlation-Id: 93be18cd-2cb6-487b-0a30-08ddc44ee99c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?j3NrIVMT5Cww3aIi0SLfV3/358FatWkjZRMzVOuyps+Ze6XT+2UudaCcCNE7?= =?us-ascii?Q?Bo/7PfLtgasFL3Sg6UUT+7AcAAP0AiyyxVbBdKfABgxRjc2pz3xAgkyV04kR?= =?us-ascii?Q?aiQ2WxrpabRtu2JgyfWHuVk0r7D3+q8ts8Qgrl3GvuLwqU0c5dkxLCCD/i4n?= =?us-ascii?Q?9A7HpKtdMxYd0KbMoRkVR+P0IT+FbhcojYeRp+69JEl+DEhime8SjvKrB2Ta?= =?us-ascii?Q?pLVwTZusrmgeoCoaL8Jqzo1qf/EXzeQjy1M3dPf1l56CLm0hj/8/LvHT1vt2?= =?us-ascii?Q?09324i9adPagJXAtcLIXfYu7lGTjOAxtEMP9qlzIpCm3/QY8S7BExL1KiE3e?= =?us-ascii?Q?SfOX0rPFld3Hp5ChWgDjPD98syCrY1RLYUqirXJBpNiaMRKdqUaW9YJtJ4OC?= =?us-ascii?Q?VkZCb99UsEbCdYT593QpG9NQpMXE5dWwIPOlZVGBQJT+55Ccc9stvsfOcH4D?= =?us-ascii?Q?F0vo/V0PV+dm9LpVAn38HtBWJuMIFS0u6w3PNW2YmhyOmGRYLBMJvPN93oZ9?= =?us-ascii?Q?LX5rVsDkoUC6IuNFlo0MVzWajg9ZrzrEoJgyty9KLny39Xk66FMKM/PtGHTT?= =?us-ascii?Q?MJXVaNJ3DVOWKcPDvebePxhQAJpO3KwrGmWtLsOvbVkJ6gdgTzOyE0o6aqtG?= =?us-ascii?Q?yGxtLm9/Gx65n9S++WHvlOLUphvoV1WjPmIXcl2Rj21qQyM6kPx216V5NlQC?= =?us-ascii?Q?mMzF3PWIIsYcR+DpMaXUwLqrZiT+aH/Hm6XVfSbVzhJmMuepoJZCpNLIhKe2?= =?us-ascii?Q?qgG3JsUIZWp1lkqltG1YRAMUZvubytcWXq7I56q6247LE8Ca0EDqs7c/VSYY?= =?us-ascii?Q?iSrGA28U9VcBaxgOEYn52mHTC1TPrzx6X9sjZ0DaRt/UCO3KkPGSj3y66c2S?= =?us-ascii?Q?8FReu20ar5rm2ari3ZI78QIN1jVhw8gGYoO2enJ/Jk1KK07HpKiYeQWWs28O?= =?us-ascii?Q?fPB7HBPJDCrlbhP+KpzHLybFOXDsv4v6Asm++zvpq6pdCjyk15xoccCYder8?= =?us-ascii?Q?8ocBLjs3GferBjyO9Hw3HjpVMqrwxcJBp+MLNHL2QDlfAE3xCMQwzxALb4AV?= =?us-ascii?Q?F9q2hxQXbItZINIVA6nmR3Fho51E7IsJUX9weY+VY2Kh0u636BcwQPO3DaFZ?= =?us-ascii?Q?JvtqbjwSJQPnlMmvR0VK/95WR7GTk2CM2shAVqWnun9YnvEtoX+V6X1tDQcq?= =?us-ascii?Q?iHy8c8IipthAWbM8zjkQPzynGkzDYBq4wsK5GLcDltynu616P2zlrCb2tjve?= =?us-ascii?Q?cx3X5sv6ttXKHGN5iqOW4iGAkMKZ/Eu3Q4sD0bMjxf1xqIEFKFCSbCqYd8tF?= =?us-ascii?Q?bElhhUNg1WSQYjt74NIe8yAAZ3QDAw0CnP1rGJ3eJ8YesGRqjphSRxfCEXK0?= =?us-ascii?Q?oERBIcTQqyJJGK/gIH4qH8e8Jb+SF0vS5+XaWrzdKe6KZIDWwW8CYzjtO4v6?= =?us-ascii?Q?le++vzsWqNu+7vHGM5xwikaH4wRKblZThbArH8mDk+08aipqFiZpUvY7Mm5o?= =?us-ascii?Q?FT6W4ihGnsPDUGTv0B/gkLvRvvJnPmLlI3/W?= X-Forefront-Antispam-Report: CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:SATLEXMB03.amd.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(82310400026)(36860700013)(376014); DIR:OUT; SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2025 09:55:36.0950 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 93be18cd-2cb6-487b-0a30-08ddc44ee99c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17]; Helo=[SATLEXMB03.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SJ5PEPF00000205.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8041 Received-SPF: permerror client-ip=2a01:111:f403:2416::618; envelope-from=Luc.Michel@amd.com; helo=NAM11-CO1-obe.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-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.29 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-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @amd.com) X-ZM-MESSAGEID: 1752659855971116600 Content-Type: text/plain; charset="utf-8" Refactor the BBRAM device creation using the VersalMap structure. Note that the corresponding FDT node is removed. It does not correspond to any real node in standard Versal DTBs. No matching drivers exist for it. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias --- include/hw/arm/xlnx-versal.h | 3 +-- hw/arm/xlnx-versal-virt.c | 27 +++--------------------- hw/arm/xlnx-versal.c | 41 +++++++++++++++++++++++++----------- 3 files changed, 33 insertions(+), 38 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 78442e6c2c5..9adce02f8a9 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -17,11 +17,10 @@ #include "hw/cpu/cluster.h" #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" -#include "hw/nvram/xlnx-bbram.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/misc/xlnx-versal-trng.h" #include "net/can_emu.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" @@ -83,11 +82,10 @@ struct Versal { =20 /* The Platform Management Controller subsystem. */ struct { XlnxZynqMPRTC rtc; XlnxVersalTRng trng; - XlnxBBRam bbram; XlnxVersalCFUAPB cfu_apb; XlnxVersalCFUFDRO cfu_fdro; XlnxVersalCFUSFR cfu_sfr; XlnxVersalCFrameReg cframe[XLNX_VERSAL_NR_CFRAME]; XlnxVersalCFrameBcastReg cframe_bcast; @@ -119,10 +117,11 @@ static inline void versal_set_fdt(Versal *s, void *fd= t) s->cfg.fdt =3D fdt; } =20 void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); +void versal_bbram_attach_drive(Versal *s, BlockBackend *blk); void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, BlockBackend *blk); =20 int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 43f3c3d0be9..2d7e8a5955a 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -170,30 +170,10 @@ static void fdt_add_rtc_node(VersalVirt *s) 2, MM_PMC_RTC, 2, MM_PMC_RTC_SIZE); qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); g_free(name); } =20 -static void fdt_add_bbram_node(VersalVirt *s) -{ - const char compat[] =3D TYPE_XLNX_BBRAM; - const char interrupt_names[] =3D "bbram-error"; - char *name =3D g_strdup_printf("/bbram@%x", MM_PMC_BBRAM_CTRL); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_PMC_APB_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop(s->fdt, name, "interrupt-names", - interrupt_names, sizeof(interrupt_names)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_PMC_BBRAM_CTRL, - 2, MM_PMC_BBRAM_CTRL_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); - g_free(name); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; char **node_path; int n =3D 0; @@ -344,19 +324,19 @@ static void create_virtio_regions(VersalVirt *s) qemu_fdt_setprop_string(s->fdt, name, "compatible", "virtio,mmio"); g_free(name); } } =20 -static void bbram_attach_drive(XlnxBBRam *dev) +static void bbram_attach_drive(VersalVirt *s) { DriveInfo *dinfo; BlockBackend *blk; =20 dinfo =3D drive_get_by_index(IF_PFLASH, 0); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; if (blk) { - qdev_prop_set_drive(DEVICE(dev), "drive", blk); + versal_bbram_attach_drive(&s->soc, blk); } } =20 static void efuse_attach_drive(VersalVirt *s) { @@ -442,11 +422,10 @@ static void versal_virt_init(MachineState *machine) fdt_create(s); versal_set_fdt(&s->soc, s->fdt); fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); fdt_add_rtc_node(s); - fdt_add_bbram_node(s); fdt_add_cpu_nodes(s, psci_conduit); fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); =20 sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); @@ -456,11 +435,11 @@ static void versal_virt_init(MachineState *machine) * modules unaware of multiple address-spaces. */ memory_region_add_subregion_overlap(get_system_memory(), 0, &s->soc.fpd.apu.mr, 0); =20 /* Attach bbram backend, if given */ - bbram_attach_drive(&s->soc.pmc.bbram); + bbram_attach_drive(s); =20 /* Attach efuse backend, if given */ efuse_attach_drive(s); =20 /* Plug SD cards */ diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index d34a36e18aa..615eea54372 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -34,10 +34,11 @@ #include "hw/misc/xlnx-versal-xramc.h" #include "hw/usb/xlnx-usb-subsystem.h" #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" +#include "hw/nvram/xlnx-bbram.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") #define GEM_REVISION 0x40070106 =20 @@ -117,10 +118,11 @@ typedef struct VersalMap { uint64_t dma_dst; int irq; } ospi; =20 VersalSimplePeriphMap pmc_iou_slcr; + VersalSimplePeriphMap bbram; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, @@ -159,10 +161,11 @@ static const VersalMap VERSAL_MAP =3D { .dma_src =3D 0xf1011000, .dma_dst =3D 0xf1011800, .irq =3D 124, }, =20 .pmc_iou_slcr =3D { 0xf1060000, OR_IRQ(121, 0) }, + .bbram =3D { 0xf11f0000, OR_IRQ(121, 1) }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, }; @@ -811,26 +814,25 @@ static void versal_create_xrams(Versal *s, const stru= ct VersalXramMap *map) =20 sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(or, i)); } } =20 -static void versal_create_bbram(Versal *s, qemu_irq *pic) +static void versal_create_bbram(Versal *s, + const VersalSimplePeriphMap *map) { + DeviceState *dev; SysBusDevice *sbd; =20 - object_initialize_child_with_props(OBJECT(s), "bbram", &s->pmc.bbram, - sizeof(s->pmc.bbram), TYPE_XLNX_BBR= AM, - &error_fatal, - "crc-zpads", "0", - NULL); - sbd =3D SYS_BUS_DEVICE(&s->pmc.bbram); + dev =3D qdev_new(TYPE_XLNX_BBRAM); + sbd =3D SYS_BUS_DEVICE(dev); =20 - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_PMC_BBRAM_CTRL, + object_property_add_child(OBJECT(s), "bbram", OBJECT(dev)); + qdev_prop_set_uint32(dev, "crc-zpads", 0); + sysbus_realize_and_unref(sbd, &error_abort); + memory_region_add_subregion(&s->mr_ps, map->addr, sysbus_mmio_get_region(sbd, 0)); - sysbus_connect_irq(sbd, 0, - qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 1)= ); + versal_sysbus_connect_irq(s, sbd, 0, map->irq); } =20 static void versal_create_efuse(Versal *s, const struct VersalEfuseMap *map) { @@ -1323,14 +1325,16 @@ static void versal_realize(DeviceState *dev, Error = **errp) slcr =3D versal_create_pmc_iou_slcr(s, &map->pmc_iou_slcr); =20 qdev_connect_gpio_out_named(slcr, "ospi-mux-sel", 0, qdev_get_gpio_in_named(ospi, "ospi-mux-sel", 0)); + + versal_create_bbram(s, &map->bbram); + versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); - versal_create_bbram(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); versal_unimp(s); =20 @@ -1372,10 +1376,23 @@ void versal_efuse_attach_drive(Versal *s, BlockBack= end *blk) } =20 qdev_prop_set_drive(efuse, "drive", blk); } =20 +void versal_bbram_attach_drive(Versal *s, BlockBackend *blk) +{ + DeviceState *bbram; + + bbram =3D DEVICE(versal_get_child(s, "bbram")); + + if (bbram =3D=3D NULL) { + return; + } + + qdev_prop_set_drive(bbram, "drive", blk); +} + void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, BlockBackend *blk) { BusState *spi_bus; DeviceState *flash, *ospi; --=20 2.50.0