From nobody Sat Jul 25 21:59:21 2026 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=axiado.com) ARC-Seal: i=2; a=rsa-sha256; t=1783927917; cv=pass; d=zohomail.com; s=zohoarc; b=aBIpFDe2hFWXIvgUFVI3jR4NUbKH6KRZhWxXcrC+ljzniXIAGc3DDPfTgkAeqLuXY5i703HXR+9L1NWBBimrRVbOVlFdguaXhzQopWXAM0Uw/v/YFGCY+a7mblt30lDmwDlZnBIAM6CDsqTK1VBNH9dWKmOlokXG5KpSFQtcIek= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783927917; 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=7lqqXliml4koPsafkexTFLivoT9wbHFufNCEo35tZag=; b=VIRSlPqtos9dnaBB6hNXF8jnuhEIptH9OAQCJhxDxQUEaE7GYgYRD2jV418mSjRLA4PNKe4CPyOI8NezuZjcH6SlX2UvafVBzOC5sIr76Z/a6czKU+u6IYEWvUeDA4dXkvaVo84aOXVCOJvX/zIIaNjKAtEhSmUU5IRvMqQZ/UA= 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=axiado.com) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783927917710869.116315281987; Mon, 13 Jul 2026 00:31:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjB8D-0003vJ-Fr; Mon, 13 Jul 2026 03:31:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjB88-0003uL-VA for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:31:10 -0400 Received: from mail-eastus2azlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c110::3] helo=BN8PR05CU002.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 1wjB86-0001XN-Ju for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:31:08 -0400 Received: from CH5PR05CA0017.namprd05.prod.outlook.com (2603:10b6:610:1f0::7) by PH0PR18MB4752.namprd18.prod.outlook.com (2603:10b6:510:cf::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.202.19; Mon, 13 Jul 2026 07:31:00 +0000 Received: from CH1PEPF0000A34A.namprd04.prod.outlook.com (2603:10b6:610:1f0:cafe::70) by CH5PR05CA0017.outlook.office365.com (2603:10b6:610:1f0::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:31:00 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by CH1PEPF0000A34A.mail.protection.outlook.com (10.167.244.5) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:30:59 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id E10F14186B58; Mon, 13 Jul 2026 00:30:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=OV8mSGrAXITLI7X0/x82mh932/7Y9RwHTActrCMkSQP0NS0Ln98un7VFsq5QWjIoqYDAzC9tBnBpLXHs3IzYLOMvpQ1R5QctwoHR2oZ737jFi0WUJi7gKooaxV0EAmP/Vfpvza3DiAHGy1uXppTO87riLDNSnvEmJ4UFYVHZ1W11h6sYTT4uE2YBe7xzBKDe8cqbyErb8L4WXPq7YjCxvVIMuhGoJ9VxrD4JHyxWIIuGHa0Wmh53p+IKUvvPx51y8PhHnreq180Tnwjqrfh2mmF0TLOyRGjdOLi6t3rIuCMshCFjUhmbKtoL80ZCNmoMVV+L5DTlLZ0gq1pqQ4CB5A== 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=7lqqXliml4koPsafkexTFLivoT9wbHFufNCEo35tZag=; b=YYE3C8HZDgRo70Kf8eP/Rd7vJVCNPdmZuI0Pmp5y4hSxcDz1IuellGjiT6V2F2jsqIf9e8QH4xvc47F9rWAmQle7lhi6WrR6eGWw55FBG0nqi8odx/fdXj2pKkmhTw1Nq9Zkki8PWuEv7awbLG2fTlnAakA2eu1/aYs8v2GK+eLUxNXr0HnQsJ+yvG/TsKVyte89SoyxQ1hc9kNTTlROC9Q1Qvzb1IxZmWhZ0nkCw10hZnC7k4Gitl4g7iAfer1bgVxRsdqIO54hkSq7qr/YHErNxbdZ3KRny8LyWX/ECWdPVFzyS5P70fdAUXFq3HIxp+VQgIWV8/Ew48wz9+Jn9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 64.62.143.114) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7lqqXliml4koPsafkexTFLivoT9wbHFufNCEo35tZag=; b=kQAfFGyYu/gUMTEtLaU0MES0JsstP7GLV4CUM4c51McZvlPRz6fbNrqQD19/Sit7F+wIAO/a1WCJGYJQp0ggnB777u+Wvy4K/sMmvoGntlrz/AQS8gCEFmDaMHtUPRSTCtZRH06cqHYeZBOfxklzg1s+17DhRrVK66HnY1OokDw/us6OMQlzjDlF+69JbqDutymnfppPyHVUA0ko5v6wDJ+Y1fUYUdi03bcvWyUSmu209KfEXZr2St2V4f4X8VSOWQpYLXxKrMy/RdCdPp5UZ28GuQ3BBYQSJcO5QDDmk89h5xuXvuWRK+xhZC3k3vFkMzEtm4AmITPWDwD59fDWKA== X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 64.62.143.114) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.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=lists1p.gnu.org; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 64.62.143.114 as permitted sender) receiver=protection.outlook.com; client-ip=64.62.143.114; helo=smtp.corp.axiado.com; From: Kuan-Jui Chiu To: qemu-devel@nongnu.org, peter.maydell@linaro.org, philmd@oss.qualcomm.com Cc: Kuan-Jui Chiu Subject: [PATCH v7 1/8] hw/arm: Add Axiado SoC AX3000 Date: Mon, 13 Jul 2026 00:30:26 -0700 Message-Id: <20260713073033.3883619-2-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260713073033.3883619-1-kchiu@axiado.com> References: <20260713073033.3883619-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000A34A:EE_|PH0PR18MB4752:EE_ X-MS-Office365-Filtering-Correlation-Id: 1d60dea5-4d37-43e4-a45a-08dee0b0af99 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|82310400026|36860700016|23010399003|18002099003|22082099003|6133799003|56012099006|5023799004|3023799007; X-Microsoft-Antispam-Message-Info: CJsyt3qFgGwgHbHkw74JX22V766kCl78+iNcVdpgCxbB6BN1PPMuIJeiRC7mzAEhSHPrdOxG5QPMwW3J0pNxTP0ngvquerWW9e9XSIPa1oreXyixPlc4lGT53ECBclOZ/fo68h68+l06bT7NW4kRHF/+ycnXkiQFIo1KLU9h5/HyI3P22r9rm3JSpnm9KgdBdW1qWjHe2/zjX+md3+N5UephUFxes/sniYn5O10FvfYH37uYEIUsIZ7i1PSh8TRtP7duv83UKu0kqnyNWOXj8AAsREtkKY7iO+b9jcElTVtXLpdJRHlxawcYhl1Tmlq70E1HGo/U4bsA5hAC1om8f43ia9v3wgUDzX2lLANxaaLBD4hnzfa3LB2glVLhXTFzsG0dt83Op4J8PErBkVSGDHfPJLfKM2Mzw5D61kuINTmvL9e4g9pRqa6usAE7b1miuWbZ+ED1PZzrCD3bM+jctwQed+L69AfqY4mutLBsGVsFg5uCvHxL2FgVxESgvaIGtgz5a89Jnd5N+TzWfCFkNAHKsUpk1QJLorQsykno0GTwFLNQl3HnA7onOUMIFeoVsUO8zW3Y9Nqq8OXXGlaeXysI+ZLp8qYU7jKzCSgA9/gtQJjMaipishZQS4aJaLcD7V7PIAW+E8foG/EgK26UbHesw9XURxn9pddBCnvQte5efy9JmIY7+eZa+l0p8t3Bt73BM6T7OhJt1wcPwxDuZg== X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(1800799024)(82310400026)(36860700016)(23010399003)(18002099003)(22082099003)(6133799003)(56012099006)(5023799004)(3023799007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 0XHsu+tR13J1KGzKwCllNJalRbhmkSWMDe3o7zKqvILnWims64zRWJnkkpkbFtFwdGQtGbphd0mNnH5lT09Pn38r6+kL9GKA7zEZNZBNswS/2ctWPiL23vGYnU3gI2l0qS3iJzLwgK8Sg54sWDjdOSXWylW4fLNldLdN8fd3Tmbg+Df23TQ686tMn2+nqcaVNsTnqZkoXXNW7aFnf3sJaiWdO2Xwr6YnfeaDFZpAAkH6Pi3BZ7dBpCM9OUrxXvCkWNNcrQMTSdtYXMqetrsky1k2BhCeYpmGWtlCENbKqJroYohWmMJD4jEHIWEvN8dcwn+9jdx5dJIDC+IUyS/ty7Q/h+s8ktQAfPLJxbDaegUQsQ3Wpc9X9HfeRV1GLpFVKbWCwljS0Qa8Sf3mwOm9peumkYW8Z5lgfbUoXh5NmpxhB0urFBx2So2zyjD6N4EF X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2026 07:30:59.6759 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1d60dea5-4d37-43e4-a45a-08dee0b0af99 X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7; Ip=[64.62.143.114]; Helo=[smtp.corp.axiado.com] X-MS-Exchange-CrossTenant-AuthSource: CH1PEPF0000A34A.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB4752 Received-SPF: pass client-ip=2a01:111:f403:c110::3; envelope-from=kchiu@axiado.com; helo=BN8PR05CU002.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, 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: qemu development 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 @axiado.com) X-ZM-MESSAGEID: 1783927920303158500 Content-Type: text/plain; charset="utf-8" This patch adds new model for Axiado SoC AX3000 which supports 4 Cortex-A53 ARM64 CPUs Arm Generic Interrupt Controller v3 4 Cadence UARTs Signed-off-by: Kuan-Jui Chiu --- MAINTAINERS | 7 ++ hw/arm/Kconfig | 7 ++ hw/arm/ax3000-soc.c | 182 ++++++++++++++++++++++++++++++++++++ hw/arm/meson.build | 3 + include/hw/arm/ax3000-soc.h | 68 ++++++++++++++ 5 files changed, 267 insertions(+) create mode 100644 hw/arm/ax3000-soc.c create mode 100644 include/hw/arm/ax3000-soc.h diff --git a/MAINTAINERS b/MAINTAINERS index 97dcc78ded..809d7b7a53 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1298,6 +1298,13 @@ M: Manos Pitsidianakis S: Maintained F: rust/hw/char/pl011/ =20 +Axiado SoCs and EVKs +M: Kuan-Jui Chiu +L: qemu-arm@nongnu.org +S: Maintained +F: hw/arm/ax3000*.c +F: include/hw/arm/ax3000*.h + AVR Machines ------------- =20 diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 5f5c4899ad..feba0de1bb 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -723,3 +723,10 @@ config ARMSSE select UNIMP select SSE_COUNTER select SSE_TIMER + +config AXIADO_SOC + bool + depends on ARM + select ARM_GIC + select CADENCE # UART + select UNIMP diff --git a/hw/arm/ax3000-soc.c b/hw/arm/ax3000-soc.c new file mode 100644 index 0000000000..b528f8af53 --- /dev/null +++ b/hw/arm/ax3000-soc.c @@ -0,0 +1,182 @@ +/* + * Axiado SoC AX3000 + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "system/address-spaces.h" +#include "hw/arm/bsa.h" +#include "hw/arm/ax3000-soc.h" +#include "hw/misc/unimp.h" +#include "system/system.h" +#include "qobject/qlist.h" +#include "qom/object.h" +#include "hw/core/boards.h" + +static void ax3000_init(Object *obj) +{ + Ax3000SoCState *s =3D AX3000_SOC(obj); + Ax3000SoCClass *sc =3D AX3000_SOC_GET_CLASS(s); + + for (int i =3D 0; i < sc->num_cpus; i++) { + g_autofree char *name =3D g_strdup_printf("cpu%d", i); + object_initialize_child(obj, name, &s->cpu[i], + ARM_CPU_TYPE_NAME("cortex-a53")); + } + + object_initialize_child(obj, "gic", &s->gic, gicv3_class_name()); + + for (int i =3D 0; i < AX3000_NUM_UARTS; i++) { + g_autofree char *name =3D g_strdup_printf("uart%d", i); + object_initialize_child(obj, name, &s->uart[i], TYPE_CADENCE_UART); + } +} + +static void ax3000_realize(DeviceState *dev, Error **errp) +{ + Ax3000SoCState *s =3D AX3000_SOC(dev); + Ax3000SoCClass *sc =3D AX3000_SOC_GET_CLASS(s); + SysBusDevice *gic_sbd =3D SYS_BUS_DEVICE(&s->gic); + DeviceState *gic_dev =3D DEVICE(&s->gic); + QList *redist_region_count; + SysBusDevice *sdhci0_sbd; + DeviceState *card; + + /* CPUs */ + for (int i =3D 0; i < sc->num_cpus; i++) { + object_property_set_int(OBJECT(&s->cpu[i]), "cntfrq", 8000000, + &error_abort); + + if (object_property_find(OBJECT(&s->cpu[i]), "has_el3")) { + object_property_set_bool(OBJECT(&s->cpu[i]), "has_el3", + false, &error_abort); + } + + if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) { + return; + } + } + + /* GIC */ + qdev_prop_set_uint32(gic_dev, "num-cpu", sc->num_cpus); + qdev_prop_set_uint32(gic_dev, "num-irq", + AX3000_NUM_IRQS + GIC_INTERNAL); + + redist_region_count =3D qlist_new(); + qlist_append_int(redist_region_count, sc->num_cpus); + qdev_prop_set_array(gic_dev, "redist-region-count", redist_region_coun= t); + + if (!sysbus_realize(gic_sbd, errp)) { + return; + } + + sysbus_mmio_map(gic_sbd, 0, AX3000_GIC_DIST_BASE); + sysbus_mmio_map(gic_sbd, 1, AX3000_GIC_REDIST_BASE); + + /* + * Mapping from the output timer irq lines from the CPU to the + * GIC PPI inputs. + */ + const int timer_irqs[] =3D { + [GTIMER_PHYS] =3D ARCH_TIMER_NS_EL1_IRQ, + [GTIMER_VIRT] =3D ARCH_TIMER_VIRT_IRQ, + [GTIMER_HYP] =3D ARCH_TIMER_NS_EL2_IRQ, + [GTIMER_SEC] =3D ARCH_TIMER_S_EL1_IRQ + }; + + /* + * Wire the outputs from each CPU's generic timer and the GICv3 + * maintenance interrupt signal to the appropriate GIC PPI inputs, and + * the GIC's IRQ/FIQ interrupt outputs to the CPU's inputs. + */ + for (int i =3D 0; i < sc->num_cpus; i++) { + DeviceState *cpu_dev =3D DEVICE(&s->cpu[i]); + int intidbase =3D AX3000_NUM_IRQS + i * GIC_INTERNAL; + qemu_irq irq; + + for (int j =3D 0; j < ARRAY_SIZE(timer_irqs); j++) { + irq =3D qdev_get_gpio_in(gic_dev, intidbase + timer_irqs[j]); + qdev_connect_gpio_out(cpu_dev, j, irq); + } + + irq =3D qdev_get_gpio_in(gic_dev, intidbase + ARCH_GIC_MAINT_IRQ); + qdev_connect_gpio_out_named(cpu_dev, "gicv3-maintenance-interrupt", + 0, irq); + + sysbus_connect_irq(gic_sbd, i, + qdev_get_gpio_in(cpu_dev, ARM_CPU_IRQ)); + sysbus_connect_irq(gic_sbd, i + sc->num_cpus, + qdev_get_gpio_in(cpu_dev, ARM_CPU_FIQ)); + sysbus_connect_irq(gic_sbd, i + 2 * sc->num_cpus, + qdev_get_gpio_in(cpu_dev, ARM_CPU_VIRQ)); + sysbus_connect_irq(gic_sbd, i + 3 * sc->num_cpus, + qdev_get_gpio_in(cpu_dev, ARM_CPU_VFIQ)); + } + + /* DRAM */ + const struct { + hwaddr addr; + size_t size; + const char *name; + } dram_table[] =3D { + { AX3000_DRAM0_BASE, AX3000_DRAM0_SIZE, "dram0" }, + { AX3000_DRAM1_BASE, AX3000_DRAM1_SIZE, "dram1" } + }; + + for (int i =3D 0; i < AX3000_NUM_BANKS; i++) { + memory_region_init_ram(&s->dram[i], OBJECT(s), dram_table[i].name, + dram_table[i].size, &error_fatal); + memory_region_add_subregion(get_system_memory(), dram_table[i].add= r, + &s->dram[i]); + } + + /* UARTs */ + const struct { + hwaddr addr; + unsigned int irq; + } serial_table[] =3D { + { AX3000_UART0_BASE, AX3000_UART0_IRQ }, + { AX3000_UART1_BASE, AX3000_UART1_IRQ }, + { AX3000_UART2_BASE, AX3000_UART2_IRQ }, + { AX3000_UART3_BASE, AX3000_UART3_IRQ } + }; + + for (int i =3D 0; i < AX3000_NUM_UARTS; i++) { + qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i)); + if (!sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), errp)) { + return; + } + + sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, serial_table[i].ad= dr); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0, + qdev_get_gpio_in(gic_dev, serial_table[i].irq)); + } + + /* Timer control */ + create_unimplemented_device("ax3000.timerctrl", AX3000_TIMER_CTRL, 32); +} + +static void ax3000_class_init(ObjectClass *oc, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(oc); + Ax3000SoCClass *sc =3D AX3000_SOC_CLASS(oc); + + dc->desc =3D "Axiado SoC AX3000"; + dc->realize =3D ax3000_realize; + sc->num_cpus =3D AX3000_NUM_CPUS; +} + +static const TypeInfo axiado_soc_types[] =3D { + { + .name =3D TYPE_AX3000_SOC, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(Ax3000SoCState), + .instance_init =3D ax3000_init, + .class_init =3D ax3000_class_init, + } +}; + +DEFINE_TYPES(axiado_soc_types) diff --git a/hw/arm/meson.build b/hw/arm/meson.build index 4233a800be..0254b82df1 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -110,6 +110,9 @@ arm_common_ss.add(when: 'CONFIG_SX1', if_true: files('o= map_sx1.c')) arm_common_ss.add(when: 'CONFIG_VERSATILE', if_true: files('versatilepb.c'= )) arm_common_ss.add(when: 'CONFIG_VEXPRESS', if_true: files('vexpress.c')) =20 +arm_common_ss.add(when: ['CONFIG_AXIADO_SOC', 'TARGET_AARCH64'], if_true: = files( + 'ax3000-soc.c')) + arm_common_ss.add(files('boot.c')) =20 hw_common_arch +=3D {'arm': arm_common_ss} diff --git a/include/hw/arm/ax3000-soc.h b/include/hw/arm/ax3000-soc.h new file mode 100644 index 0000000000..b984d7a8ec --- /dev/null +++ b/include/hw/arm/ax3000-soc.h @@ -0,0 +1,68 @@ +/* + * Axiado SoC AX3000 + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef AXIADO_AX3000_H +#define AXIADO_AX3000_H + +#include "cpu.h" +#include "hw/intc/arm_gicv3_common.h" +#include "hw/char/cadence_uart.h" +#include "hw/core/sysbus.h" +#include "qemu/units.h" + +#define TYPE_AX3000_SOC "ax3000" +OBJECT_DECLARE_TYPE(Ax3000SoCState, Ax3000SoCClass, AX3000_SOC) + +#define AX3000_DRAM0_BASE 0x3C000000 +#define AX3000_DRAM0_SIZE (1088 * MiB) +#define AX3000_DRAM1_BASE 0x400000000 +#define AX3000_DRAM1_SIZE (2 * GiB) + +#define AX3000_GIC_DIST_BASE 0x80300000 +#define AX3000_GIC_DIST_SIZE (64 * KiB) +#define AX3000_GIC_REDIST_BASE 0x80380000 +#define AX3000_GIC_REDIST_SIZE (512 * KiB) + +#define AX3000_UART0_BASE 0x80520000 +#define AX3000_UART1_BASE 0x805a0000 +#define AX3000_UART2_BASE 0x80620000 +#define AX3000_UART3_BASE 0x80520800 + +#define AX3000_TIMER_CTRL 0x8A020000 +#define AX3000_PLL_BASE 0x80000000 + +enum Ax3000Configuration { + AX3000_NUM_CPUS =3D 4, + AX3000_NUM_IRQS =3D 224, + AX3000_NUM_BANKS =3D 2, + AX3000_NUM_UARTS =3D 4, +}; + +typedef struct Ax3000SoCState { + SysBusDevice parent; + + ARMCPU cpu[AX3000_NUM_CPUS]; + GICv3State gic; + MemoryRegion dram[AX3000_NUM_BANKS]; + CadenceUARTState uart[AX3000_NUM_UARTS]; +} Ax3000SoCState; + +typedef struct Ax3000SoCClass { + SysBusDeviceClass parent; + + uint32_t num_cpus; +} Ax3000SoCClass; + +enum Ax3000Irqs { + AX3000_UART0_IRQ =3D 112, + AX3000_UART1_IRQ =3D 113, + AX3000_UART2_IRQ =3D 114, + AX3000_UART3_IRQ =3D 170, +}; + +#endif /* AXIADO_AX3000_H */ --=20 2.34.1 From nobody Sat Jul 25 21:59:21 2026 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=axiado.com) ARC-Seal: i=2; a=rsa-sha256; t=1783928236; cv=pass; d=zohomail.com; s=zohoarc; b=DnN+vNVNyo5p2nJV9hReGDBzWXrfZm7wQu2S51WI9cAzxz4WxY20+UAjc/Phj54GRHytbxzGCkTH/+VU7It2NwW7VhkqDQNX+ux+uQdC9CaahIfMYxmSBKIe/bpm7FFyzUui3ZxycQcGPAex9ov2CdEbN5jsSV16N7FPjM9V2j4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783928236; 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=Biw3weI2o7XaW2DPStwY51IQP6zmyds1jdOfjWoHVpo=; b=KXY46ISThzEGVedXTYsVTrclIqzWMq3KKXEiFU/BKxV5upc6bGl+qHDjpHsvJ2E0Dh0xcLVS3gknUbhwK0jexZnqHK8MaOxqBNCPkTFwYfS4P41VCSbua574qwf2rpQxP/VvN85TXBPJCfTwrCU8mMviA9OK0UNtkeUFycWGu0M= 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=axiado.com) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783928236604129.57632859841783; Mon, 13 Jul 2026 00:37:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjBD6-0006IW-Lv; Mon, 13 Jul 2026 03:36:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjBD1-0006HL-H4 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:36:13 -0400 Received: from mail-westus3azon11020104.outbound.protection.outlook.com ([52.101.201.104] helo=PH7PR06CU001.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 1wjBCz-0002vX-PN for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:36:11 -0400 Received: from BY5PR03CA0023.namprd03.prod.outlook.com (2603:10b6:a03:1e0::33) by CH0PR18MB4289.namprd18.prod.outlook.com (2603:10b6:610:b9::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.202.18; Mon, 13 Jul 2026 07:30:59 +0000 Received: from BY1PEPF0001AE1C.namprd04.prod.outlook.com (2603:10b6:a03:1e0:cafe::28) by BY5PR03CA0023.outlook.office365.com (2603:10b6:a03:1e0::33) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.202.18 via Frontend Transport; Mon, 13 Jul 2026 07:30:59 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BY1PEPF0001AE1C.mail.protection.outlook.com (10.167.242.105) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:30:59 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 190124186B59; Mon, 13 Jul 2026 00:30:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=A15VVPCGtkwy65SziaORwSj9+JSAUOEAdeaFIEkR9CaNE2umxSu1QC6e05lZRxKOyZ/6nNvxjO4R/qquy4Wc3diOnvmlotqP+Og17Uyu9ow3BqnTVkQF08EgPnIxSRzhXM2Gmc+UJGC7n1wMhnlQ9CtIABhjmJl1R/0/vOxe57yxR+BID1sgrWAMSQIu09wPhLbJN99M1YiyIuEW2M3MtGXuzW70rfT8dAltW6Qly2JfH/P89zaITkMhqtSl6y0nLJwryfT14yBjSKVWFPv54qJr1kLnw8jMswjK0Dcba1RZQwdH8TQ1kaEPFUIRHM8FNMy5eTW42eC37BuIJVhnvA== 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=Biw3weI2o7XaW2DPStwY51IQP6zmyds1jdOfjWoHVpo=; b=j6+USlOUI27aWtcmLdGxmIQYiXgpHXYt3OPUKYLvPkj/9dS4RApLZeeAs8w9YBntz0SrXrsMLfplaiYYU4pv08MB7N6vHSfzhfqvwFIgmQwSpHTpIJy9C5wQhnDo8mgLYvalV1TllsqPyQlqEXJUvMZ6KPdgYazvJh3SLbglrwuW69CVuVSsR6MaFc5eQvmzgPh6x71N2erd8kIVU1YKJJpahCsMnSovrN+Ww95tTR4wsqtW167qzzB7EtqX4cRUhx0A8o9LStv2dzE3uNCm10w186/u76DG9CdS5O7ZuuPjr6G29+n3GveDxeuxMAHL2BU/472o4W29CD2G8Fetwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 64.62.143.114) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Biw3weI2o7XaW2DPStwY51IQP6zmyds1jdOfjWoHVpo=; b=VFMWdjNC3RkzImIFR0l5qG9N3yzs9eEsh/zu3u67MfB7l20I4rQ8sp5/60uyeB9GJAseqINYZUv8i3GWEl0lQPMDOSgKWVAyTXPUTUQHCHjL6C2A8c3D33g8EdLCCg2GDJ4GSZuYtqzdT4n5bowfD51LM2Bra5aBZ1N3loLFXVoUatnqN3nFhYVpzpbMI5H3ZN1iCzFdOybS9uGkji6tFXv6V1SbNlM9GtXfTdxWW+2URIt01krQVF8xQs+gkoWY15hhgmPc3f0O0TC7lvikU7CMNE9N+B5zR39PJCnx0nBxoCYDb8k2/rSGYaatImqJseviUlavOrvvcukolbpHqQ== X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 64.62.143.114) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.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=lists1p.gnu.org; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 64.62.143.114 as permitted sender) receiver=protection.outlook.com; client-ip=64.62.143.114; helo=smtp.corp.axiado.com; From: Kuan-Jui Chiu To: qemu-devel@nongnu.org, peter.maydell@linaro.org, philmd@oss.qualcomm.com Cc: Kuan-Jui Chiu Subject: [PATCH v7 2/8] hw/misc: Add AX3000 clock control Date: Mon, 13 Jul 2026 00:30:27 -0700 Message-Id: <20260713073033.3883619-3-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260713073033.3883619-1-kchiu@axiado.com> References: <20260713073033.3883619-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PEPF0001AE1C:EE_|CH0PR18MB4289:EE_ X-MS-Office365-Filtering-Correlation-Id: 74b9cce5-d16f-4584-7f40-08dee0b0af5b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700016|1800799024|23010399003|82310400026|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: OIF2X0cNbBIu3ju0pQymxIps0N4Iw6sRAc1vxZ2ZUNajrihKix2Iqr0loWYaq+DQpOQby4x2ro+c8F/V2J4tznhj9Yl98lH2ixeKlwbGv+fC0Q4J2mr2MInI9UxO8y+y1smDxHRyphgKFMXo0UNJzA30qI44aF/5YH3P7j4zBqikU2Q6LCa7k0MHFZDkxv4vnJm+XjEVDYPrhdh9r1DG7YK2bSLRWNAxSzdQTRR+krzI/Uu5cccW7/X6RAe0hLzWuQ0SrQXH+HmuK2pRB8/gXlvVmvGNmq5IblR7+ZhQWxGofqvS/X9OZ15eITM3kG8yZ50UvcW1Xhpp9pu8urb9zIjuNM4r8EfUDXpcJdkHsTIrx7pkauJPpDQPxzTsT184gcm9mR9Wi3+T8K2ItJnzQedb02XkzchzqhlYpitBPGEV1CvjxqRo7L8kPhXURrXJe4+mgsLnJj+XFJRQNtSc0/Mi5MH5v6IN2eQ0ngs1OqXa7bGu69srIphcoDiChC0WJ9BGOU4M2P5jgb/vv2hGyHDYfXv0E1r6M9GDf57Kcc+dO+US+hvR8oThrZkN5NdmME194SFJrUW01jQReV4TLshhsyRlbAUasVLTFVAgZQMTxwdPiQ4qewP+0oNf34tW7v7xo/sqeXSbNUuR0wc7iFvmmlArYCy63d/JU4pEiHaAAQpekyHWqq4zHmv7JN8dAh3jq6NvU3H9aapVplIXOw== X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(36860700016)(1800799024)(23010399003)(82310400026)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4sNRI1STDUSSmX+M0rl29Pdyw/T4ytjKe2Ee55NCzNuFQp+WcXIdS513xrpvA73ZG6c49+d5y2wPDidRHw0e5MBsSbFYTywEPBot5xHy0YAGjjDkAG+qnqSrsxkkkpC7BDctm+p9j3RDjaYuYWfAaQZ1Xacfic/Df+sWeJt4FOSVrSNIi3Vo08Xa6B2a+sP+8FY51X7uGAkWQE9XscpH8J5KLS7J+yuzBhUHk8QxEAn3isV6RfYxnBlFAeUwM5t5lFuKlwn5c2GH2Ff3KvrndX7pC2BkSlSwrSdDo0wXc++HGRGPO4+3Kmd76ITvsM0UR/9zVvCaZuyAsd4pvQSdf/kEFVoklFepgJ2Q98eCoPDbgVWIclk0NfxRIXnaHltpbM7s2kDHSDK+iu/1rJ4nIahnpHb2gWBvWwLODJBR4mUzH/J6Hv/+aUf2O2SObllu X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2026 07:30:59.3617 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 74b9cce5-d16f-4584-7f40-08dee0b0af5b X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7; Ip=[64.62.143.114]; Helo=[smtp.corp.axiado.com] X-MS-Exchange-CrossTenant-AuthSource: BY1PEPF0001AE1C.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR18MB4289 Received-SPF: pass client-ip=52.101.201.104; envelope-from=kchiu@axiado.com; helo=PH7PR06CU001.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.01, 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.29 Precedence: list List-Id: qemu development 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 @axiado.com) X-ZM-MESSAGEID: 1783928237532158500 Content-Type: text/plain; charset="utf-8" This patch adds a new model for Axiado AX3000 clock control which supports to read ID and status Signed-off-by: Kuan-Jui Chiu --- hw/misc/Kconfig | 3 ++ hw/misc/axiado_clk.c | 77 ++++++++++++++++++++++++++++++++++++ hw/misc/meson.build | 3 ++ include/hw/misc/axiado_clk.h | 26 ++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 hw/misc/axiado_clk.c create mode 100644 include/hw/misc/axiado_clk.h diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 1543ee6653..b8860dd3e7 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -257,4 +257,7 @@ config XLNX_VERSAL_TRNG config XLNX_ZYNQ_DDRC bool =20 +config AXIADO_CLK + bool + source macio/Kconfig diff --git a/hw/misc/axiado_clk.c b/hw/misc/axiado_clk.c new file mode 100644 index 0000000000..10b8012a67 --- /dev/null +++ b/hw/misc/axiado_clk.c @@ -0,0 +1,77 @@ +/* + * Axiado Clock Control + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/misc/axiado_clk.h" +#include "qemu/log.h" + +#define CLKRST_CPU_PLL_POSTDIV_OFFSET 0x0C +#define CLKRST_CPU_PLL_STS_OFFSET 0x14 + +static uint64_t pll_read(void *opaque, hwaddr offset, unsigned size) +{ + switch (offset) { + case CLKRST_CPU_PLL_POSTDIV_OFFSET: + return 0x20891b; + case CLKRST_CPU_PLL_STS_OFFSET: + return 0x01; + default: + qemu_log_mask(LOG_UNIMP, "Register 0x%lx not implemented\n", offse= t); + break; + } + return 0x00; +} + +static void pll_write(void *opaque, hwaddr offset, uint64_t val, unsigned = size) +{ + qemu_log_mask(LOG_UNIMP, "Register 0x%lx not implemented\n", offset); +} + +static const MemoryRegionOps pll_ops =3D { + .read =3D pll_read, + .write =3D pll_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .impl =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + }, + .valid =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + } +}; + +static void ax3000_clk_init(Object *obj) +{ + Ax3000ClkState *s =3D AX3000_CLK(obj); + + memory_region_init_io(&s->pll_ctrl, obj, &pll_ops, s, + TYPE_AX3000_CLK, AX3000_CLK_PLL_CTRL_SIZE); + sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->pll_ctrl); +} + +static void ax3000_clk_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->desc =3D "Axiado AX3000 Clock Control"; +} + +static const TypeInfo ax3000_clk_info =3D { + .parent =3D TYPE_SYS_BUS_DEVICE, + .name =3D TYPE_AX3000_CLK, + .instance_size =3D sizeof(Ax3000ClkState), + .instance_init =3D ax3000_clk_init, + .class_init =3D ax3000_clk_class_init, +}; + +static void axiado_clk_register_type(void) +{ + type_register_static(&ax3000_clk_info); +} +type_init(axiado_clk_register_type); diff --git a/hw/misc/meson.build b/hw/misc/meson.build index 23265f6035..e86d9ad6b3 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -1,4 +1,5 @@ system_ss.add(when: 'CONFIG_APPLESMC', if_true: files('applesmc.c')) + system_ss.add(when: 'CONFIG_EDU', if_true: files('edu.c')) system_ss.add(when: 'CONFIG_FW_CFG_DMA', if_true: files('vmcoreinfo.c')) system_ss.add(when: 'CONFIG_ISA_DEBUG', if_true: files('debugexit.c')) @@ -168,3 +169,5 @@ system_ss.add(when: 'CONFIG_SBSA_REF', if_true: files('= sbsa_ec.c')) =20 # HPPA devices system_ss.add(when: 'CONFIG_LASI', if_true: files('lasi.c')) + +system_ss.add(when: 'CONFIG_AXIADO_CLK', if_true: files('axiado_clk.c')) diff --git a/include/hw/misc/axiado_clk.h b/include/hw/misc/axiado_clk.h new file mode 100644 index 0000000000..6e12a509d7 --- /dev/null +++ b/include/hw/misc/axiado_clk.h @@ -0,0 +1,26 @@ +/* + * Axiado AX3000 Clock Control + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef AXIADO_AX3000_CLK_H +#define AXIADO_AX3000_CLK_H + +#include "hw/core/sysbus.h" +#include "qom/object.h" + +#define TYPE_AX3000_CLK "ax3000-clk" +OBJECT_DECLARE_SIMPLE_TYPE(Ax3000ClkState, AX3000_CLK) + +#define AX3000_CLK_PLL_CTRL_SIZE 0x1000 + +typedef struct Ax3000ClkState { + SysBusDevice parent; + + MemoryRegion pll_ctrl; +} Ax3000ClkState; + +#endif /* AXIADO_AX3000_CLK_H */ --=20 2.34.1 From nobody Sat Jul 25 21:59:21 2026 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=axiado.com) ARC-Seal: i=2; a=rsa-sha256; t=1783928221; cv=pass; d=zohomail.com; s=zohoarc; b=bC/0FmHUDg2ulrG5nYXF82k4lmDOoLPIMTd8DYWZfx4JsV9RrXRHzAUzIRFPeCaWY9rTp9HEscJ6hCPCHzIrlLRDHVxK4Iz4JaBkc7xSM7UcT+2a5Ntz4tKoGx4gPDvZV2OUtd+l6H7uWmKc/miFR9Rat9an3sNuSP1x7auZntc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783928221; 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=9vabmgsxhW8Uss5olLxk9MOg89pwx1u40ZIcXIGSOAs=; b=jFWUesaBP4jvLD5QVEnxOO62NoG+pQkst4MF/Gi6tfPJ6QuP2C1DkCVQvkN6siwxrY6mWZS6f/3CyLW/GxXuWUPa6gx1/slJ+uQJg6zi3rvL66MHTE6IlcE2gtTchw3d/UTwGzyFZyQKSKJTeUz8bgRK+FVD9NiukNNjPPpfjRA= 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=axiado.com) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783928221609146.86599760592924; Mon, 13 Jul 2026 00:37:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjBD7-0006Id-PF; Mon, 13 Jul 2026 03:36:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjBD2-0006HP-Od for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:36:13 -0400 Received: from mail-westus3azon11021097.outbound.protection.outlook.com ([40.107.208.97] helo=PH0PR06CU001.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 1wjBCz-0002vT-Pb for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:36:12 -0400 Received: from SJ2PR07CA0012.namprd07.prod.outlook.com (2603:10b6:a03:505::13) by LV3PR18MB5707.namprd18.prod.outlook.com (2603:10b6:408:1a8::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.20; Mon, 13 Jul 2026 07:30:59 +0000 Received: from BY1PEPF0001AE1B.namprd04.prod.outlook.com (2603:10b6:a03:505:cafe::29) by SJ2PR07CA0012.outlook.office365.com (2603:10b6:a03:505::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.202.19 via Frontend Transport; Mon, 13 Jul 2026 07:30:59 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BY1PEPF0001AE1B.mail.protection.outlook.com (10.167.242.103) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:30:59 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 444AC4186B5A; Mon, 13 Jul 2026 00:30:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lEczjgJrohKStnbYELe4yX9+0sl2/iS2fEwAPUP05V86zGo3zYRReainrZdasbiU+4rd9USQiFMFdpABdGOFerWD92NwnZxyD6cc3WKG2QsEeZgrootYkgelhWW+9Zl7uecvuJ8vEdDIbFKhrN38d3W1M0JLUlsPeyhTH5I6GytnrwyhDhjYDVzWeGl/RFtUY7pNXQcK0layPHq54/RnCkotjUNIxhSEeHNWqxNsnwnX7LzhWpF8jo4oQJf4JcdDmLhycI6pyjrGchW9HY3TT5kyFqhFuRQfpgVcYG2zUSPPs2j5N7da107js7doJ+iaBtAc3x/OLioi1bfwF4RNiw== 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=9vabmgsxhW8Uss5olLxk9MOg89pwx1u40ZIcXIGSOAs=; b=J/V1QCx5Mife1hHgLCAzk1shOuS3CmuSRWGA9wn89htiWn5KEVuTM/MuOtbm/DAHtvFgGwlK9hVi3muVzsSEUBQeapZlCdViAEphomeVlXrIhAMakwSpDb6IhuUWp+IUSva2JTaC8P0hGEhyuRagXBYn67r+cthDZIx3LGwBp081n16XiUXIEQRrL9pDvxvnPRoAsV4whQDgzeMCoeftsMLmgu/AE5SdNwdiCcyV1BhE8y9S4blJJTQhmgb9Jrocr5V5W1805h1+UzNd9zplCs7Tc8GeWjsb8rw7iaArAa9hyal19IWNc8a0wRaA/QGITLlEF6/gvCu9XxoHgpJnDg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 64.62.143.114) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9vabmgsxhW8Uss5olLxk9MOg89pwx1u40ZIcXIGSOAs=; b=is/n3TCOtn+bLMNoFThLp+LPzoqUQKnB2MM1GnwvdW4Lsq3taD+BqAQu+iCu6bQ9+ljjKv0CQ1nqCumSn0cdusIbjvJaf6SrCmYb8icO1PPSP/PG3OHYMykWeJkJTVFHlMJaXWbfbov/P8nypCfXu4gazFTuBIWau4w5D9BorhlCtsuyz6M44Bp603XfdK1Vi6GQTSklN3O5lYl/tMv4EiHobXPs6ZmnR4V6JVZvmx+dDQDQpdwUshkpq10c0MFmV8V/YONiGJ/I5ivSl2KQuDX9OXQZphGGSMTijpv5NuI/8StE3RPYvwZr22kzWbFLQWPq+VDrWsOFkoheFfqA/Q== X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 64.62.143.114) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.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=lists1p.gnu.org; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 64.62.143.114 as permitted sender) receiver=protection.outlook.com; client-ip=64.62.143.114; helo=smtp.corp.axiado.com; From: Kuan-Jui Chiu To: qemu-devel@nongnu.org, peter.maydell@linaro.org, philmd@oss.qualcomm.com Cc: Kuan-Jui Chiu Subject: [PATCH v7 3/8] hw/arm: ax3000-soc: Enable Ax3000 clock control Date: Mon, 13 Jul 2026 00:30:28 -0700 Message-Id: <20260713073033.3883619-4-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260713073033.3883619-1-kchiu@axiado.com> References: <20260713073033.3883619-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PEPF0001AE1B:EE_|LV3PR18MB5707:EE_ X-MS-Office365-Filtering-Correlation-Id: 726ba369-21e7-4d64-eb74-08dee0b0af7b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|23010399003|1800799024|376014|36860700016|82310400026|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: Uiac2Og5VphdxMXtg+d/aMvCtCShiO5vSwZBX8GRnhT/lY1MBgWcPH75Ogi7rqEa/wgddwyvhUXpW+hgK72ldRa0sANRjJwkmR3uD4183SahBzeG93rKzaqk1cVJOzQxCPOGrmJtZNM09gtAjcTkJsoRwA497lQjaRkCh4/jXBZJ/qDHI5zhyJbRaL2+Gi5U+qq4yHyTF/eA7RANN8uXd0Qyy8S2zLHjQu/Rlb7NaaRnAC6kaQRJoia629puwPcDN2qew2zZTQbffEjxVY1wVBb2xn5oYDmZ1iYbv81L6b/MrCBq83q3OsTKKvnBOQkzEx5c2s0UCxM/YOnbKW8XVDcHgR4F12r2ttiTe8TV3Ptws0Q+Q+HFG4o2LcgJTagQruGr5VszaJgFd70UC855+Y3Ldxabi9KmXpA/eLRQK87V4nO68wz3afsXJ+tpJcnB1kXPIJr2/8l+VFtB2b6mtrsdUTjPi2J5PuhQLX6FeF88PWDZmAjLlnsh0B5ZbnZzJqrYxDwQiI89itm3Uju09JwyrRBLJb/5yLoTmcffijE+wBOn78vuUOrQj2ZuGQ2fdJJFgTMRNjxjLZRkkBiIMJ7FUjNGYZFZA1zpfTuxn2ijY1gNmZMUrR+l04tQacvvYrxEvajsps9wyw48fDA65WonpRnQPl7hkvQUR5JNnW5OKx2rPHwqMH7IGIuGnTPd X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(23010399003)(1800799024)(376014)(36860700016)(82310400026)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 4cAJhcE2p5VNf/TE9CeAx2VKfQ5bGOs1ZzpqFBPl3ye5gp1e0Hvmm8zbH9+pPCyQvD8DuYmya399J33XvHgSDqYqpcONU4oY2g7VblqY8SDhsHMhoxZEBC3J8ySo612QBQ0/9Lu+rJB7Fhz0JMPGTv0nzVyYRCoeEzQVVrDP3kKVvUntogTGY9YTam23cyFKypXgNUI2EIYdG4B6yVkSnJuen3X0kNmUMYJRbCLt0MRKas/e4hvdhdP+dgnRmodV3cyf0aNUqc+FY7qByykuaCsgC2JOcG5CrqiZ2DwDHte3y8GFzzg13P3b5Vc0zE5TLaDuD7BuD6HHWJsF2XmOmMp8brMBqG5K38Kqep0P1sHVGSeYKTJkrqcSY48inWCkT9+mS6XJgXQ7ojgBmUsMW+uPESNTWuzvSrWhhZEQ6QyRvmAoG+5evKsZ2t5yZa2o X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2026 07:30:59.5748 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 726ba369-21e7-4d64-eb74-08dee0b0af7b X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7; Ip=[64.62.143.114]; Helo=[smtp.corp.axiado.com] X-MS-Exchange-CrossTenant-AuthSource: BY1PEPF0001AE1B.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR18MB5707 Received-SPF: pass client-ip=40.107.208.97; envelope-from=kchiu@axiado.com; helo=PH0PR06CU001.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.01, 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.29 Precedence: list List-Id: qemu development 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 @axiado.com) X-ZM-MESSAGEID: 1783928223687158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Kuan-Jui Chiu --- hw/arm/Kconfig | 1 + hw/arm/ax3000-soc.c | 8 ++++++++ include/hw/arm/ax3000-soc.h | 2 ++ 3 files changed, 11 insertions(+) diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index feba0de1bb..fc82a1ab01 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -729,4 +729,5 @@ config AXIADO_SOC depends on ARM select ARM_GIC select CADENCE # UART + select AXIADO_CLK select UNIMP diff --git a/hw/arm/ax3000-soc.c b/hw/arm/ax3000-soc.c index b528f8af53..aaeae11074 100644 --- a/hw/arm/ax3000-soc.c +++ b/hw/arm/ax3000-soc.c @@ -33,6 +33,8 @@ static void ax3000_init(Object *obj) g_autofree char *name =3D g_strdup_printf("uart%d", i); object_initialize_child(obj, name, &s->uart[i], TYPE_CADENCE_UART); } + + object_initialize_child(obj, "clk", &s->ax3000_clk, TYPE_AX3000_CLK); } =20 static void ax3000_realize(DeviceState *dev, Error **errp) @@ -157,6 +159,12 @@ static void ax3000_realize(DeviceState *dev, Error **e= rrp) =20 /* Timer control */ create_unimplemented_device("ax3000.timerctrl", AX3000_TIMER_CTRL, 32); + + /* Clock control */ + if (!sysbus_realize(SYS_BUS_DEVICE(&s->ax3000_clk), errp)) { + return; + } + sysbus_mmio_map(SYS_BUS_DEVICE(&s->ax3000_clk), 0, AX3000_PLL_BASE); } =20 static void ax3000_class_init(ObjectClass *oc, const void *data) diff --git a/include/hw/arm/ax3000-soc.h b/include/hw/arm/ax3000-soc.h index b984d7a8ec..329aa4e769 100644 --- a/include/hw/arm/ax3000-soc.h +++ b/include/hw/arm/ax3000-soc.h @@ -12,6 +12,7 @@ #include "cpu.h" #include "hw/intc/arm_gicv3_common.h" #include "hw/char/cadence_uart.h" +#include "hw/misc/axiado_clk.h" #include "hw/core/sysbus.h" #include "qemu/units.h" =20 @@ -49,6 +50,7 @@ typedef struct Ax3000SoCState { ARMCPU cpu[AX3000_NUM_CPUS]; GICv3State gic; MemoryRegion dram[AX3000_NUM_BANKS]; + Ax3000ClkState ax3000_clk; CadenceUARTState uart[AX3000_NUM_UARTS]; } Ax3000SoCState; =20 --=20 2.34.1 From nobody Sat Jul 25 21:59:21 2026 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=axiado.com) ARC-Seal: i=2; a=rsa-sha256; t=1783927917; cv=pass; d=zohomail.com; s=zohoarc; b=YI5TEEUPeIMNsIYxWU4t2470YmqHbZ9fKYsDeFyGFiMgdJNfxuGNPhrHVuqVSvISAy92K8zcvDEMiuXSlTuwX6mbs3NO4qEQ9l6wjKAzHz/yF+BC4nbw7+eBdG2QLuFzP91Zz4lXtfQO6wHTq5vvmH5a7CpIXg7IoTFcThjvx2I= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783927917; 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=2rCvyZC9CiPRzq/VaxUCeDnVE1jLRxMuo+cx/T/p2Lc=; b=OKMHdmO5Gy7F/lF3RePiWXlsbtWnp/5LJo5qY84EPUgQTSDLtEYo20UVk2mwqcaoQgq1zVy9+4gzFu3W/Dfn/FI4EFCu6MLnsXyUt/JBnyueaACa2fXK3Nifvho7aOnXg3XiijBc1CT//urC19PN/XjFzVs3q5HW9lSC811BYqs= 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=axiado.com) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783927917491776.5464629670445; Mon, 13 Jul 2026 00:31:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjB8D-0003vK-Q6; Mon, 13 Jul 2026 03:31:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjB8B-0003uq-G1 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:31:11 -0400 Received: from mail-westus3azlp170120001.outbound.protection.outlook.com ([2a01:111:f403:c107::1] helo=PH8PR06CU001.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 1wjB89-0001Xb-Dt for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:31:11 -0400 Received: from SJ0PR05CA0029.namprd05.prod.outlook.com (2603:10b6:a03:33b::34) by SA1PR18MB6418.namprd18.prod.outlook.com (2603:10b6:806:468::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.202.18; Mon, 13 Jul 2026 07:31:00 +0000 Received: from SJ1PEPF000023D0.namprd02.prod.outlook.com (2603:10b6:a03:33b:cafe::1c) by SJ0PR05CA0029.outlook.office365.com (2603:10b6:a03:33b::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:30:59 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by SJ1PEPF000023D0.mail.protection.outlook.com (10.167.244.4) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:30:59 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 7B22340BFE0E; Mon, 13 Jul 2026 00:30:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nzDDbVJsp5psbvX4YNflroCqTvdZ0TPot1VWicq7F4KvU+IerEJHSnppx1ZfHrIY6R9+V+ocr9SrOSgUMFzFFNLFr2M8XP5Xjfeub3tlU24m8XZ0nJCg/fR3bN8EZRrMAMsFeQY9pnmC8+L5kBMY2MN7rtImXRGTOydu//8u9Tba3kbRckf8gv3oxDfod3EEqAVMWrx5jDMXVnyR8lurk0XrUef1YwPbW1bsMUuYNKXId8tYUgvRjg6EUkz62W5R9ag7njmC9xetqoCtlHTlayx0IqsM/wl8jnV+J5KBMxnJW5y3QX64Li2Gu2JAoACIU+Sa5qDASLUkuz/o/Hp0Hw== 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=2rCvyZC9CiPRzq/VaxUCeDnVE1jLRxMuo+cx/T/p2Lc=; b=uSAgxptNMgIZMfH9pkUXTl1Bx5W/Ez6FZdrqOx19sEDY61wxETP/5tUZckSFxQKyh8vwtFyqyW5b0UA+rhuPCTYnpQ8tuciJtVnXhYXqf2WsggjEpwYlW3qGBKI7Fp8/knNIXPQGe1NvAVTkVm3Wop2peoQ56Ao9DyBrWRj3XIrcH12pg+3fCefmCQfBj/fzJAR55yMBtQRSJQW2KXmgzOv2oO+aXHat9wDBaXM4f7NBJ2dLBKoHtiyyTHiAsyyInKyuPa0vcpoZR2gKZkMdh+Fx5luqZGhHhvo+rrko6n0n6CO3b1+egzc6TOFFv02sP7oYhujzRmiJbeOzuD+Wag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 64.62.143.114) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2rCvyZC9CiPRzq/VaxUCeDnVE1jLRxMuo+cx/T/p2Lc=; b=GhjYrD5bF4ebogsl/HJh2KGW0DpNzrn2lUFRp9DSH0iyb5JEkscZnLQHEaKAx1s33kFp6R7cjDbmi2m669lN9hmO+MReo0kFWhU/jNBX7FaimXvRzlaaw8ki2+DeV5T7JG2eNTHWByosY/Wk7/KiE77eINQF1CCZt90x4L3XuSUAKkrPJGWDn8C66mUSI9FTusRausgSwmHDQe+8x8HBXK2DdQ7ZTFZ/r1Us8TjjVQqxmV8jXi+w3jktUUm5DFjfhY9/zJCbaEw5jVq9I3DeyTormLnRpYN+HpBqV0xeLlJZGcOQAfcPIRxZSSrfIE/DGmSGreorHPBNcRmoWWxfzw== X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 64.62.143.114) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.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=lists1p.gnu.org; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 64.62.143.114 as permitted sender) receiver=protection.outlook.com; client-ip=64.62.143.114; helo=smtp.corp.axiado.com; From: Kuan-Jui Chiu To: qemu-devel@nongnu.org, peter.maydell@linaro.org, philmd@oss.qualcomm.com Cc: Kuan-Jui Chiu Subject: [PATCH v7 4/8] hw/sd: Add Axiado SD host controller with eMMC PHY Date: Mon, 13 Jul 2026 00:30:29 -0700 Message-Id: <20260713073033.3883619-5-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260713073033.3883619-1-kchiu@axiado.com> References: <20260713073033.3883619-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF000023D0:EE_|SA1PR18MB6418:EE_ X-MS-Office365-Filtering-Correlation-Id: 171a9552-d813-442f-f445-08dee0b0af99 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|23010399003|1800799024|376014|36860700016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: 263sUSkF+EHPvFkgikqsTUq1+FF4u3ZCpb8C1Y/WbAMOoTd0rzucnaKejTpNQwDWvgg+HfdCzwLf262/WR1SBBQ+fVekl0CwOl17MsbSWTaGIex5un++NkuDihAtZ3M7Pi66hAUnbmQnpEdOq+dLk1Nu3QuHxl1sdRmKUdmeQcLf4jHMQtjUYzOuflNfBYPXMPunIBDdoATGrctFtmf4fzgib4+k1JL8EEQkznkYPpq79IWAK3NvkZoOYa/d4/kDiwlLO7+CCcwldNb/NOzOIV45BHMbiolwKkyc0Dwga9+jHQkpLUI1WV2zUIxnutNp2LLYlYSD6tePO5s+5FIQOKHtNWkeyhoMr3zOKdQIwxsTO8aRldkFKuUCc+lOAcyXmAzdC6XpfzCFE4/t9JJZE/A3vM99tlqE6E14MIdohJBtdWa0iKV9HwyT2RIqk7Z6mH+J936iKksSXu8tttqYFq9Kja4H4pJfVpoPg+8Inucs+HsLfzdLNDVKV7eKw6abf+y0feY77FFaYnpbH2t5C4pB9AeBP3mTWU7gQjsWYAF/2LczXCDqAv/k59KSvxSM6o7i2k8wxfzyOOcF0ZhUAqh3bFnHHHyxYDQ3Y3TEQUDyOoQC5S72iU5G2xumuDYgAUT/GQr2cAfc8P+GEp/+Rf3H9RdPFIfiRUYKQ4KhkCb0SL3XXsZIk1UQXUfzHepaXi6RoXdyn2jjVfrNUHrcaw== X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(23010399003)(1800799024)(376014)(36860700016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CQvJt9kdED0jckbZ4ih91zjou1oaPUfhtEl2P6P1DySwnzLvAOSkBO5gQV3yNfPzxtEYhs5w5zG22wMGdnxJb+XrrAXBqh4e9511HwfhbxwF0nZdid7UmFO666h2BnlEOv+t/AMyBe68ADJpxHerpsUTHNBThECeJtW6btRnqCLOO5LzRnCXWiakDDAoPtkorP8JiQv5ocotAkRZcXCiHh7Ku/stUKCHtJmJDPK3l5uVESFsgt+ud/EU+jsNNxLhvCZ3qQplO4zHX9aTW8552ab1XcWPYhdhk6Hth6G8+cvmriyJbXU0HLe4l3Osfc0mKx4zxQBzYaULifTRRm1NqPrP0T0Ln2g3wep2HAr23UhvijSBI+I1ghfq1+8/cmukreXXQy6w5lubv8rH4NYii6MIvJW0vHjC9YnXeDLS+62Y83R7xUybg07IIl7mxdve X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2026 07:30:59.7701 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 171a9552-d813-442f-f445-08dee0b0af99 X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7; Ip=[64.62.143.114]; Helo=[smtp.corp.axiado.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF000023D0.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR18MB6418 Received-SPF: pass client-ip=2a01:111:f403:c107::1; envelope-from=kchiu@axiado.com; helo=PH8PR06CU001.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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.29 Precedence: list List-Id: qemu development 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 @axiado.com) X-ZM-MESSAGEID: 1783927920250158500 Content-Type: text/plain; charset="utf-8" This patch add a new model for Axiado SD host controller which is compatible with SDHCI 3.0 spec This device model also includes a eMMC PHY which helps to control SD/eMMC Signed-off-by: Kuan-Jui Chiu Reviewed-by: Peter Maydell --- MAINTAINERS | 2 + hw/sd/Kconfig | 4 ++ hw/sd/axiado_sdhci.c | 117 +++++++++++++++++++++++++++++++++++ hw/sd/meson.build | 1 + include/hw/sd/axiado_sdhci.h | 21 +++++++ 5 files changed, 145 insertions(+) create mode 100644 hw/sd/axiado_sdhci.c create mode 100644 include/hw/sd/axiado_sdhci.h diff --git a/MAINTAINERS b/MAINTAINERS index 809d7b7a53..0766cd0130 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1303,7 +1303,9 @@ M: Kuan-Jui Chiu L: qemu-arm@nongnu.org S: Maintained F: hw/arm/ax3000*.c +F: hw/*/axiado*.c F: include/hw/arm/ax3000*.h +F: include/hw/*/axiado*.h =20 AVR Machines ------------- diff --git a/hw/sd/Kconfig b/hw/sd/Kconfig index 633b9afec9..c69bf24f8d 100644 --- a/hw/sd/Kconfig +++ b/hw/sd/Kconfig @@ -23,3 +23,7 @@ config SDHCI_PCI config CADENCE_SDHCI bool select SDHCI + +config AXIADO_SDHCI + bool + select SDHCI diff --git a/hw/sd/axiado_sdhci.c b/hw/sd/axiado_sdhci.c new file mode 100644 index 0000000000..94c2e04409 --- /dev/null +++ b/hw/sd/axiado_sdhci.c @@ -0,0 +1,117 @@ +/* + * Axiado SD Host Controller with embedded PHY + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/sd/axiado_sdhci.h" +#include "sdhci-internal.h" +#include "qapi/error.h" +#include "hw/core/qdev-properties.h" +#include "qemu/log.h" + +#define EMMC_PHY_ID 0x00 +#define EMMC_PHY_STATUS 0x50 + +#define DLL_RDY (1u << 0) +#define CAL_DONE (1u << 6) + +static uint64_t emmc_phy_read(void *opaque, hwaddr offset, unsigned size) +{ + uint32_t val =3D 0x00; + + switch (offset) { + case EMMC_PHY_ID: + val =3D 0x3dff6870; + break; + case EMMC_PHY_STATUS: + val =3D DLL_RDY | CAL_DONE; + break; + default: + qemu_log_mask(LOG_UNIMP, "Register 0x%lx not implemented\n", offse= t); + break; + } + + return val; +} + +static void emmc_phy_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ + qemu_log_mask(LOG_UNIMP, "Register 0x%lx not implemented\n", offset); +} + +static const MemoryRegionOps emmc_phy_ops =3D { + .read =3D emmc_phy_read, + .write =3D emmc_phy_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .impl =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + }, + .valid =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + } +}; + +static void axiado_sdhci_realize(DeviceState *dev, Error **errp) +{ + AxiadoSDHCIState *s =3D AXIADO_SDHCI(dev); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); + SysBusDevice *sdhci_sbd; + + qdev_prop_set_uint64(DEVICE(&s->sdhci), "capareg", 0x216737eed0b0); + qdev_prop_set_uint64(DEVICE(&s->sdhci), "sd-spec-version", 3); + + sdhci_sbd =3D SYS_BUS_DEVICE(&s->sdhci); + if (!sysbus_realize(sdhci_sbd, errp)) { + return; + } + + sysbus_init_mmio(sbd, sysbus_mmio_get_region(sdhci_sbd, 0)); + + /* Propagate IRQ from SDHCI and SD bus */ + sysbus_pass_irq(sbd, sdhci_sbd); + s->sd_bus =3D qdev_get_child_bus(DEVICE(sdhci_sbd), "sd-bus"); + + /* Initialize eMMC PHY MMIO */ + memory_region_init_io(&s->emmc_phy, OBJECT(s), &emmc_phy_ops, s, + "axiado.emmc-phy", 0x1000); + + sysbus_init_mmio(sbd, &s->emmc_phy); +} + +static void axiado_sdhci_instance_init(Object *obj) +{ + AxiadoSDHCIState *s =3D AXIADO_SDHCI(obj); + + object_initialize_child(OBJECT(s), "sdhci", &s->sdhci, + TYPE_SYSBUS_SDHCI); +} + +static void axiado_sdhci_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->realize =3D axiado_sdhci_realize; + dc->desc =3D "Axiado SD Host Controller with eMMC PHY"; +} + +static const TypeInfo axiado_sdhci_info =3D { + .name =3D TYPE_AXIADO_SDHCI, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(AxiadoSDHCIState), + .instance_init =3D axiado_sdhci_instance_init, + .class_init =3D axiado_sdhci_class_init, +}; + +static void axiado_sdhci_register_types(void) +{ + type_register_static(&axiado_sdhci_info); +} + +type_init(axiado_sdhci_register_types); diff --git a/hw/sd/meson.build b/hw/sd/meson.build index b43d45bc56..ebf09e30a4 100644 --- a/hw/sd/meson.build +++ b/hw/sd/meson.build @@ -10,3 +10,4 @@ system_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files('= aspeed_sdhci.c')) system_ss.add(when: 'CONFIG_ALLWINNER_H3', if_true: files('allwinner-sdhos= t.c')) system_ss.add(when: 'CONFIG_NPCM7XX', if_true: files('npcm7xx_sdhci.c')) system_ss.add(when: 'CONFIG_CADENCE_SDHCI', if_true: files('cadence_sdhci.= c')) +system_ss.add(when: 'CONFIG_AXIADO_SDHCI', if_true: files('axiado_sdhci.c'= )) diff --git a/include/hw/sd/axiado_sdhci.h b/include/hw/sd/axiado_sdhci.h new file mode 100644 index 0000000000..85afebad93 --- /dev/null +++ b/include/hw/sd/axiado_sdhci.h @@ -0,0 +1,21 @@ +/* + * Axiado SD Host Controller + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "hw/sd/sdhci.h" +#include "qom/object.h" + +#define TYPE_AXIADO_SDHCI "axiado-sdhci" +OBJECT_DECLARE_SIMPLE_TYPE(AxiadoSDHCIState, AXIADO_SDHCI) + +typedef struct AxiadoSDHCIState { + SysBusDevice parent; + + SDHCIState sdhci; + MemoryRegion emmc_phy; + BusState *sd_bus; +} AxiadoSDHCIState; --=20 2.34.1 From nobody Sat Jul 25 21:59:21 2026 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=axiado.com) ARC-Seal: i=2; a=rsa-sha256; t=1783928187; cv=pass; d=zohomail.com; s=zohoarc; b=cwVfLNtTU8QXMBrMjDG/nsatdsytOhTFdhvmh+858A/wpihaZEa3ZLrecrJhGvgq9Rk4G10ToWbCWd367UjD+9r5ysl6TSNeO2YBWG1Tw5u1R4gUSC3CSBz9F/B1wIggD9yAyMJU150rIjEe5IrRicMIP1/8OSXILtpW7u6an0s= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783928187; 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=PF71HK3uIMcH0aKyUJdJCfQ1HxPlx7Lu96khR+UIZac=; b=VMV069M7LAw0GAeAnMCiQL09sLsfRK+pKAXqEGOU6KdRuZERKrKS2zLDc7LFhy5elJb87Bjhr9NzI5u8C2Pa9poTRduStlyIHRTZneH9YrXuVHJoHS3qctmty3TZl4lyC2lW/aIdn0ML1BJfHTXrvJfvfaL8CkFeLhIHrFydv2M= 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=axiado.com) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178392818760094.77670494529968; Mon, 13 Jul 2026 00:36:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjBD5-0006Hq-EN; Mon, 13 Jul 2026 03:36:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjBCz-0006HA-RO for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:36:11 -0400 Received: from mail-eastusazon11022098.outbound.protection.outlook.com ([52.101.53.98] helo=BL0PR03CU003.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 1wjBCw-0002vP-Eb for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:36:07 -0400 Received: from CH0PR03CA0294.namprd03.prod.outlook.com (2603:10b6:610:e6::29) by MN2PR18MB3589.namprd18.prod.outlook.com (2603:10b6:208:260::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.202.18; Mon, 13 Jul 2026 07:31:01 +0000 Received: from CH1PEPF0000A346.namprd04.prod.outlook.com (2603:10b6:610:e6:cafe::91) by CH0PR03CA0294.outlook.office365.com (2603:10b6:610:e6::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.202.19 via Frontend Transport; Mon, 13 Jul 2026 07:31:00 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by CH1PEPF0000A346.mail.protection.outlook.com (10.167.244.11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:31:00 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id A967240BFE0F; Mon, 13 Jul 2026 00:30:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kaNmIBt3JCYmLd2ybfbmNBCG3N2mfOnLnF5BblkIJN6ZG6WwV1cyA2omgBwU2PDRkztQIFiAiLoyBbdvnvIwgElMccgntpRZUZRaUClgKkuxkVU3vOV4D6fGbwpr3c3FXwd0eHx+1mihfuh3VxUOCL0/5p5TFWBjbJt0LmiLknfhImlmpvmwjZrSpM5LvKxYWrr9XyYwqn3GF0YQo4H0Glh+SNcy3pP+xkbuGhFG7rxY7A7AJjFrzAS1oO87sqweE66jjE5uRza+nIYyINQWfb8ofDD2/TbVWdqkgG7b0SbWNFQx0fVHW0LjYh3jIk2K22YWsNgpiUuhxbaupeeGHg== 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=PF71HK3uIMcH0aKyUJdJCfQ1HxPlx7Lu96khR+UIZac=; b=SS1C4w8An/5kSCBaij/45M4LKtJJctUKP9e8TMVzIMLT3YNdX/oI43XqO/XSzfSONzM9Mx4qZC3sKOGRTlNeZ/jwuXpUn9EpByVxEKQMQAlMBasljcosl9sCNlvPEBOlZb4cWWdV3dQ98xI+8zJfreci6VK3lPriCWk2huqt+R8CHXL+3xsXvjBcM3MkfWECDLv52qYefwmTlofnafrrME9E+eK9HIbR+0JEsemrJb+PTDd5Fvp9im/fUFKDiXVqVAL/JNJf9Y6/fioSImXkmZwIeXCHO8XyRR4E3TgXihfMaP0bpNTBebBgrvQUJH2rzjgdM5US/lYTk8qvSzRiBA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 64.62.143.114) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PF71HK3uIMcH0aKyUJdJCfQ1HxPlx7Lu96khR+UIZac=; b=AgaAMsMKkRBygDipRoebnC/66mP4pEurSqkNlOqPwMA+ZCusrVUeqYKioM5ybLsHZUgkkVP2nBcTex60QpHntftG5PTXl3iWTzUBDneOpVS+teyWf0rqzTsuBXaOYInEXfwz+zeIkmo0LgiAsPHm/BDRjcNYmYvoaZ4IgPp26rjQeTLTV+lDqg/4twRsV9BvfA6GUl7/bDdNC4/J9+6wNJ+AtdschMzkGJugepy3DnlDZVcUnzzrvpiF8ZCrSGhb5AWprCUDbfxVVsrzMHZ3w0d7nFv3XZfVg50WyS99qOxqOxmGlySurxsovibjg4WEIomufnZLcbD3YLHekxwFGg== X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 64.62.143.114) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.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=lists1p.gnu.org; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 64.62.143.114 as permitted sender) receiver=protection.outlook.com; client-ip=64.62.143.114; helo=smtp.corp.axiado.com; From: Kuan-Jui Chiu To: qemu-devel@nongnu.org, peter.maydell@linaro.org, philmd@oss.qualcomm.com Cc: Kuan-Jui Chiu Subject: [PATCH v7 5/8] hw/arm: ax3000-soc: Enable Axiado SD host controller Date: Mon, 13 Jul 2026 00:30:30 -0700 Message-Id: <20260713073033.3883619-6-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260713073033.3883619-1-kchiu@axiado.com> References: <20260713073033.3883619-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000A346:EE_|MN2PR18MB3589:EE_ X-MS-Office365-Filtering-Correlation-Id: 60924441-d0a5-4b03-b9db-08dee0b0b023 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|23010399003|1800799024|376014|36860700016|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: dUEzzoIzoND2Qmw1ufp+c5jGa+8xwoUrgr/ldLnhspu/I2KcWAPJyVbeQR8KBmff6YZLV2jYRUSOR8YF8V0Nqr3HEpnNGxpJYZOKMQcOTI0WZJ7cz+cs5wi2pbyCpyXEy1h+qmN3l4h8vo99+QbvX/wrOFrsMHJwkNxHFlBJbJt54XAMbyYA/WCXP3o4wMdYUVVFUTgIjWxT/JbF/YE+5JADxLuUFOQvIasB9Gm5oowQBUhrB/vJMVv+zMTF5LosOjlsXUNXlbBbkxIVECxeVo+KmETwDiBkarpqLgch6+JLT/72WrXamYLSBFhHZ76ZD921eN8SoULe5AbGgGD5XDbhXILhCxAyrYGZxSu1Pwtra9ag7rsVXXx4K8nK0Qa9mEsaBwlSiDIpZ+lv7R5I2C5L1yX8T85aYgRo1wM3h4S/HIrleNNNcFUcFgUwlj4NvYQNnLLso01JKramYgufWSNqnZY+4bz6jDIqiuSLIHoSVPfLslp9kaKc2jpciRBjtTeY3bhBuG6YNDDOJDsD3CA/G6XoPo0LNLyrdAU2dV7HCbu96U0Vf0WVyfNzKh3G0Gh8mTmn1cG81fBqq30t9HThYkU8UXAdqK8P8sFJcXeOFktNLJjWtY11hGIyf+KJ31AgsIpdHxvJ/ookMD5Jo0zmEcyfGVvPN69P3TSAKTgrNqKk6JiSNjV1e1BV3r9GQ5QKLr0aRD6zN9jXGvX5Rw== X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(23010399003)(1800799024)(376014)(36860700016)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fAmP4WXFsyO6mP2zGUKwIfuhREhIvZ0pNBu4H0nET0zE/awemq1TGhbDk0Tyn0c6H5F2KSHSeWxc/knSSQr/GGMG339gzzSawfZgh5W5X2JtV3Kzd1ki2F4QaXcLUwfb5QvTHA+VlaB3u5UPQ+WaGp0FdE94Al0Vlr3wMbqmwaItPdsOvWwmR51n04zVeDEKlgGoqUB7j5MWl1MSWV7xqyq23dZhaEoXREm6nOmP08CaxijO9rK8jcvs3zJm5tHshpM/VT+UNdFHVDx69wn75cxBcqwonMcOFsfB63+NmuQXn3zB8Ov85yvb24pZ3cCVgyM6trAsWfEXU/pXnNiuFxUkg7OEdUcgEZYtx8BfB3u/aCwTTS2n0slOQUryVCnLhgygaXKejPeegToAgDP/AVOJmhe5Ga7boMTxwRs64jFo41KMWJ3kZAiDzclY5VaY X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2026 07:31:00.4769 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 60924441-d0a5-4b03-b9db-08dee0b0b023 X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7; Ip=[64.62.143.114]; Helo=[smtp.corp.axiado.com] X-MS-Exchange-CrossTenant-AuthSource: CH1PEPF0000A346.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB3589 Received-SPF: pass client-ip=52.101.53.98; envelope-from=kchiu@axiado.com; helo=BL0PR03CU003.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.01, 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.29 Precedence: list List-Id: qemu development 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 @axiado.com) X-ZM-MESSAGEID: 1783928189295158500 Content-Type: text/plain; charset="utf-8" Enable SD host controller into Axiado AX3000 SoC to load kernel and rootfs from eMMC. Signed-off-by: Kuan-Jui Chiu Reviewed-by: Peter Maydell --- hw/arm/Kconfig | 1 + hw/arm/ax3000-soc.c | 22 ++++++++++++++++++++++ include/hw/arm/ax3000-soc.h | 7 +++++++ 3 files changed, 30 insertions(+) diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index fc82a1ab01..411ea90bfe 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -730,4 +730,5 @@ config AXIADO_SOC select ARM_GIC select CADENCE # UART select AXIADO_CLK + select AXIADO_SDHCI select UNIMP diff --git a/hw/arm/ax3000-soc.c b/hw/arm/ax3000-soc.c index aaeae11074..23903b081b 100644 --- a/hw/arm/ax3000-soc.c +++ b/hw/arm/ax3000-soc.c @@ -35,6 +35,7 @@ static void ax3000_init(Object *obj) } =20 object_initialize_child(obj, "clk", &s->ax3000_clk, TYPE_AX3000_CLK); + object_initialize_child(obj, "sdhci0", &s->sdhci0, TYPE_AXIADO_SDHCI); } =20 static void ax3000_realize(DeviceState *dev, Error **errp) @@ -46,6 +47,7 @@ static void ax3000_realize(DeviceState *dev, Error **errp) QList *redist_region_count; SysBusDevice *sdhci0_sbd; DeviceState *card; + DriveInfo *dinfo; =20 /* CPUs */ for (int i =3D 0; i < sc->num_cpus; i++) { @@ -165,6 +167,26 @@ static void ax3000_realize(DeviceState *dev, Error **e= rrp) return; } sysbus_mmio_map(SYS_BUS_DEVICE(&s->ax3000_clk), 0, AX3000_PLL_BASE); + + /* SDHCI */ + sdhci0_sbd =3D SYS_BUS_DEVICE(&s->sdhci0); + if (!sysbus_realize(sdhci0_sbd, errp)) { + return; + } + + sysbus_mmio_map(sdhci0_sbd, 0, AX3000_SDHCI0_BASE); + sysbus_mmio_map(sdhci0_sbd, 1, AX3000_EMMC_PHY_BASE); + sysbus_connect_irq(sdhci0_sbd, 0, + qdev_get_gpio_in(gic_dev, AX3000_SDHCI0_IRQ)); + + dinfo =3D drive_get(IF_SD, 0, 0); + if (dinfo) { + card =3D qdev_new(TYPE_SD_CARD); + qdev_prop_set_drive_err(card, "drive", + blk_by_legacy_dinfo(dinfo), + &error_fatal); + qdev_realize_and_unref(card, s->sdhci0.sd_bus, &error_fatal); + } } =20 static void ax3000_class_init(ObjectClass *oc, const void *data) diff --git a/include/hw/arm/ax3000-soc.h b/include/hw/arm/ax3000-soc.h index 329aa4e769..52b47aa829 100644 --- a/include/hw/arm/ax3000-soc.h +++ b/include/hw/arm/ax3000-soc.h @@ -13,6 +13,7 @@ #include "hw/intc/arm_gicv3_common.h" #include "hw/char/cadence_uart.h" #include "hw/misc/axiado_clk.h" +#include "hw/sd/axiado_sdhci.h" #include "hw/core/sysbus.h" #include "qemu/units.h" =20 @@ -34,6 +35,9 @@ OBJECT_DECLARE_TYPE(Ax3000SoCState, Ax3000SoCClass, AX300= 0_SOC) #define AX3000_UART2_BASE 0x80620000 #define AX3000_UART3_BASE 0x80520800 =20 +#define AX3000_SDHCI0_BASE 0x86000000 +#define AX3000_EMMC_PHY_BASE 0x80801C00 + #define AX3000_TIMER_CTRL 0x8A020000 #define AX3000_PLL_BASE 0x80000000 =20 @@ -52,6 +56,7 @@ typedef struct Ax3000SoCState { MemoryRegion dram[AX3000_NUM_BANKS]; Ax3000ClkState ax3000_clk; CadenceUARTState uart[AX3000_NUM_UARTS]; + AxiadoSDHCIState sdhci0; } Ax3000SoCState; =20 typedef struct Ax3000SoCClass { @@ -65,6 +70,8 @@ enum Ax3000Irqs { AX3000_UART1_IRQ =3D 113, AX3000_UART2_IRQ =3D 114, AX3000_UART3_IRQ =3D 170, + + AX3000_SDHCI0_IRQ =3D 123, }; =20 #endif /* AXIADO_AX3000_H */ --=20 2.34.1 From nobody Sat Jul 25 21:59:21 2026 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=axiado.com) ARC-Seal: i=2; a=rsa-sha256; t=1783927917; cv=pass; d=zohomail.com; s=zohoarc; b=MuH2VcK9hr9uE2WUkCtl042L8uVtqsFpK8h3z4AFAK1/pq9wGA+medWzrUtHp0Cus8gDAXcQ+/lq28ZoRCbLW81FynBPRQBjru5GwparaPAmY9I16tBkFCmQO9AGc0YeZVuyVmTRdKe8k4Qan7ZKC6cJL6D4tBeh93Jc36qnErg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783927917; 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=QAqwSo78GuiQT+2UFgtQyuOChkoelUNYwzQ5G4wlqzQ=; b=U4vg/ykxzb+nz/zpgnf0Au+1Y3qbBIDUMdSc5SxCY9XYXDeCQSPf5tE+1ZHGdgMQ6Eb5MQmWOh3h2R+q2zZeS4oP1CBwiQEVgstK18yoiCv5csoTFHbsGouGWIxaB4Z3IGEZ7E6GfSGjK6q3r62RlfVfnnRGb2hGA/DNXAsqoZs= 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=axiado.com) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783927917350996.858184128552; Mon, 13 Jul 2026 00:31:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjB8C-0003v6-4P; Mon, 13 Jul 2026 03:31:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjB89-0003uT-Lo for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:31:10 -0400 Received: from mail-southcentralusazlp170130001.outbound.protection.outlook.com ([2a01:111:f403:c10c::1] helo=SA9PR02CU001.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 1wjB86-0001XQ-Ph for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:31:09 -0400 Received: from BN9PR03CA0730.namprd03.prod.outlook.com (2603:10b6:408:110::15) by PH7PR18MB5646.namprd18.prod.outlook.com (2603:10b6:510:2ef::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.22; Mon, 13 Jul 2026 07:31:01 +0000 Received: from BN3PEPF0000B075.namprd04.prod.outlook.com (2603:10b6:408:110:cafe::aa) by BN9PR03CA0730.outlook.office365.com (2603:10b6:408:110::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.202.19 via Frontend Transport; Mon, 13 Jul 2026 07:31:01 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BN3PEPF0000B075.mail.protection.outlook.com (10.167.243.120) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:31:00 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id D8D8840BFE10; Mon, 13 Jul 2026 00:30:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bWb6xoVgS2ZHj1ibzEBUPMu85UBXHdz7Wla0kZwUQ/aG2JAyKzDwfYJZlifubf+fNb4KHcNSVjmPllEDx46HNqxGnnx7f21AMFLOrypKd/oJKprw1QczFGtqfZxbanuJxEgMEkOxt27lpeGX5cNhXx0ZWhTymzDkfEibtYM1LTWQozDIZuL+2CY9Vq64kwBdGHIGuThixbIDhegyKAUh9uP7Jd/YPSfhax9NijYbdTyfCzokh7ch5ma+inICtfkbm2gODTnCAzlOPv8rofKSgJRsg5LaeVhwfH+AJMm/laAZoSgqM2qXOFdFzIxUNVGLVxO2yc4ATNo4bY/2xfHj8A== 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=QAqwSo78GuiQT+2UFgtQyuOChkoelUNYwzQ5G4wlqzQ=; b=Wv6wuWunKXQHFhXzn21reWWQJvTy9gA7HAmwaOO21kgEIxDSMxC2Yh25bwNWMWkULTN93icvDzlPraT3jxRn56Xn1y7tngU188EX0AWWJq7ZkZAqrcwRCIO8yOE5PztH/aonlTnDjO2RJcAgcmGnv+3dWwtaDbh3EuAXsfGpsqnRNWX4YUAq5N85bxUsjAOjSuY3rcy9qbW0qPpOOj3Q692/GfYJGY/Ap/r48xaeh1zW1witb1tIS1erojYevbNRuJYtGcuVn+WEeCh1UOO3UXbyeSxQlV7R9DtPBFe07qSLXjipVHw/FOmKiwjsrkBF/3XWa86X0NkgtMG4vEO1zQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 64.62.143.114) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QAqwSo78GuiQT+2UFgtQyuOChkoelUNYwzQ5G4wlqzQ=; b=hWTZj5gWk2CCa9s5Lxjk7CCvsm5Dzy7JO2YL76lbY4O5JlyBoqdiZ2zlLRlHuEaMeTjfF/YG8qJ2cpXs/fgnO6L+LSoezdCz/h9XwIVh/CpwRocko7Cb/ljgzLNZyoSlB8DBoCX20qoDp9qSibEGLerCxET5N61BixIK8iFNAVpT48YOdjpzGGSdsijsqTr2Mf06KI1VuzVr19qmb5biLjaH0Nk6s1A15jSu5N3VRpLIY40VuBWS4nO5zo1RVlkn+IIsPaz5p/69w611Dksjl2oRlOfJHsXODkBtHSQRnQ3lGmnjXEQ52ZQPbLQ23ApfVGSdiyqiR5Yvb0FTkb/7+Q== X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 64.62.143.114) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.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=lists1p.gnu.org; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 64.62.143.114 as permitted sender) receiver=protection.outlook.com; client-ip=64.62.143.114; helo=smtp.corp.axiado.com; From: Kuan-Jui Chiu To: qemu-devel@nongnu.org, peter.maydell@linaro.org, philmd@oss.qualcomm.com Cc: Kuan-Jui Chiu Subject: [PATCH v7 6/8] hw/arm: Add Axiado EVK SCM3003 Date: Mon, 13 Jul 2026 00:30:31 -0700 Message-Id: <20260713073033.3883619-7-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260713073033.3883619-1-kchiu@axiado.com> References: <20260713073033.3883619-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B075:EE_|PH7PR18MB5646:EE_ X-MS-Office365-Filtering-Correlation-Id: 03d36de9-bfc3-4bc6-0faa-08dee0b0b04e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700016|23010399003|82310400026|1800799024|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ZU51sflZ2cil9UCHz9iSCINpEDTIw/sD065flmGEeuAgBEplNuunWaheOGWdNWPNoUOmZrjNSGYICnUcpCB4jZv9+X4sNqIOWQZn+6Q8ph99VwRYkVOEAtYVmhVec6fYrENgaz7Uy2NMj7YneuZQM3tshgWX+VMUrWzD1FnZTeix7hvch2FKy7ulj/OYLT2+hcTvp8t+oTXjHTnn+9QBWqftMfCEU37+ldeEiKyW+z+83aRsILid++xqVQd7lylIxDMkAaSt30aDBY6QFmbMGIBDEVCoAW0xCjfV4VA/9HF0r6+R9OUT22yvlgPhAikZ4FloLOhNf5auFmv4KYLOK4cnaCZQWyThuqqFzyxyU7g/ywTW96vPXZL6fozIsKnQZnStO1ap8eqU60yAX9bYbNDf4r88mA7MRZ6y7bDiBGwx7GrZ0FplQ4LNrb9nHvV6XgsKiqfy/j8ollGgLw8MCT7PcYNrSdwoCVHZwn5w78lzY+DcSkQnR7K6c4DLWZixz5IziqZVYQkXbQFmyHmF8V/J/0Qk66KQ7ybJ+4ds/6J8jMiFE29jIYVvStdvMPEvGGnncyCJ+BN5KD8o9WXeVxtwt9oMTU1BuhqCs0eQQTohlCAZbnYNuArgZ3Vzkg4VZt4ccsxRK3R+yNztnzCGJBOOMLfksUH6SaK2YcFIAFNOhZKhwytmARpZckOoBFvbJ96ZXCdYmqeg3cyXerUjBw== X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(36860700016)(23010399003)(82310400026)(1800799024)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: IXSIVm7VkDmsea7y2EplvAnbx1eSPGfgGjFZ3NCK9vFPOfoWv+pT1oIYcKeNPdMtMbfUG+o+WDTyHs8ST/8NR4xehU/d1YEtGdG1LL16EQcnNjFmpVasY4ZLmBn9sf4Auj0UJ27QCUQdvYgaBIBGUJkPxPOWWnunzENmwAeQGDUG7A8cKbn0SychZ7HhdeLarJ6AZ64Rj1fVCnkvjhtrmO6Q8bXtADAiDPLbe7FBrXrQsvrLGOimMk3nFPPxqzqhum71keENGKGp3UiRhr+7KevVZijGhJZEOpggRFCs2EkpZlM2b1ET3o+hWRK/I5oRkrVK7tji8chDZhcOq7mUxKQD7P+mJwCVQ14rQMz1J9bRx4fULg97tIslqQzW07USYWf2SUP8RKFLQp8D+LIF1XHBWgxzLslxzSv7Z+LJ7iD8eB/7Jz0KjfCdcJCAd4hJ X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2026 07:31:00.8297 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 03d36de9-bfc3-4bc6-0faa-08dee0b0b04e X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7; Ip=[64.62.143.114]; Helo=[smtp.corp.axiado.com] X-MS-Exchange-CrossTenant-AuthSource: BN3PEPF0000B075.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR18MB5646 Received-SPF: pass client-ip=2a01:111:f403:c10c::1; envelope-from=kchiu@axiado.com; helo=SA9PR02CU001.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, 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: qemu development 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 @axiado.com) X-ZM-MESSAGEID: 1783927920244158500 Content-Type: text/plain; charset="utf-8" Add EVK axiado-scm3003 built with AX3000 SoC Signed-off-by: Kuan-Jui Chiu --- hw/arm/Kconfig | 5 +++ hw/arm/ax3000-boards.c | 56 ++++++++++++++++++++++++++++++++++ hw/arm/ax3000-evk.c | 27 ++++++++++++++++ hw/arm/meson.build | 3 ++ include/hw/arm/ax3000-boards.h | 28 +++++++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 hw/arm/ax3000-boards.c create mode 100644 hw/arm/ax3000-evk.c create mode 100644 include/hw/arm/ax3000-boards.h diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 411ea90bfe..6ca172d750 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -732,3 +732,8 @@ config AXIADO_SOC select AXIADO_CLK select AXIADO_SDHCI select UNIMP + +config AXIADO_EVK + bool + default y + select AXIADO_SOC diff --git a/hw/arm/ax3000-boards.c b/hw/arm/ax3000-boards.c new file mode 100644 index 0000000000..4b8deec15c --- /dev/null +++ b/hw/arm/ax3000-boards.c @@ -0,0 +1,56 @@ +/* + * Axiado Boards + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/arm/ax3000-boards.h" +#include "hw/arm/boot.h" +#include "hw/arm/machines-qom.h" +#include "qemu/error-report.h" +#include "qom/object.h" + +static struct arm_boot_info ax3000_binfo =3D { + .loader_start =3D AX3000_DRAM0_BASE, + .board_id =3D -1, +}; + +static void ax3000_machine_init(MachineState *machine) +{ + Ax3000MachineState *ams =3D AX3000_MACHINE(machine); + + ams->soc =3D AX3000_SOC(object_new(TYPE_AX3000_SOC)); + object_property_add_child(OBJECT(machine), "soc", OBJECT(ams->soc)); + sysbus_realize_and_unref(SYS_BUS_DEVICE(ams->soc), &error_fatal); + + ax3000_binfo.ram_size =3D machine->ram_size; + arm_load_kernel(&ams->soc->cpu[0], machine, &ax3000_binfo); +} + +static void ax3000_machine_class_init(ObjectClass *oc, const void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + + mc->init =3D ax3000_machine_init; + mc->default_cpus =3D AX3000_NUM_CPUS; + mc->min_cpus =3D AX3000_NUM_CPUS; + mc->max_cpus =3D AX3000_NUM_CPUS; + mc->default_cpu_type =3D ARM_CPU_TYPE_NAME("cortex-a53"); +} + +static const TypeInfo ax3000_machine_types[] =3D { + { + .name =3D TYPE_AX3000_MACHINE, + .parent =3D TYPE_MACHINE, + .instance_size =3D sizeof(Ax3000MachineState), + .class_size =3D sizeof(Ax3000MachineClass), + .class_init =3D ax3000_machine_class_init, + .interfaces =3D aarch64_machine_interfaces, + .abstract =3D true, + } +}; + +DEFINE_TYPES(ax3000_machine_types) diff --git a/hw/arm/ax3000-evk.c b/hw/arm/ax3000-evk.c new file mode 100644 index 0000000000..a170848871 --- /dev/null +++ b/hw/arm/ax3000-evk.c @@ -0,0 +1,27 @@ +/* + * Axiado Evaluation Kit Emulation + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/arm/ax3000-boards.h" + +static void axiado_scm3003_class_init(ObjectClass *oc, const void *data) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + + mc->desc =3D "Axiado SCM3003 EVK Board"; +} + +static const TypeInfo ax3000_evk_types[] =3D { + { + .name =3D MACHINE_TYPE_NAME("axiado-scm3003"), + .parent =3D TYPE_AX3000_MACHINE, + .class_init =3D axiado_scm3003_class_init, + } +}; + +DEFINE_TYPES(ax3000_evk_types) diff --git a/hw/arm/meson.build b/hw/arm/meson.build index 0254b82df1..8ee5307a91 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -112,6 +112,9 @@ arm_common_ss.add(when: 'CONFIG_VEXPRESS', if_true: fil= es('vexpress.c')) =20 arm_common_ss.add(when: ['CONFIG_AXIADO_SOC', 'TARGET_AARCH64'], if_true: = files( 'ax3000-soc.c')) +arm_common_ss.add(when: ['CONFIG_AXIADO_EVK', 'TARGET_AARCH64'], if_true: = files( + 'ax3000-boards.c', + 'ax3000-evk.c')) =20 arm_common_ss.add(files('boot.c')) =20 diff --git a/include/hw/arm/ax3000-boards.h b/include/hw/arm/ax3000-boards.h new file mode 100644 index 0000000000..4a632661e1 --- /dev/null +++ b/include/hw/arm/ax3000-boards.h @@ -0,0 +1,28 @@ +/* + * Axiado Boards + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef AXIADO_BOARD_H +#define AXIADO_BOARD_H + +#include "hw/core/boards.h" +#include "hw/arm/ax3000-soc.h" + +#define TYPE_AX3000_MACHINE MACHINE_TYPE_NAME("ax3000") +OBJECT_DECLARE_TYPE(Ax3000MachineState, Ax3000MachineClass, AX3000_MACHINE) + +typedef struct Ax3000MachineState { + MachineState parent; + + Ax3000SoCState *soc; +} Ax3000MachineState; + +typedef struct Ax3000MachineClass { + MachineClass parent; + +} Ax3000MachineClass; +#endif --=20 2.34.1 From nobody Sat Jul 25 21:59:21 2026 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=axiado.com) ARC-Seal: i=2; a=rsa-sha256; t=1783927947; cv=pass; d=zohomail.com; s=zohoarc; b=LeCBWwkFnY+zNT1DCjcFT5UFFInL9tElOr2cpvGT4B3u3vLBhI3KPemDjvcyKMhWJkacHVIFKbiwPT7x9mLRhi+WnAXeSGmwUNVBTW1EZLehWA0vGMe8j0Ry0P9thdI7M7xKVHUUU+Vz4SnoSap86O4rRnIpO93z+Nmw4DAFAN4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783927947; 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=OXFQ9VLbGjfbZydWJTLhpjjNszdUPuFJlosjTayLub8=; b=C+03IYq1FTWNe/cV8SP9PpVrqgBuYz11pZg0ml+R/IQE50Y+R2LEqMJAjnko2xdkVEy04ZUg2g1COUUO2kh7KsbeuEnsi/ySGddeIQfy1OCkGiPyCtKUXWNcTLQJyvJJp46I08MBlDovPGOl3KwYFrsfKi/PNIR4yUSJsTUqByo= 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=axiado.com) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783927947596702.5644711275602; Mon, 13 Jul 2026 00:32:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjB8F-0003vw-Da; Mon, 13 Jul 2026 03:31:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjB8B-0003ud-47 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:31:11 -0400 Received: from mail-southcentralusazlp170120001.outbound.protection.outlook.com ([2a01:111:f403:c10d::1] helo=SN4PR2101CU001.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 1wjB88-0001XS-3I for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:31:10 -0400 Received: from CH5PR05CA0002.namprd05.prod.outlook.com (2603:10b6:610:1f0::8) by DS4PPF05465846B.namprd18.prod.outlook.com (2603:10b6:f:fc00::a85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.202.18; Mon, 13 Jul 2026 07:31:01 +0000 Received: from CH1PEPF0000A34A.namprd04.prod.outlook.com (2603:10b6:610:1f0:cafe::44) by CH5PR05CA0002.outlook.office365.com (2603:10b6:610:1f0::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:31:00 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by CH1PEPF0000A34A.mail.protection.outlook.com (10.167.244.5) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:31:00 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 1A5EF4186B52; Mon, 13 Jul 2026 00:31:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=usdzbPiIrhJbBNaC4a1QGXjvIvYioFFSwMgfeYsO0CwN0s8f8OpmDoNVfhtwQ9jqSi6n8/kKuL59n0usxy/Uv8opbtIQjrjtWB8pNUoeFapiVK1z2+GvE/pLi4Ol4SlFvhwO/bjFoPvRYhQYsJ3mg04bhsxRdB3NFtZ8YLDpuUmhNGq7fq+ibgEWgziKnFIXyyZQtdkpUuK5w/FdmfY9qtlKbiAxRXAqJjSrKp7+aBhTzVDVB1RiS7bi4Rfqg8TuSNXgBdKk0fPIiuQW3mZVUol7n1kON+EWTiV4TuM+bIqq2AJC3vyvCtyVLatL6plUmSnKcZUQ1LyILWaH+G/DTg== 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=OXFQ9VLbGjfbZydWJTLhpjjNszdUPuFJlosjTayLub8=; b=bboA+pkz2f01GA7K0TtICIoPddbrJ0jEkoDJfWLe9MY9BJ7RS/nj55eRg4Pw5WHrK8jjBj0bF01xzIG8JX3V/4PaDSSj1X4Bd3WNMbdGCOGmGa44OJG92cNgKobzEUOfIVEMYKUkR2cigj/xQvEFozCtIXbCRIW+JweqOpYEQQDudrfvMW3QC49u4EsP9aK+bVpaxRAxpKqxICXZRHCHpK6rQ26wS4Jc8cyzGap6b9FRGAWvMW7qmak+QoozHOEK97Kv9RocPCCJp+3sJkfs66MGlBZ4QWv9KGEdo+1oAmq7snftuo5EftDe/c+woUp4KUULpkSClahhk1MNVKRvWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 64.62.143.114) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OXFQ9VLbGjfbZydWJTLhpjjNszdUPuFJlosjTayLub8=; b=PrUOxq+ecTFsY5jRi1MdzOZL9u/xSSRUmxdl5WBrXmseruJnZGJI+9ouQGgDP1ZIzdkeXXU1NbFd4Rzco5L06lmeSUmUlwvxKIK6m9jaEaI3nzHxH8T46erX06VVFNIj7QfxflxbcDdlHD59u/nghj534LonO8tXst1noQFlXHwzjVEzBUcOK+HiaSMI4ffy7S894+IwD5LhGaPkpV/qYFtLgoICzCzppeIQhBjp43cocN1RFKg0c9BYtuRcoAHAWFB4bWG1i7C5TYCmyXJLF/SyhxzA5VZwWssQGTVs2pgqJAQjPMy/A3uBVcsNIHLaJe1ilaaUkg6TCItwbc8BYA== X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 64.62.143.114) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.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=lists1p.gnu.org; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 64.62.143.114 as permitted sender) receiver=protection.outlook.com; client-ip=64.62.143.114; helo=smtp.corp.axiado.com; From: Kuan-Jui Chiu To: qemu-devel@nongnu.org, peter.maydell@linaro.org, philmd@oss.qualcomm.com Cc: Kuan-Jui Chiu Subject: [PATCH v7 7/8] hw/gpio: Add Cadence GPIO controller Date: Mon, 13 Jul 2026 00:30:32 -0700 Message-Id: <20260713073033.3883619-8-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260713073033.3883619-1-kchiu@axiado.com> References: <20260713073033.3883619-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH1PEPF0000A34A:EE_|DS4PPF05465846B:EE_ X-MS-Office365-Filtering-Correlation-Id: 4a658a02-c849-4051-cd44-08dee0b0b03a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|36860700016|82310400026|23010399003|376014|3023799007|6133799003|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: j6VN5NJDk2Ryi8lPbGdMeKbWtuCfZZBNY+RvrgDxuAABwX1kUl0OsYt2WATmVU0V1+plWQXCheEIeE4AeFREiXW4l8mNgLesslYIcMSqUMiUoaXhImbLuaI2FEkDlfZJ/4f03wdaFiKFlPqd24TBcsDX1TaxILYSZS0QW4W2XOmdv4aLk3KgW4XXJWfo9JG5PJ94AW68P2OJqcA/pbXeHue0fmmzWj+t67F0R31WNarR90gZWYypofoKgA0bL1GtTI3KmzjP/I975X2npF6C8gsYzyg0VAzFU2JqSGmI8cvk05E0EL3v3xE6BcdysUOUjhQ184Gw8CDLZyGgNJi4mTL0IoP5yTfLgVR37MY/H3TKTZjCblp7MttZ2EeHQu/yoHs1jf9rACzbjhM9vXaqOfBCs9eUuXDjtDM4EIXaU/v4WFW9Bp+8WSF+5NL21IaslD+ftLrw7ySkKEt6NB9mfwWigAhJAhopDiJrrFULgh0EaV2tNt40aA5Qnwng8XfcD5ltsrpJd9UH2C/v87Zt5jpNAyBLYcOUzoLefeV01qBIte7dNvDVOmNNhnDRFD0DHpaxydT9iUJXug0okawf1G5lqR945E9nMMxEKMwBUqU2zzGNNqrYR+aDr4hD+KcTB6bhs08sndgZarYM+3pvlUF7AnLDwZGq1h4s8E0eQjTOykPqLKhJt+osG0ER+hEAIuWyHhwsXXiGUntpxCI2Og== X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(36860700016)(82310400026)(23010399003)(376014)(3023799007)(6133799003)(18002099003)(22082099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZwJR5xqQ2gClcP+WQjVr7A5U20XWmbScdwRnl47HjKKiFrPBgKKmSYMbncn+Sq/GrNFoQTmC/Kpj1342h3s9iFoAtM0WUqnXTudOFLvYN8W0fROYd1Fqrtds6iGNJK0wW4//PVJOaGSrACj2UHwYtrpsmG+awUalDownLC/hmyeKnORtHo+OYF0O63jscNn1UB7fRl9Wzna9cDwKaDPBg1BsnTA8l7TyrO0hHJVwqMZNxHekqdNRB16FXjjfmswFUrA/I2k6h2ZeJihU1I9oMFnJzJZ3OyUB1QvvB2KkuYBvTnKqiOPQ7ERE/0e4l3s6ghJlhzCN1cYuJynyOoC2VoNOiiGeNveMhqbidZNpvD2gDl/aGO+95UZZDY4xrItZLwuNsMr9lxi4p5V5Y6py79GI2g7ThgbPSXh7JIb9npavzlwPBxoSIGqsLdH3rics X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2026 07:31:00.7326 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4a658a02-c849-4051-cd44-08dee0b0b03a X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7; Ip=[64.62.143.114]; Helo=[smtp.corp.axiado.com] X-MS-Exchange-CrossTenant-AuthSource: CH1PEPF0000A34A.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS4PPF05465846B Received-SPF: pass client-ip=2a01:111:f403:c10d::1; envelope-from=kchiu@axiado.com; helo=SN4PR2101CU001.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, 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: qemu development 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 @axiado.com) X-ZM-MESSAGEID: 1783927949955158500 Content-Type: text/plain; charset="utf-8" This patch add a new model for Cadence GPIO controller which supports 32 pins and interrupts for level-triggered/edge-triggered type on input pins. Also define new trace functions for analysis purpose and new configuration = to enable this model. Signed-off-by: Kuan-Jui Chiu --- hw/gpio/Kconfig | 3 + hw/gpio/cadence_gpio.c | 292 +++++++++++++++++++++++++++++++++ hw/gpio/meson.build | 1 + hw/gpio/trace-events | 5 + include/hw/gpio/cadence_gpio.h | 55 +++++++ 5 files changed, 356 insertions(+) create mode 100644 hw/gpio/cadence_gpio.c create mode 100644 include/hw/gpio/cadence_gpio.h diff --git a/hw/gpio/Kconfig b/hw/gpio/Kconfig index a209294c20..fcc7c70bd5 100644 --- a/hw/gpio/Kconfig +++ b/hw/gpio/Kconfig @@ -30,3 +30,6 @@ config PCF8574 =20 config ZAURUS_SCOOP bool + +config CADENCE_GPIO + bool diff --git a/hw/gpio/cadence_gpio.c b/hw/gpio/cadence_gpio.c new file mode 100644 index 0000000000..ce8256b381 --- /dev/null +++ b/hw/gpio/cadence_gpio.c @@ -0,0 +1,292 @@ +/* + * Cadence GPIO emulation. + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/gpio/cadence_gpio.h" +#include "hw/core/irq.h" +#include "migration/vmstate.h" +#include "qemu/log.h" +#include "trace.h" + +static void cdns_gpio_update_irq(CadenceGPIOState *s) +{ + qemu_set_irq(s->irq, s->isr ? 1 : 0); +} + +static void cdns_gpio_update_isr_with_inpvr(CadenceGPIOState *s, uint32_t = new) +{ + uint32_t new_isr =3D 0; + uint32_t any_edges, rising_edges, falling_edges, deassert_mask; + + /* + * If ITR is set, this is level triggered: + * set corresponding ISR bits when IVR matches new inpvr value. + */ + new_isr |=3D s->itr & ~(s->ivr ^ new); + + /* + * If ITR is not set, this is edge-triggered: + * If IOAR bit is set, trigger on any edge; + * otherwise trigger on rising edge if IVR is set, + * trigger on falling edge if IVR bit is 0. + */ + any_edges =3D s->ioar & (s->inpvr ^ new); + rising_edges =3D s->ivr & ~s->inpvr & new; + falling_edges =3D ~s->ivr & s->inpvr & ~new; + new_isr |=3D ~s->itr & (any_edges | rising_edges | falling_edges); + + /* + * In bypass mode or if this isn't an input pin, the corresponding ISR + * bit is forced to zero. + */ + deassert_mask =3D s->bmr | ~s->dmr | s->imr; + + new_isr &=3D ~deassert_mask; + s->isr =3D new_isr; + + cdns_gpio_update_irq(s); +} + +static void cdns_gpio_update_isr(CadenceGPIOState *s) +{ + cdns_gpio_update_isr_with_inpvr(s, s->inpvr); +} + +static void cdns_gpio_set(void *opaque, int line, int level) +{ + CadenceGPIOState *s =3D CADENCE_GPIO(opaque); + uint32_t new_inpvr =3D deposit32(s->inpvr, line, 1, level ? 1 : 0); + + trace_cdns_gpio_set(DEVICE(s)->canonical_path, line, level); + + cdns_gpio_update_isr_with_inpvr(s, new_inpvr); + + /* Sync INPVR with new value */ + s->inpvr =3D new_inpvr; +} + +static inline void cdns_gpio_update_output_irq(CadenceGPIOState *s) +{ + uint32_t is_output =3D ~s->bmr & ~s->dmr & s->oer; + + for (int i =3D 0; i < CDNS_GPIO_NUM; i++) { + if (extract32(is_output, i, 1)) { + /* Forward the output value to corresponding irq */ + qemu_set_irq(s->output[i], extract32(s->ovr, i, 1)); + } + } +} + +static uint64_t cdns_gpio_read(void *opaque, hwaddr offset, unsigned size) +{ + CadenceGPIOState *s =3D CADENCE_GPIO(opaque); + uint32_t reg_value =3D 0x0; + + switch (offset) { + case CDNS_GPIO_BYPASS_MODE: + reg_value =3D s->bmr; + break; + + case CDNS_GPIO_DIRECTION_MODE: + reg_value =3D s->dmr; + break; + + case CDNS_GPIO_OUTPUT_EN: + reg_value =3D s->oer; + break; + + case CDNS_GPIO_OUTPUT_VALUE: + reg_value =3D s->ovr; + break; + + case CDNS_GPIO_INPUT_VALUE: + reg_value =3D s->inpvr; + break; + + case CDNS_GPIO_IRQ_MASK: + reg_value =3D s->imr; + break; + + case CDNS_GPIO_IRQ_STATUS: + reg_value =3D s->isr; + break; + + case CDNS_GPIO_IRQ_TYPE: + reg_value =3D s->itr; + break; + + case CDNS_GPIO_IRQ_VALUE: + reg_value =3D s->ivr; + break; + + case CDNS_GPIO_IRQ_ANY_EDGE: + reg_value =3D s->ioar; + break; + + default: + qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Bad register at offset 0x%" + HWADDR_PRIx "\n", TYPE_CADENCE_GPIO, __func__, offse= t); + break; + } + + trace_cdns_gpio_read(DEVICE(s)->canonical_path, offset, reg_value); + + return reg_value; +} + +static void cdns_gpio_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ + CadenceGPIOState *s =3D CADENCE_GPIO(opaque); + + trace_cdns_gpio_write(DEVICE(s)->canonical_path, offset, value); + + switch (offset) { + case CDNS_GPIO_BYPASS_MODE: + s->bmr =3D value; + cdns_gpio_update_output_irq(s); + cdns_gpio_update_isr(s); + break; + + case CDNS_GPIO_DIRECTION_MODE: + s->dmr =3D value; + cdns_gpio_update_output_irq(s); + cdns_gpio_update_isr(s); + break; + + case CDNS_GPIO_OUTPUT_EN: + s->oer =3D value; + cdns_gpio_update_output_irq(s); + break; + + case CDNS_GPIO_OUTPUT_VALUE: + s->ovr =3D value; + cdns_gpio_update_output_irq(s); + break; + + case CDNS_GPIO_IRQ_EN: + s->imr &=3D ~value; + cdns_gpio_update_isr(s); + break; + + case CDNS_GPIO_IRQ_DIS: + s->imr |=3D value; + cdns_gpio_update_isr(s); + break; + + case CDNS_GPIO_IRQ_TYPE: + s->itr =3D value; + break; + + case CDNS_GPIO_IRQ_VALUE: + s->ivr =3D value; + break; + + case CDNS_GPIO_IRQ_ANY_EDGE: + s->ioar =3D value; + break; + + case CDNS_GPIO_INPUT_VALUE: + case CDNS_GPIO_IRQ_MASK: + case CDNS_GPIO_IRQ_STATUS: + /* Read-Only */ + break; + + default: + qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: Bad register at offset 0x%" + HWADDR_PRIx "\n", TYPE_CADENCE_GPIO, __func__, offse= t); + break; + } +} + +static const MemoryRegionOps cdns_gpio_ops =3D { + .read =3D cdns_gpio_read, + .write =3D cdns_gpio_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .impl =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + }, + .valid =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + } +}; + +static const VMStateDescription vmstate_cdns_gpio =3D { + .name =3D TYPE_CADENCE_GPIO, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT32(bmr, CadenceGPIOState), + VMSTATE_UINT32(dmr, CadenceGPIOState), + VMSTATE_UINT32(oer, CadenceGPIOState), + VMSTATE_UINT32(ovr, CadenceGPIOState), + VMSTATE_UINT32(inpvr, CadenceGPIOState), + VMSTATE_UINT32(imr, CadenceGPIOState), + VMSTATE_UINT32(isr, CadenceGPIOState), + VMSTATE_UINT32(itr, CadenceGPIOState), + VMSTATE_UINT32(ivr, CadenceGPIOState), + VMSTATE_UINT32(ioar, CadenceGPIOState), + VMSTATE_END_OF_LIST() + } +}; + +static void cdns_gpio_reset(DeviceState *dev) +{ + CadenceGPIOState *s =3D CADENCE_GPIO(dev); + + s->bmr =3D 0; + s->dmr =3D 0; + s->oer =3D 0; + s->ovr =3D 0; + s->inpvr =3D 0; + s->imr =3D 0xffffffff; + s->isr =3D 0; + s->itr =3D 0; + s->ivr =3D 0; + s->ioar =3D 0; +} + +static void cdns_gpio_init(Object *obj) +{ + CadenceGPIOState *s =3D CADENCE_GPIO(obj); + + memory_region_init_io(&s->iomem, obj, &cdns_gpio_ops, s, + TYPE_CADENCE_GPIO, CDNS_GPIO_REG_SIZE); + + qdev_init_gpio_in(DEVICE(s), cdns_gpio_set, CDNS_GPIO_NUM); + qdev_init_gpio_out(DEVICE(s), s->output, CDNS_GPIO_NUM); + + sysbus_init_irq(SYS_BUS_DEVICE(obj), &s->irq); + sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->iomem); +} + +static void cdns_gpio_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + device_class_set_legacy_reset(dc, cdns_gpio_reset); + dc->vmsd =3D &vmstate_cdns_gpio; + dc->desc =3D "Cadence GPIO controller"; +} + +static const TypeInfo cdns_gpio_info =3D { + .name =3D TYPE_CADENCE_GPIO, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(CadenceGPIOState), + .instance_init =3D cdns_gpio_init, + .class_init =3D cdns_gpio_class_init, +}; + +static void cdns_gpio_register_types(void) +{ + type_register_static(&cdns_gpio_info); +} + +type_init(cdns_gpio_register_types) diff --git a/hw/gpio/meson.build b/hw/gpio/meson.build index 6a67ee958f..0555f44b6a 100644 --- a/hw/gpio/meson.build +++ b/hw/gpio/meson.build @@ -19,3 +19,4 @@ system_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files('= aspeed_gpio.c')) system_ss.add(when: 'CONFIG_ASPEED_SOC', if_true: files('aspeed_sgpio.c')) system_ss.add(when: 'CONFIG_SIFIVE_GPIO', if_true: files('sifive_gpio.c')) system_ss.add(when: 'CONFIG_PCF8574', if_true: files('pcf8574.c')) +system_ss.add(when: 'CONFIG_CADENCE_GPIO', if_true: files('cadence_gpio.c'= )) diff --git a/hw/gpio/trace-events b/hw/gpio/trace-events index cea896b28f..80ca783a03 100644 --- a/hw/gpio/trace-events +++ b/hw/gpio/trace-events @@ -46,3 +46,8 @@ stm32l4x5_gpio_read(char *gpio, uint64_t addr) "GPIO%s ad= dr: 0x%" PRIx64 " " stm32l4x5_gpio_write(char *gpio, uint64_t addr, uint64_t data) "GPIO%s add= r: 0x%" PRIx64 " val: 0x%" PRIx64 "" stm32l4x5_gpio_update_idr(char *gpio, uint32_t old_idr, uint32_t new_idr) = "GPIO%s from: 0x%x to: 0x%x" stm32l4x5_gpio_pins(char *gpio, uint16_t disconnected, uint16_t high) "GPI= O%s disconnected pins: 0x%x levels: 0x%x" + +# cadence_gpio.c +cdns_gpio_read(const char *path, uint64_t offset, uint32_t value) "%s:reg[= 0x%04" PRIx64 "] -> 0x%" PRIx32 +cdns_gpio_write(const char *path, uint64_t offset, uint64_t value) "%s:reg= [0x%04" PRIx64 "] <- 0x%04" PRIx64 +cdns_gpio_set(const char *path, int line, int level) "%s:[%d] <- %d" diff --git a/include/hw/gpio/cadence_gpio.h b/include/hw/gpio/cadence_gpio.h new file mode 100644 index 0000000000..ed3f77b894 --- /dev/null +++ b/include/hw/gpio/cadence_gpio.h @@ -0,0 +1,55 @@ +/* + * Cadence GPIO registers definition. + * + * Author: Kuan-Jui Chiu + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef CADENCE_GPIO_H +#define CADENCE_GPIO_H + +#include "hw/core/sysbus.h" +#include "qom/object.h" + +#define TYPE_CADENCE_GPIO "cadence_gpio" +OBJECT_DECLARE_SIMPLE_TYPE(CadenceGPIOState, CADENCE_GPIO) + +#define CDNS_GPIO_REG_SIZE 0x400 +#define CDNS_GPIO_NUM 32 + +#define CDNS_GPIO_BYPASS_MODE 0x00 +#define CDNS_GPIO_DIRECTION_MODE 0x04 +#define CDNS_GPIO_OUTPUT_EN 0x08 +#define CDNS_GPIO_OUTPUT_VALUE 0x0c +#define CDNS_GPIO_INPUT_VALUE 0x10 +#define CDNS_GPIO_IRQ_MASK 0x14 +#define CDNS_GPIO_IRQ_EN 0x18 +#define CDNS_GPIO_IRQ_DIS 0x1c +#define CDNS_GPIO_IRQ_STATUS 0x20 +#define CDNS_GPIO_IRQ_TYPE 0x24 +#define CDNS_GPIO_IRQ_VALUE 0x28 +#define CDNS_GPIO_IRQ_ANY_EDGE 0x2c + +struct CadenceGPIOState { + /*< private >*/ + SysBusDevice parent_obj; + + /*< public >*/ + MemoryRegion iomem; + + uint32_t bmr; + uint32_t dmr; + uint32_t oer; + uint32_t ovr; + uint32_t inpvr; + uint32_t imr; + uint32_t isr; + uint32_t itr; + uint32_t ivr; + uint32_t ioar; + qemu_irq irq; + qemu_irq output[CDNS_GPIO_NUM]; +}; + +#endif /* CADENCE_GPIO_H */ --=20 2.34.1 From nobody Sat Jul 25 21:59:21 2026 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=axiado.com) ARC-Seal: i=2; a=rsa-sha256; t=1783928222; cv=pass; d=zohomail.com; s=zohoarc; b=fcWckkcypOM4bIcbuaPnCQTdlK/O0DcAeTvdRxKGwNumEVuu65Q+mzEeYnpXKJIbiH65kcAbW5FxkegctpGn2GHegAc4RaKKdjuMGXCDjom/kcHCEbZMlYJ7gZEdkfcTJaOzkzjl4EukoyBF3a+Zxwv9oiG8sxdt+wvr2sFPv/Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783928222; 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=A8LPj80EayICM+oa6/m0qK1KwuNJEbUpX5jns8DGTBg=; b=ZoyPZMMspfTZtG/dr/2tMCYJWbSwtiI0P8N3l2yr7LcILTFH6NbHNeaj7JbcSi/nwzJQwfKqS1/AneJcAQWw0Dh+1HBAYEM55wJcK31/3syNvRhZxRimHRqceCIeJpsD4rmgPvEQxd/BTXjz+lxxoF05UUjLTVC/azFUk5jeOcI= 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=axiado.com) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1783928221990972.3153360617622; Mon, 13 Jul 2026 00:37:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjBD6-0006IV-Lg; Mon, 13 Jul 2026 03:36:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjBD1-0006HK-Gf for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:36:11 -0400 Received: from mail-westusazon11022084.outbound.protection.outlook.com ([52.101.43.84] helo=SJ2PR03CU001.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 1wjBCz-0002vU-Nj for qemu-devel@nongnu.org; Mon, 13 Jul 2026 03:36:11 -0400 Received: from SJ2PR07CA0011.namprd07.prod.outlook.com (2603:10b6:a03:505::20) by CO1PR18MB4697.namprd18.prod.outlook.com (2603:10b6:303:e4::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.202.19; Mon, 13 Jul 2026 07:31:00 +0000 Received: from BY1PEPF0001AE1B.namprd04.prod.outlook.com (2603:10b6:a03:505:cafe::2e) by SJ2PR07CA0011.outlook.office365.com (2603:10b6:a03:505::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.202.19 via Frontend Transport; Mon, 13 Jul 2026 07:31:00 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BY1PEPF0001AE1B.mail.protection.outlook.com (10.167.242.103) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.223.9 via Frontend Transport; Mon, 13 Jul 2026 07:31:00 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 494094186B59; Mon, 13 Jul 2026 00:31:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CwCSIxQJXtX6vC1q1iKWLnRja2B1nuqzavqtb4rQcF+kw5gdej/qAt/dOsCxVCTB/DVnV6JLW7LubmeF4PIL9I6gXY5xHoKtMfG/7O6wFWGa1RzuVkscbT9fqHgur1VxwWbj6G/mW8doZidcnop/W0elZefHmtBPNpBHDqMegN4TOcDqm+AB0/ISt8cikbp8eYR4/jbPAuXg9tgeBzxi9DeOVA7++KC5iUbSrwjfY1hwOfmY1tXsNjy/T3b+1hby2cRXLrLPObU7SzM/+7Ly6mFM04+4J1gUlVPvXEd3dYjwKCjTyNuI/euMPWMnorb670Wi+fsprvSlcXBxHGfY+w== 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=A8LPj80EayICM+oa6/m0qK1KwuNJEbUpX5jns8DGTBg=; b=xWSp2TOK/xAdxODrE6Qb95D3TUg20V1S596DBQOxdJIlFWGURLW+NjFJBoT2DEzD8neuMx6KDBRl2efc2+OqY31DiVnNY5oC61nE+MOpd61KlPDSDY9prMzJ+0mnQyKUgRLsriivSco3avgeh7fJdmxQ9W5R1GcVV31tWrtAFCa9pXJaMuqB5l9BWktLBBuP6UdOJJOSE7EnVrwpRHOfWeglGzQNML3v39x9NgiN3mvf7gQbRp+sbsxL82djblL41wfKt+GhWK4U76ZTtzQ/8vf9Xxgxwm9ciK0yq2iIt8jo29Udw7nXOxUsZ4fteznc6x9uJBq6k8D29TIMS/cYwA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 64.62.143.114) smtp.rcpttodomain=axiado.com smtp.mailfrom=axiado.com; dmarc=none action=none header.from=axiado.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=axiado.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=A8LPj80EayICM+oa6/m0qK1KwuNJEbUpX5jns8DGTBg=; b=ibEAPKyeBw4ht/AChNvVarr+vABK7MGjMV8cmWwALa/A73MOd+OHyxrfWGPKE6B1ZiBIcm5ndpmI3HurGwJfj5bn49LwvL1caKpppsfRjVlZTlfoXH6yquGB3zavBmtJpQs3SkTvVQD7xPuL1ns53JpBVa7Hj0OO0oFh/4cnIxB+/blvTbikfuNec2zbCnx2UnJDE02KB5sODxZonT6iWbV5CBW6aRFUnhLpZkKulp1sm4PcEia117cr+gdK0ykSQ1EPkcXxb8Pt4zjpvKTVtK+BZLHvgK3yLSREcTWsxMVOBN4PGHPAhoOqXQASFsQ+3fcQ1BXCSCpFzDWg6rvsdg== X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 64.62.143.114) smtp.mailfrom=axiado.com; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=axiado.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=lists1p.gnu.org; Received-SPF: Fail (protection.outlook.com: domain of axiado.com does not designate 64.62.143.114 as permitted sender) receiver=protection.outlook.com; client-ip=64.62.143.114; helo=smtp.corp.axiado.com; From: Kuan-Jui Chiu To: qemu-devel@nongnu.org, peter.maydell@linaro.org, philmd@oss.qualcomm.com Cc: Kuan-Jui Chiu Subject: [PATCH v7 8/8] hw/arm: ax3000-soc: Enable Cadence GPIO controllers Date: Mon, 13 Jul 2026 00:30:33 -0700 Message-Id: <20260713073033.3883619-9-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260713073033.3883619-1-kchiu@axiado.com> References: <20260713073033.3883619-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PEPF0001AE1B:EE_|CO1PR18MB4697:EE_ X-MS-Office365-Filtering-Correlation-Id: d1ee5608-937e-40be-911a-08dee0b0b00f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|376014|23010399003|82310400026|1800799024|6133799003|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: ttDC/pjIldyuzXtkLqrmgOjS7GQL9GSRYS9AhDXT65MV3HAJ/NPrw9udyogX9p/R/+Clr4mbUcDIoI7U+gq6ueww8qLsHWO+WMTX2R1D25YxoQYggPph6w8k1/nTA6WoeVpEn47EwMTE9R0HaQxnITHyv12TXqpVrzN54YLg/T8oiepCg3rlXDefJQEFJyjMw4ilEzlFbRU/xb/ii/Pb9IPMII4z2Ta8TlgxMN9GqJTTH7WTQwOCDUrDkLQWusCooAb+caM9CHaphLybmwg/CcRj+ksmWQLcl4pPwQcRryLGiHEpuuw4DDpsVffWp/1MTEwwrRg8nArBaW7iRxXNifUqqTpUcRdiWqmO41wqwDVApPKOhcaEZtM4gWcU99PKfvRetshyNvo9Mdk8i8t5PZgsEwa6zJU6p1xjAfsz5DhiZoslBrb1/3Id8yuzy5YVZCDwSiKhu1lt9Tpv+NfVssXNljXpKH+WjCYQLIYYCQUXov/D/FE00TTE1XJ4iUUq18+c/1cBxCd/186+Hl6I1SfwvdSlR5WrbN8SQexes4ZNJ4YWEkhZNEdyUqdk4lLQruX4R/Ke9YSpzFAPXbIrNGn0TPPS53A06/0+VspeMppIfPdtDDn0IE8Cyk9nyW13HF4loYhuw0QPvODaDOsE3IRBcgl1W2hKHSLG9FCzDif2JRZW0kC00JoQTbtjQXQogLgjgEP/fMWCPThy9Esx8g== X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700016)(376014)(23010399003)(82310400026)(1800799024)(6133799003)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BpywM/0tUoJ08S/eZ17WqU5VZrSomSIFsxMFN7XGP3eFQKozZpDc7404qJ3U7Nd0OUo3e8s+9OzgmCzlAPK2KHQoHVg3DZGSoCX+JWOSdEwbbqQPog+A7ypkWZwPdvcSsoq/hqFui3kCiJLz2lBDJQNy7i+cG7c1cxPDxVnEkPSyDkMT+GAiRGNFaRc+A6ozMGPHyTRBaqDHUuMAFcCo/1d/0covduuGsQU2SO1ygGP/JkKfbgbfanHVR7qsayD029KFVzoVJK6REvkMFEA5wxSKcZBc4t4JB/f8r4uzerxKaISyOKEfQ6NmNUey3zvDDFbZSNqtJJnBmjkCBvdnV/okQ45xPmamAXUSaym1R9JquQ57aiqKIQ3hVGgniuGKLk7DG5zBYwBgnRbnEPWUfVqJBKj5SYA+lezw1i9QisJbUI1HJeMDyYRkam4M+kTM X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2026 07:31:00.5415 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d1ee5608-937e-40be-911a-08dee0b0b00f X-MS-Exchange-CrossTenant-Id: ff2db17c-4338-408e-9036-2dee8e3e17d7 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=ff2db17c-4338-408e-9036-2dee8e3e17d7; Ip=[64.62.143.114]; Helo=[smtp.corp.axiado.com] X-MS-Exchange-CrossTenant-AuthSource: BY1PEPF0001AE1B.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR18MB4697 Received-SPF: pass client-ip=52.101.43.84; envelope-from=kchiu@axiado.com; helo=SJ2PR03CU001.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.01, 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: qemu development 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 @axiado.com) X-ZM-MESSAGEID: 1783928223668158500 Enable 8 Cadence GPIO controllers into Axiado AX3000 SoC Signed-off-by: Kuan-Jui Chiu Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/Kconfig | 1 + hw/arm/ax3000-soc.c | 30 ++++++++++++++++++++++++++++++ include/hw/arm/ax3000-soc.h | 21 +++++++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 6ca172d750..b78f362931 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -730,6 +730,7 @@ config AXIADO_SOC select ARM_GIC select CADENCE # UART select AXIADO_CLK + select CADENCE_GPIO select AXIADO_SDHCI select UNIMP =20 diff --git a/hw/arm/ax3000-soc.c b/hw/arm/ax3000-soc.c index 23903b081b..71e31c6fb4 100644 --- a/hw/arm/ax3000-soc.c +++ b/hw/arm/ax3000-soc.c @@ -36,6 +36,11 @@ static void ax3000_init(Object *obj) =20 object_initialize_child(obj, "clk", &s->ax3000_clk, TYPE_AX3000_CLK); object_initialize_child(obj, "sdhci0", &s->sdhci0, TYPE_AXIADO_SDHCI); + + for (int i =3D 0; i < AX3000_NUM_GPIOS; i++) { + g_autofree char *name =3D g_strdup_printf("gpio%d", i); + object_initialize_child(obj, name, &s->gpio[i], TYPE_CADENCE_GPIO); + } } =20 static void ax3000_realize(DeviceState *dev, Error **errp) @@ -187,6 +192,31 @@ static void ax3000_realize(DeviceState *dev, Error **e= rrp) &error_fatal); qdev_realize_and_unref(card, s->sdhci0.sd_bus, &error_fatal); } + + /* GPIOs */ + const struct { + hwaddr addr; + unsigned int irq; + } gpio_table[] =3D { + { AX3000_GPIO0_BASE, AX3000_GPIO0_IRQ }, + { AX3000_GPIO1_BASE, AX3000_GPIO1_IRQ }, + { AX3000_GPIO2_BASE, AX3000_GPIO2_IRQ }, + { AX3000_GPIO3_BASE, AX3000_GPIO3_IRQ }, + { AX3000_GPIO4_BASE, AX3000_GPIO4_IRQ }, + { AX3000_GPIO5_BASE, AX3000_GPIO5_IRQ }, + { AX3000_GPIO6_BASE, AX3000_GPIO6_IRQ }, + { AX3000_GPIO7_BASE, AX3000_GPIO7_IRQ } + }; + + for (int i =3D 0; i < AX3000_NUM_GPIOS; i++) { + if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), errp)) { + return; + } + + sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpio[i]), 0, gpio_table[i].addr= ); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio[i]), 0, + qdev_get_gpio_in(gic_dev, gpio_table[i].irq)); + } } =20 static void ax3000_class_init(ObjectClass *oc, const void *data) diff --git a/include/hw/arm/ax3000-soc.h b/include/hw/arm/ax3000-soc.h index 52b47aa829..344fcb6f3c 100644 --- a/include/hw/arm/ax3000-soc.h +++ b/include/hw/arm/ax3000-soc.h @@ -13,6 +13,7 @@ #include "hw/intc/arm_gicv3_common.h" #include "hw/char/cadence_uart.h" #include "hw/misc/axiado_clk.h" +#include "hw/gpio/cadence_gpio.h" #include "hw/sd/axiado_sdhci.h" #include "hw/core/sysbus.h" #include "qemu/units.h" @@ -38,6 +39,15 @@ OBJECT_DECLARE_TYPE(Ax3000SoCState, Ax3000SoCClass, AX30= 00_SOC) #define AX3000_SDHCI0_BASE 0x86000000 #define AX3000_EMMC_PHY_BASE 0x80801C00 =20 +#define AX3000_GPIO0_BASE 0x80500000 +#define AX3000_GPIO1_BASE 0x80580000 +#define AX3000_GPIO2_BASE 0x80600000 +#define AX3000_GPIO3_BASE 0x80680000 +#define AX3000_GPIO4_BASE 0x80700000 +#define AX3000_GPIO5_BASE 0x80780000 +#define AX3000_GPIO6_BASE 0x80800000 +#define AX3000_GPIO7_BASE 0x80880000 + #define AX3000_TIMER_CTRL 0x8A020000 #define AX3000_PLL_BASE 0x80000000 =20 @@ -46,6 +56,7 @@ enum Ax3000Configuration { AX3000_NUM_IRQS =3D 224, AX3000_NUM_BANKS =3D 2, AX3000_NUM_UARTS =3D 4, + AX3000_NUM_GPIOS =3D 8, }; =20 typedef struct Ax3000SoCState { @@ -56,6 +67,7 @@ typedef struct Ax3000SoCState { MemoryRegion dram[AX3000_NUM_BANKS]; Ax3000ClkState ax3000_clk; CadenceUARTState uart[AX3000_NUM_UARTS]; + CadenceGPIOState gpio[AX3000_NUM_GPIOS]; AxiadoSDHCIState sdhci0; } Ax3000SoCState; =20 @@ -72,6 +84,15 @@ enum Ax3000Irqs { AX3000_UART3_IRQ =3D 170, =20 AX3000_SDHCI0_IRQ =3D 123, + + AX3000_GPIO0_IRQ =3D 183, + AX3000_GPIO1_IRQ =3D 184, + AX3000_GPIO2_IRQ =3D 185, + AX3000_GPIO3_IRQ =3D 186, + AX3000_GPIO4_IRQ =3D 187, + AX3000_GPIO5_IRQ =3D 188, + AX3000_GPIO6_IRQ =3D 189, + AX3000_GPIO7_IRQ =3D 190, }; =20 #endif /* AXIADO_AX3000_H */ --=20 2.34.1