From nobody Sun Jul 26 12:29:02 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=1782108402; cv=pass; d=zohomail.com; s=zohoarc; b=OHwijYMt/FB6ySSpsnpU8i2rg3cxCpx0QuXQF2fDGK6eCmNRV7IYzpwKDAva1yj/q5IokQGN8rQroxxXDChh5T1zTuei/ULPF7dWg/ERjDalYu8asSw9a0r6tiA95HL0LQ8NJFaMY5I7tkAG99Xn/kyi6S3CZgm8NO+PDWavCaU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782108402; 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=GhYmx5zk4vSfOIGSR58+d1XjDhi9YzdOBQvKqV/Dlyk=; b=ITVbONZn0QaMuylPdbjkkeOhEYpjHrYEPFSGkg+7jUdjqcWub+WtekHCFZWPRogu4nVvSCSRjaNCTboeHXaWoHZwBadvTFJDL6RgMKlgolYvMneTJioVEJtPWJ8LxMwDpWGsFogZp1b57YFNImg9KPVHXtRb94cNisjjq1uM56w= 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 1782108402726274.11553261156735; Sun, 21 Jun 2026 23:06:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wbXnD-0004xK-8U; Mon, 22 Jun 2026 02:06:08 -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 1wbXmn-0004oe-Ks for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:34 -0400 Received: from mail-eastusazlp17011000f.outbound.protection.outlook.com ([2a01:111:f403:c100::f] helo=BL2PR02CU003.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 1wbXmk-0006d0-Mk for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:33 -0400 Received: from BL1PR13CA0372.namprd13.prod.outlook.com (2603:10b6:208:2c0::17) by PH0PR18MB5191.namprd18.prod.outlook.com (2603:10b6:510:166::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.11; Mon, 22 Jun 2026 06:05:12 +0000 Received: from BN3PEPF0000B074.namprd04.prod.outlook.com (2603:10b6:208:2c0:cafe::51) by BL1PR13CA0372.outlook.office365.com (2603:10b6:208:2c0::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.6 via Frontend Transport; Mon, 22 Jun 2026 06:05:12 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BN3PEPF0000B074.mail.protection.outlook.com (10.167.243.119) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.8 via Frontend Transport; Mon, 22 Jun 2026 06:05:11 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 4FB884186B5A; Sun, 21 Jun 2026 23:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=UzL2e683xbjFjdtvwai0MrXo+fWN5rp7x4qB7jkRZMnHFk1zycblz6Uz6n2E0xROoP6AWetIRj7wmb3VTz96EEPo8bq4tx+nn/RwIFwYr9TWR26fWhRGNb2mkcgSVm8WUggYI0ugnT/2YQky9WxpyzuusVt2dw/IT4AnufWKC78ddcA66tFKSOsvrNh8KKxNrXdd9sVEwLg3ILkLCbGvIpkRbd12kCZxpwM2a+9p41gL3JRnDg1grrJ7nUVmoPALyAB64sEAZ5o+Oa6c0sScjIXZcHZB9sSRWGdOqIYdBo6VcjhOi4dsHTAXsCEZuUAkV/dkQZNOMbFaIVqI/cbJRw== 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=GhYmx5zk4vSfOIGSR58+d1XjDhi9YzdOBQvKqV/Dlyk=; b=HSZRwfxRhf1PubY/D3AZ7FjPd9BoBl3wNZNeZSh19ftsOMKgo3S4VFsftRAzIwetBpZjSfk7PQ7e2nnX1EY6l5lNF/zMUFLkEJydZxeXAyDCERZ4spaVdiPGiy8xtLqtJCcmBUkCPIhIAOIHWOt0lgw4LYTLAXj2u0e7e+MJ1nBBdvHONcD/l6njNp3mbd+hdBH5KsxIgCBsiICwcrnGs1C+j1F0ikLh20py5Kn0++3MIMsVJC6S8Rn8W69HzxtmgCN4iLxPJg1qv30NPIvrOAvKhNFhVuHtoi5lsOsvhGKKLr1rV5LWHh1N2iwX7XUvBTMtQp+BN68rx83zYzJe3Q== 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=GhYmx5zk4vSfOIGSR58+d1XjDhi9YzdOBQvKqV/Dlyk=; b=nTkeu6sp5deN26VjL2EgCiafCsWwOsY+Q0pqFyloTdtUU3stk/MrPF3QYZLv6yKOzKP9hhY1I4g449Iw0lNHRljwTMrU7OYJFZfJ7La/mZE4BbfL23OJlmjIEUO7ZL7uDmlAxQp2S3w4VzxDsz4la9Khv7wdn+a6xNN08ys9JBUUDQvDEtng4lFoPOmN17UFq3t5zpmSAd06x6Q95ANhUrQ68+RHetyiUDHDt+ux6Svz4+f6nrJ5xLg5KLstalrv5IvRVOb0nQXHERLaK4fLz5mROGPmHA2V2tIbP9I21mQjK1AZ1Mzw6V+ap99K/PgC2JSV6Dz+ptoKmG8J7nj0HQ== 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 v6 1/8] hw/arm: Add Axiado SoC AX3000 Date: Sun, 21 Jun 2026 23:04:59 -0700 Message-Id: <20260622060507.83195-2-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260622060507.83195-1-kchiu@axiado.com> References: <20260622060507.83195-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B074:EE_|PH0PR18MB5191:EE_ X-MS-Office365-Filtering-Correlation-Id: 5a7902ed-db26-4c5a-e417-08ded0243888 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|23010399003|36860700016|1800799024|376014|82310400026|5023799004|22082099003|18002099003|3023799007|56012099006|6133799003; X-Microsoft-Antispam-Message-Info: 1dhS9A1iPYDfqCNPLQUMludshyLaN7M4h3UdOQi4L+nQdbiAh74uNF1/ItC71v62q3cuUhjMdyPfCHS1Q1PVjDitqUOCUEjSYC+ffOzpAmQNM5b48lg6NKoW34YWYoanp797u2uh7rqjDdzVn+X/kpmsjz0Ai3a+0Jb2gMXV+FSQHfwwSqUjAswnN9mux1O9UdA3L20PcGNMRoL1GII1LiaO0WSDH+38JJD8frQALo/6fixCGgasbdXXiwO2W0q1EcG4B4EJTXUP8I25unaV8/wXaantQWxblo/tx9gNwS4EaA3nrUM/p1/aG2yY+zrDzPWc2o2BmtlgKRvHAWAkojXHFiRhn9smJyXMSvUkNCsL7AwFX5N/+/as7VeKCrFJAgDz/fkRpMavsxBYfIrLTkHwBzNY3VTCmyHC3CSv4syczpP3FGmUn50iSXsk2jdo0P/yiB/Z/qZwwAj8InAFtKeM65/UZHrVvXALegJuAifkLLkQtoKAAavco47q4xD4oWgvRlYj05WXYJ+l6I+ghx9+8LVj9OGq6ot8ExnGoqaoFnuBJetFio9vPIlUIhs8gzwDHmtRnezStJDxaVE1ZlXseeWKdvc3SaT4TF7LKFg8q8Qz1oc04F7qMJTHcXij4mJzyLZHY5qLPNXBwtc6cMYdpT2jgg+Q1c2vGMNt0LKQmRaxfKsJtpqEbVXoFhaK/MzRet1Ljc1hGzgctibc9A== 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)(36860700016)(1800799024)(376014)(82310400026)(5023799004)(22082099003)(18002099003)(3023799007)(56012099006)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +PT+N+XEF7XJX2pMQVw7FYjtOZECCU/Zb0/9szuDeXmkEPNF4K3nvFzqZHjoXdaZ7SRU+yR0axBzT1LMo4eKHyQUWJhgMzfA2j2ffkLfa1GGwfgHOTH7asgXpzQVOyMw7hTjFNNkAEoJ31zNwFGa6xdWf8ifqCklvYXheyGHbQIG8o1BCjWB0Ac2YySgXJ6rw1pdtQyu5qYJ62r+F6XIfkf1dhMKGb5Rr9MoCk7ZclCpfW1WHo/oVB7GPmR9bWxVYa+4iApXqX7p4Kkwfo1L3bSnNd7cDFBqZFKYSEN+u49mPjRZl/zy+wZND3I/LdLV5HRLlCD4Mn4SwYVp2Da5U1ELEim+bOUEqxMkUlODtkWCj/ECzA1kx/JlkBKsdrgpDoartEoqUxrrp8jS2PeHfyXCGKaC2cOoY6nvC1hdAJ1V1fb3DgxypnrDLJCBoBNR X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2026 06:05:11.7332 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5a7902ed-db26-4c5a-e417-08ded0243888 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: BN3PEPF0000B074.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR18MB5191 Received-SPF: pass client-ip=2a01:111:f403:c100::f; envelope-from=kchiu@axiado.com; helo=BL2PR02CU003.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: 1782108403969158500 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 93df53d87f6..9707a71137b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1294,6 +1294,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 500bfdfe2aa..d4e5df69066 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -722,3 +722,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 00000000000..b528f8af532 --- /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 4233a800be2..0254b82df1a 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 00000000000..b984d7a8ec3 --- /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 Sun Jul 26 12:29:02 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=1782108495; cv=pass; d=zohomail.com; s=zohoarc; b=BWBksjfBlnheTTEgPBBwzC7n2qyT3dVOkgkXn5iD66TU9iokj1gU44d8oTKfFaZ6dSX5NMq2l0FfTHiaRryG+z/uc8pW/wWZ7Hm/sjsd3E7VitL2GY6zSZLzlo0HfobC6x6K2LaA5J450P5WU1uZ5GhZQMOjhywsHGJYsPiMgGM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782108495; 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=1EbES+qilksBHZ2iigsdfMQjchFsfS753R4MTSe1WFs=; b=nTN1pcj4m98W2/bXT/Jw2exTPWtmjZcAaHzhe0SRgRECoTdRzTez/WrY8RY/qsLOazeJ0h5gadO9Lpy0/etKM0TLpigtlmAhVMZN0WZ6ZANITuIfxQDCnYmAXiMWw6+G4AlERx1S28ZsZxhN7C2kau7N9O4hYkWjEicDLAcxmI0= 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 1782108495559341.670132848608; Sun, 21 Jun 2026 23:08:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wbXnR-000536-VU; Mon, 22 Jun 2026 02:06:14 -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 1wbXmp-0004rC-F0 for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:36 -0400 Received: from mail-westus2azlp170120002.outbound.protection.outlook.com ([2a01:111:f403:c007::2] helo=MW6PR02CU001.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 1wbXmn-0006dJ-7k for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:35 -0400 Received: from BN9PR03CA0794.namprd03.prod.outlook.com (2603:10b6:408:13f::19) by CH3PR18MB5672.namprd18.prod.outlook.com (2603:10b6:610:197::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.20; Mon, 22 Jun 2026 06:05:12 +0000 Received: from BN3PEPF0000B06D.namprd21.prod.outlook.com (2603:10b6:408:13f:cafe::4c) by BN9PR03CA0794.outlook.office365.com (2603:10b6:408:13f::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.19 via Frontend Transport; Mon, 22 Jun 2026 06:05:12 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BN3PEPF0000B06D.mail.protection.outlook.com (10.167.243.72) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.181.0 via Frontend Transport; Mon, 22 Jun 2026 06:05:11 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 5FD934186B5B; Sun, 21 Jun 2026 23:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tBQ1H+ikYrgEUi6IyuDMVqyV94qfN/m9TLMW/+QedI7ugmqXwMaDHI1zWxoWeoRjpjNzpXufART/B0sIrqOI8xd/smPHVzw4/5nQylkF6s431SCKtyntdxc9o4ttYbvoMfm2MgjY5sy9l5NqzO7PK2DexHkmE5kHnyAOLTfgRp8WrfC/vZTwYlA7/atGviDE6PYR3l9If+vbn3lFI0b5Q416Ro4QQVCooBdNZ8tHiFL1GBV6SuhiD0fQE1JGsjMH0FNF9XB0X/hl9chUTyXfN61q/jTUVDybFdYv70IfSL+sAEd1Bn1emfSgi84NfXvaB/zS17QmZnE0/aFhzEqfMQ== 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=1EbES+qilksBHZ2iigsdfMQjchFsfS753R4MTSe1WFs=; b=k/JybAZTo04XRbyNCjjL2C7KSbi2dUx9LxXadZV0gfNThf2CysSxHtb4K5dF4wSCZSyshLsy1mnAVGPbAvFU969m/NGwmDb/9s7pEbNK6XIL2kdMAZqjL9K9Klj7uthKMcTceui4eNP/sejN7jyIDuGygAzPiPGB0aqTiulLF9hEraNHEZOHB4Qc1z5EY3Sm6UlLo7L4TQho3FpU6XhU4YJJhXN58UIuPU/7fkDy3fHBCwnPyxNmvWBbtprNYxfj6EVvOhC1MWKOyrgaeTRCOrOuNDRIQ8/WpTthup+hYNT+dOWb5soiThfbkYV9KZWMS/kfALnSc8rMb/+WDeUtHQ== 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=1EbES+qilksBHZ2iigsdfMQjchFsfS753R4MTSe1WFs=; b=tV7ag5n6mNw4ar2JJAImehm23ilRE7mpnmwV6/D86PQ0qRx3VblLOyEwC//a2RTONA+uTeJqfKuE3zuU3nyFyQ/sHwQ3xPg+QjsnPQJwfrdVU1TZ2l/PBKWqyRrydmcsZoQ97Zqtp9wZdQ4fabwRT8UFjM0GQfamSSGwyFNbBnvPvn++UiRU8L9bkJ8mASVm3u24u59Dxa9tAGXSlcVJ98KkofKNnKkTD5SqkeMtLOce/BVhk0s6CvCcR1AKByva+aMiHyGRRAwvYYv4KY7eKIfpqCXpflgITZFsyQjD5KnpJMd00H8S/jx2awAp+L/E84cXwqFgkrHvXEEb6plI9w== 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 v6 2/8] hw/misc: Add AX3000 clock control Date: Sun, 21 Jun 2026 23:05:00 -0700 Message-Id: <20260622060507.83195-3-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260622060507.83195-1-kchiu@axiado.com> References: <20260622060507.83195-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B06D:EE_|CH3PR18MB5672:EE_ X-MS-Office365-Filtering-Correlation-Id: 955c82af-f800-4b97-d31d-08ded02438a1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|82310400026|376014|23010399003|1800799024|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: TwfT3y4dYmnUao70Zq2i8Yw0stL/iKeUinPq+xcB1Y8rJW6zCe5WyHMxaFJwNSuk7jwPIik3lBzSdFaml9aB8QzW9u/RU+qlhqG8Z9rdESpwHXQ064rBwv2IvJaTkLvSLjcruvcAowdIQ9cMji9jZgIsWRXJF1yZTOgg0cvVosLf99CEr6hgCuvfejnAIKaao7AqPO8K+h49e6OW5HMpyTJxU5xlR8gW8a/7Tgp+g2fv5Tevzp9HVfXmi8K4JFIBBiiog5sesvoA8PRWlkGizZHrvUrljHcoy9PC356KdXMTXuM8DflmkOzgnB2jI0aU3uKVIA2rW+oDtKPLNOkdC453SOZTA6HgXCvMni1hM+bYHz4voS/SOzrXFfFi429QURQf/QRaMmeFI3kt4HPPannDp3aMlO6WpCzaaB/4Uot/w3jB8fParb6lctZbrXUd+qE2zuUWEW4sEFOM/d0RYIrihgTlHbORS5ph13a2oSLAphrL3wNT0Si+2qOMoGKHg45vp4uSWbqn578chvYsb4Xvg9VLPEGtzL3ie/fUgnmgIBMleRQhlJ+O2/XyCuJqEUSaQ4dZTyKJe4Phb0ifeZzBlVa6bSvuymHIWLSbYkVZhtnW4b37YsL87x7Dg7pCcY6wDpYkX18j5hE75+Ev5wCjFjAtI1WBe8m2k0opFvynr9PBJj1aogpsuRz1RuJ+rn6kXD2LCD25750z6JuCaQ== 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)(82310400026)(376014)(23010399003)(1800799024)(18002099003)(22082099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xNUpulHLV91+wBlLTlTncqZOlE9jkx5YltrXUVprB4O55LhaCXXZPJlXvvUHij+cabsjDkXdL/yQRyDryMatbYkXIDdRV3l92wV6hYxhd3GELUNLV2BR0oCHsitBwnbuaqtEQ/p78sDYs4f7DuIHnmIex7ELqKHJO70dDH6vpmY4ZCMgCFqyNLVEetTICSiwxGoEGb+ahorLh5cvYCHLeEg/djknENwnt2rkST6qyrLq+nUMx83cufLlshl8JpIPkgqPrZbg1mZUDbPKH5bLfXQecD6BrT8DwqnJg49jPizsgxxOCcqlWMKWem2KoW5SF3guGGKvV7PAJN1fzEmcJe8RYN/ez/ysYZisNKBReYHf5Gthus0Jm5Dfgz27X0e2IFpyczFdY47d8IOaPwZ5t9Vcq97ZCt7RlDvgSYwl/0yjd9gtxTq5Zt9YdHrWOiSa X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2026 06:05:11.8967 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 955c82af-f800-4b97-d31d-08ded02438a1 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: BN3PEPF0000B06D.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR18MB5672 Received-SPF: pass client-ip=2a01:111:f403:c007::2; envelope-from=kchiu@axiado.com; helo=MW6PR02CU001.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: 1782108497802158500 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 1543ee66531..b8860dd3e77 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 00000000000..10b8012a674 --- /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 23265f6035b..e86d9ad6b39 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 00000000000..6e12a509d72 --- /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 Sun Jul 26 12:29:02 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=1782108495; cv=pass; d=zohomail.com; s=zohoarc; b=nR9RJ/8ao6Z9AiyRg19CVSvYuuKeUWqALFxNOO0MDI+iQtyuNACwtNEm/eugB/UTsS6o+BHpVg/UtDdsGiAuf8CspIQttCB3Q+lGCh2CiPFs6Vlg3n22Hh6E1VcVvgqCozyb/HTMV3V2po94YYZu43GycyHHEpn24sTv1ctPKyI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782108495; 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=vj1rMkHpXaqkjA/YdxhdaN81/k09fa+1NYy9vi5oNIo=; b=aKUXHbybLt9n0831sWelUds/boV8CKNtnSlQ4EetmwRIc30b29eZyEN+Q5KphoiMbIW1o0ynjdJlyr4eZG6c0YwaDvFFVMC7pjt1ZKikXsXPuoNlQzcnN/WGTfcwlk/gWPBXJLvKK/lCMtfvB26YhCv4SzdbXeRXlwquBPVfvX4= 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 1782108495721268.649311012024; Sun, 21 Jun 2026 23:08:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wbXnY-000561-Lb; Mon, 22 Jun 2026 02:06:20 -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 1wbXnA-0004yD-S7 for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:06:08 -0400 Received: from mail-westus3azlp170100009.outbound.protection.outlook.com ([2a01:111:f403:c107::9] 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 1wbXms-0006bh-Ld for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:53 -0400 Received: from BN9PR03CA0879.namprd03.prod.outlook.com (2603:10b6:408:13c::14) by SA6PR18MB6224.namprd18.prod.outlook.com (2603:10b6:806:41a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.19; Mon, 22 Jun 2026 06:05:12 +0000 Received: from BN3PEPF0000B06C.namprd21.prod.outlook.com (2603:10b6:408:13c:cafe::a0) by BN9PR03CA0879.outlook.office365.com (2603:10b6:408:13c::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.19 via Frontend Transport; Mon, 22 Jun 2026 06:05:12 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BN3PEPF0000B06C.mail.protection.outlook.com (10.167.243.71) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.181.0 via Frontend Transport; Mon, 22 Jun 2026 06:05:11 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 7D49A4186B5D; Sun, 21 Jun 2026 23:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=npizK0aZbPuwsdtY6DVdXNO79r+fYczNuNai4l5Q/hd/j2ZYTZ5ZYB3IpJRY7FgqWqaQ783r4eqzzUlnY9LaT5jGcsbCgHxFFQhviq4EDXFM1E+E1RHDEtGBMrwb6zW9yyntei2Y2KqKZm0sAExxGzhlNUU0MhZn6Mth0E1dv5JI2AS8cix38cmulMpmJwViGGiGKS1p1lZY2Mn3bIMF6XBwJnFulWmxlslVppwGg/wx6YJymgGxsFk09zER8eoDxCWUXGFOjYHQzy35cK04RxQ9wTcs9ygpwtJCrXycvY+dAjVp3dN1yq5WPobsdsiZ/8hD3Ly82XhhlqPZgrzaUA== 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=vj1rMkHpXaqkjA/YdxhdaN81/k09fa+1NYy9vi5oNIo=; b=wrvNUD/aEq2WfUcae+We6T2VUb9YNciHrgzt+NEuSdZ/9Gz19K/Msx/HRUXC9EjU7W0xedhJy5R5wPOfkecYb8Yf9bLpr+uXAUvEsoSBUqfbvixl9kx2P5z33bXYs1Wt8lXjMfuT8efg6MrSDM+m7HBwQ7rqWTk6c2Pxb1nZ70ev/1WLZnPbN96vTqb8l2owCQtZet5O42woHJjxZue5mWEBInqi4lPoUrvdtINEIwVrMVLBPg8aJpFilJ8St+bJXwW/iNdjlj+ovtLUnBaagYbvaTjFkRr5lfH1ligdXQf6566XDzPb7cyWauia1+cF5NsprlT3LcqUSaFRrU9VaA== 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=vj1rMkHpXaqkjA/YdxhdaN81/k09fa+1NYy9vi5oNIo=; b=IdFs7SkChOSaatfRFyNdfOiRPoCSjfvB9X6NJBtzj1Vv2y5yQV6ipilOw5fzXWfeeW60LNCfLD7Dyk9w+VPUlYDIkUIgTU0wPaKwvbEwnNs5neVvpmtI9RYj5HyuCbn5lTL7Xa9LAWYI4P7geolSRBZX4jqm9oLM6MSJ3Pwcr1A/7hBQzWbAbAvjPIAg9FyqSdDq/p4lktarnjxXKHC3JW80A39w2Fdy+WHlPi7PRYZVlIHAQrTR3aVLxy8WQKhmjpUtl/wP3mYP3e10P7Ov/ht+ER2jsCgRP2a74bOH3wbeft0hTLM2gDvrFeliEkaOIMqX7JKSaSmEMAAKlu3foA== 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 v6 3/8] hw/arm: ax3000-soc: Enable Ax3000 clock control Date: Sun, 21 Jun 2026 23:05:01 -0700 Message-Id: <20260622060507.83195-4-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260622060507.83195-1-kchiu@axiado.com> References: <20260622060507.83195-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B06C:EE_|SA6PR18MB6224:EE_ X-MS-Office365-Filtering-Correlation-Id: 76f4e24f-71e5-4a07-94fe-08ded02438a9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700016|23010399003|376014|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: fJmqLDl5FW1j+w6JWdQP/lD1m3tv6BMVbN0Mq/XZg5tur5Wgdx1fU7tb6eu+3iTZSnqQGRyOB9W0rOUrGS+rrz8iYhXdXx7uBsDzFeIcqwcTgkgXoAIeYApqa6XLrfOoYMj5sLxQknyjsOW8pb5/+TGsFPx886/bnRfclHjbE3Sd2kcRy+TDFlBot+St5hTFG/JxXLIF5W8dKG0Y9LlA3Ip/w/Z3ac8z34w8dYXYS++nnaYH0KDHyrycqAf71GIX2f6XfOnH7p3cEaJJIakjaL4PgqKOyKdSviYku7Ln7Okp+ZH8vqqjA13EX9I1sIbi3eENzxbYkC+wJyVqHIvKCUd4F/dLzxzGS5SVFii82Swum5N4EgjHvg7WdX/MQi7SJQZFzTL7uA8eQ0ujOZwaLgJUrVU+alXwQrhhr53eJAhqofL5hRv/sMLjsM4xdwjYtzKRREb/Aa2Gk5dbVPXuLpsPUn+c3Ivu6fQmtAM6EMKyucI0Ws2i8VTX5yPm99ft7f7C43x3vNiWptsrAjQ8m8JoNNJ1g2zfyRRIaE6p5iGcPL5qUK8kfEHSC5FFB5y3FR4K3JZJGS1daTZnJxoZ3WryZ5LPFvDo/q24uBhcstnVqHyTBJ9HpJw2bGqA6/05hAjNIb1MBlcPF0m4AyRvLt81AWEj0Kw792IAoz3jtjRa/o7j+PTfn063iHIHLxRkrC91/FowVY2A/I6ADrotJg== 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)(1800799024)(36860700016)(23010399003)(376014)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: c3QTYKuRWnjmHvuTwl/0U1DboynO9IFx2Vu8drhqpIddhktjBu25X1M/o2JNjinAnp1DWhhS/fgVD1RGHBpS7E+nwHBDHFH8jB7k/2ZscUwEmXqgJSD75s0PhYlDywIF2nUW0v4nfGkH6XI0oxrQK9K3XdgSvQWE9jvGRm1+EGnkRB9Tijl8LHVt/xB11qPNeZQAn0wQM+//7ZVOy7L1HIRNNDIXweE3WRRvfnY5r+O15LyLHy6H8ItaMgLGp5FNeNod/pgC2aRiPcM1+KVLqovAzkuz07OaEzAPHdYnDLuvH41cUEBjWxxuteTfpoiwgYWOFUAfDwtl5thmKJLp9Y/RJ4ja0xYYqaOjwos0uAHXeyXBN3hg1xDcKV+oDyxW2D324Vw0G5ozhsznizc6eBlyScyhvXPdyjlOunmSZZS9chqzWToqVCjvIwkGMFHG X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2026 06:05:11.9474 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 76f4e24f-71e5-4a07-94fe-08ded02438a9 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: BN3PEPF0000B06C.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR18MB6224 Received-SPF: pass client-ip=2a01:111:f403:c107::9; 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, 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: 1782108497759158500 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 d4e5df69066..63fa8869317 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -728,4 +728,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 b528f8af532..aaeae110747 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 b984d7a8ec3..329aa4e7698 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 Sun Jul 26 12:29:02 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=1782108431; cv=pass; d=zohomail.com; s=zohoarc; b=NNtGE0uTeOTKSkDF4hNRZzkKPEweNW52rosXsWFpdhvUw33zLVtD8UopATgVGySeBfRS9uwPgmrWcqNtS1xAw9QIlT+nQoq6vr94IwNiq+LUGdGInTleLzmSMzpRtgln05xF+myB4R1+FPVcZVHI0DyT2UcobYaE3tcLUqvmJlI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782108431; 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=O6PBDZgfzLGn1ta6uCVBm8jtTlzdblSGuaK/QZH1XYU=; b=ANRU4ZEevGdGUlrmMLU4ox5EQVFJvfq5WYPCQ9fzoc1CIbfnNg08D4+5UHt5Th8CzJJbpFC38Z0bCh4SWOD6rOiabLpn1In+JR1nijoHd1c9+LuSoqLJxB2SGopqwTTLMb+yRSU37nHU59Jan2A5IG4RvpNPmEfjbgWFeta9y74= 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 1782108431409335.55776926237263; Sun, 21 Jun 2026 23:07:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wbXnU-00054s-9k; Mon, 22 Jun 2026 02:06: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 1wbXn4-0004xq-Og for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:53 -0400 Received: from mail-westus3azlp170100009.outbound.protection.outlook.com ([2a01:111:f403:c107::9] 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 1wbXms-0006bi-2q for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:48 -0400 Received: from SA0PR12CA0019.namprd12.prod.outlook.com (2603:10b6:806:6f::24) by CH0PR18MB4244.namprd18.prod.outlook.com (2603:10b6:610:bb::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.19; Mon, 22 Jun 2026 06:05:12 +0000 Received: from SA2PEPF00001509.namprd04.prod.outlook.com (2603:10b6:806:6f:cafe::71) by SA0PR12CA0019.outlook.office365.com (2603:10b6:806:6f::24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.11 via Frontend Transport; Mon, 22 Jun 2026 06:05:12 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by SA2PEPF00001509.mail.protection.outlook.com (10.167.242.41) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.159.10 via Frontend Transport; Mon, 22 Jun 2026 06:05:11 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 8A15940BFE07; Sun, 21 Jun 2026 23:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mxf7m0wc9aFlhDtDvN2ocO+8cCvcLZQEORzacN3ZtKPXSSeeTZHi2suLZ8tgL+4HCjhFvnniaj6RwlQW+J8EjLdV5eR9VKsDk9RbIBloZOVBZg2oVjnY7FdYv6ycwgdl+g41tz0eW8TuR0RKPvDMH3BO5j3Jbu6jTQP/YBBokoQshqpIt14qSMM3wsTlEKnChF8iRhxJt4faZUxKvEiXpLFD7x3NMPPNHPWUsLSdv3jz0s5ol+5fvOzDfhhx/AwuPHfUcc2pmgILXQ05B/SA57yVKLUy5sUbFtX7E2NYMVxIBeSFk863fOkePr//5OzxTBjBhW5no0EM3uEvS+YpNw== 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=O6PBDZgfzLGn1ta6uCVBm8jtTlzdblSGuaK/QZH1XYU=; b=l2CElkewFRkDcDQuz6CJ2ILe1eJzUe9d1rAcuqsc3/i7b8DAyR6BPS8Lu0sNIebOnk75gx3OG++9hlnlFZBvDi6M5+bPc4bXweUA9PJcbvnBhLNAPqG1BCgKwZHQ4/Y67y6UtD6TPvM1V5/fBKtukjdOa4kQzT4oT8VhjkLoQm8OJ+M/wx5AdyvFGkkL64PjxDRrN3YgDianW7AhxAhiqcQDQivO6DgcPL7k8LH+JX3zYzfHhSekHXIJOI+5K4HenM6qPNIvnx4g+eLlT0SO92/mPvQEtZ0NwfY9IKGndglNY8thoP5QyRD2FNke1/5Ih2hpbRWeIQAFNUmA+A8JNQ== 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=O6PBDZgfzLGn1ta6uCVBm8jtTlzdblSGuaK/QZH1XYU=; b=JndM7k+buHIaf/k8k4etYzeaiW5aD9yXEnEtAYwHjiOjGL6GAKa0a+X1hklNN7jITGCPXn3NG2y9Ix8TA+G2s5jHjgosaDLabtBMvPFxL+pZEiDoJ6T+d33d2Y7BxrLhJcXqqUhapXQOMF9ZLhUZ/x5TUuysU/yiHKoIHnHhINs5RG6dznaIjRtzZsHv0TrXeJQllqHvFVJlaOmWGNSpBvfr4efINchOeah1cXhd3Aicm6PFGuAPatF6u0u+P9kvF3rumbuTuQTFsQsUzi6ywUKvdB5kRJ+oMUrLIYilm4vdJiPYwZX1dhrlAJ/+FKvHxGHUCWQcGnimXIV70pT0xQ== 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 v6 4/8] hw/sd: Add Axiado SD host controller with eMMC PHY Date: Sun, 21 Jun 2026 23:05:02 -0700 Message-Id: <20260622060507.83195-5-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260622060507.83195-1-kchiu@axiado.com> References: <20260622060507.83195-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00001509:EE_|CH0PR18MB4244:EE_ X-MS-Office365-Filtering-Correlation-Id: 73cbb248-1db0-438f-5874-08ded024387c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|36860700016|23010399003|376014|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: rMGFlUeuPIRqDBrLvgwWM2JmjwRU35W0ca3Zoqb7+Cf22/iOY0ytiyxDpPl3ywWMD0e/XC/S/UAetmYFPVQRON/vayfu2nFh29EQuUa3kuHWo7J+5F9VQ7MbIeKrkdUZru1C1DLrFsldkF7s1p2K7QdEmaJzr+zr8TLZfyCAnE1G6x/yoDN3168Vu/LCa5+TIwviexO3QRK14rG9X27SOOTRsRivbOFGgbvXFelghWbHxRCiWE35svFVDDxRfUGMxABMWgNzOWCWG5V9UeFKm6XOie2qf/cdTcYtpT0TplVzuM14IMCpsM0l+/NUNGVry4f3prQvuhZnuTr4eI9U9lXFAQIvA9TCGHydnE3xOXwL7+JCwuwiP2ZW114bGwXDh1kUd1X7/8Qy3d7Jmplb/MpPKCH0P/5hiaXkqS6vyA5rZpdpKr3aArSVKDtNVbxeOIODsEs361mGK0bXQAAKyMiQ6mS7brcCx/+rSsg6+s84k/jM1snt9JAsupJkaLC6ygJdGwVD/iDOPC5pucWAKERWPDd4qRC7XcO8X33Z/HvBRhYNlhd7Ng1P+EZk9Q6ECdcX293km04yMObvQpbO3l+i9H9X5V47MXXx3HWascwnwaGeCj3Obe+rxqCVNvN3bnIUn9xABCjSvLF9aKyXMFWpCYh8eXoses+G9vNcYLcnX4gpR2UZecMSYEQMEmG6PlJ71BAt//RnMrtl20S57A== 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)(1800799024)(36860700016)(23010399003)(376014)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vPgj/bCTwOQ2eza/J5KK+8Vtvp9XEyFlrejtV7k5Rkcw4a/ci9l1AXS4SubXS8TS1DMvLS01HeDQDhm8NNqwHdcdnPNNKVxE7KfZPjNoUP7XEgDPOwDJ8EKrMnoxTMMhtlC6x9Gd5KCPS0hvlE6y7AoiTNMBgCJePj5Q8zTMhezJb8hHxSOP5aq4MTQ6l2/wdjgDqDGFxGEybPP2zb2f+X7JJlKcabTvbfbLuL105EZ5SFkwV+TY31RCBHmB1l75zHulpZn57PE+pRkh9c2gqm+eQDH5WyZwPnSp+NrRmf+re+duS2GDP4D3R9yg0rpWhLftWCyEAryGq+sNn6ZAu6zvGcmflA+PweWnEihlB48K12ETD6yWz/iI5K29AVTdnJ3ZqUjPBIEJq+09R5rUNpvAzla9IBnONnelEnuc+yD87zQbBOcd3R81m5H6FqlG X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2026 06:05:11.7007 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 73cbb248-1db0-438f-5874-08ded024387c 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: SA2PEPF00001509.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR18MB4244 Received-SPF: pass client-ip=2a01:111:f403:c107::9; 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, 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: 1782108433594158500 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 9707a71137b..f3a3034f27b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1299,7 +1299,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 633b9afec91..c69bf24f8de 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 00000000000..94c2e044097 --- /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 b43d45bc564..ebf09e30a48 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 00000000000..85afebad931 --- /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 Sun Jul 26 12:29:02 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=1782108467; cv=pass; d=zohomail.com; s=zohoarc; b=iQVbjzAmP9Jhivpju/war2olXY+fvE0p6wb4h3sLJ5Pz/RJAt3uVZXewvbXN0v/llT7cAc7VXeI6wBgF+F+nlf0m92Bwk2o/c3fGpKqDUaMIt4LUnbFUr1j/S5bhqEycsGwMMf3MTPbvBlAyweJrZegYk5nsBiB4srxigp5hRAI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782108467; 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=Ni568zj/C7PiPHH70jIP770vIIailqU/rJvPxyZA9hc=; b=nYok+KDcQbz/2CzhmJ31bc48o1l0AXzwxU1a0moiaG4mo6lcAnBUTnQs/r61xM66ewAhbFK/Usy4dwmbHC8/vmJ2JDoV2ILh6NJtIKpQ1XNfKaHtQ2m0QSYPdKPma+6GT3EhgPX/wSRQ5Tsj0ZwBJQSLWssAOpuDousISD53xyM= 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 1782108467000370.49344355509584; Sun, 21 Jun 2026 23:07:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wbXnR-00052w-Nr; Mon, 22 Jun 2026 02:06: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 1wbXmo-0004qO-V8 for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:36 -0400 Received: from mail-westusazlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c001::5] helo=BYAPR05CU005.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 1wbXmm-0006d4-Vs for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:34 -0400 Received: from PH8PR22CA0009.namprd22.prod.outlook.com (2603:10b6:510:2d1::25) by LV8PR18MB6197.namprd18.prod.outlook.com (2603:10b6:408:263::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.19; Mon, 22 Jun 2026 06:05:13 +0000 Received: from SA2PEPF00001508.namprd04.prod.outlook.com (2603:10b6:510:2d1::4) by PH8PR22CA0009.outlook.office365.com (2603:10b6:510:2d1::25) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.19 via Frontend Transport; Mon, 22 Jun 2026 06:05:13 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by SA2PEPF00001508.mail.protection.outlook.com (10.167.242.40) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.159.10 via Frontend Transport; Mon, 22 Jun 2026 06:05:12 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 985BE40BFE11; Sun, 21 Jun 2026 23:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Cr+jkOJn95T9fKbicKpoGXd9NhcVxKnOoxmnc/utObjjlXtZprUnODGJSU8J0KMVPMuNoc80cEOzeY+l0EVz140DSWBHFqIbgxuUDQul/etovW3YN5CT02CK347XN0oGqENniKgeB4ZMTe4ek66wV3bonFO74c43cgoCtmzIPeFxKqZKCUatkcI8m3iHex68dcJn/xmSSEBSH16eDtQ4MKptkeV46NvJZf+XYF/4u/GMwp2++9YCZcaFmsYiUtWD3anErqOwConDhGmup8P6Ala5wuT7Hl5chACV4f4JsgvkYwUxEGDHg94XGb9bzYOqNLaICkEykq8KCCax2k2HIQ== 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=Ni568zj/C7PiPHH70jIP770vIIailqU/rJvPxyZA9hc=; b=SOymenlDoCNIRWXIVYXXUBM5x/nvKkw2qDZv93CXL+EzzouLLDuD/WCsMMAHmG1onKo2GY8omG+w0BXh2MWHNzcNjxrZypFZKq2h6RneUuZo6+S979OADuSTBbQdLCGIWHA9xN2YQNx/qsaIZMHTj6cQkBCBeEMsEuSk5+mQjvr/M5OIdoV2mbMi+ZM1FUxLZoDKlxjCdkUC/eN8Z1Cv6HgNFxHiKCbT1TP+vpizq+/4QNHLaeP/IoraE6W95Wm/Fwlif//8W04pO1bWPGcGnvnYDNl77qYyQoClTmaaLj7FM5RIP/blZTw0NYsG+gFhEhDM2XxE9zvwnTM8nqCQBg== 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=Ni568zj/C7PiPHH70jIP770vIIailqU/rJvPxyZA9hc=; b=P0q3J/M1/Ln8AdFqoxS8/drWff0TEj9neGVcF6Eqtt4Kb/0SidZeCkpU35ASrgOg+LLH9QohF9K8tjejTHJMatMYQDFDwAtqtPXJwtH1ulHSoNsJPHyDgLYOhf73LGfJvfgCa864nLknh8ZriQhlCB7+pyUrOYcC31uVhj5BhmEOKqITd96hVLyrn5Bo4dojF443lwIni+qznHQrOaHPTiNzUJVaU5wxfG6Tkf5IGY8/kiTUfb1V0pz7fidFw6FlxpWa/cOsY1t1BZuRzzuyoBYlYVBPs9O0Yp5HQWACTSxfgcbgVsSoU1ZTk3RliXCkhhvkU9MedIX0O7VnFN+0lA== 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 v6 5/8] hw/arm: ax3000-soc: Enable Axiado SD host controller Date: Sun, 21 Jun 2026 23:05:03 -0700 Message-Id: <20260622060507.83195-6-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260622060507.83195-1-kchiu@axiado.com> References: <20260622060507.83195-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00001508:EE_|LV8PR18MB6197:EE_ X-MS-Office365-Filtering-Correlation-Id: f28c0f87-c751-4d9c-019d-08ded024392b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|376014|36860700016|1800799024|23010399003|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: Ht0Y/vs20Vm06bvxaojM5GgIw4GuL3M8Aoh97Wcr7a+/KN/kTm+qxlrW7iddu4flkedz+9QuGXalM3e7RoJPNYNuGH6nIWRSsp5JiGoNmL7WyP0skF90DJAlIIiGLh3KmyQ7aOcc3cuGKINYG+WSaHEcL96ULLaYlEDCBPZo815yHmhjeWlPKGYkV5KxMvhcue0fAff0qwvOqeP+HZ2mOGAFl5WV2ua1y/2bC67x/0otHMgm/6YYs79McRRhb9pX7VgkHnvG07HQm3Bg1RgEppFrUfSjSlJaMP3P8OCYGP744VjF2c42AQkOG4HVTklA6S2iuRX5b+nGelMqBOixhdUuBxituztks0ivAaBnIPlqLwoEQXHgS7BmPCbeH03TAWOQpQvdeBt4LCUCPwC9n19rpY8HeXeRf7d3kvHB36r05mc3WKWJf9lqBYWX+1r93EBwRbBqshS7MHD890lL3GoyszcwPN7fQpM6Pq6PCF6fchgtvT29PSJnvzQq1dyJCBX88fP/Qj8/JIN82dncf0Kq0fluQI1iRVRLqFF6T8rHRwsvbuVE3QMmLjDEoS4e3Yki0dfZ6nKV6eTRM+XdZ6DiusvDDmEdrs0S/8BtSN1/t1rrB+mfhAd1VAVzyJUuyEovOwqNSfJ8kdD4oPPBdbFQEuje4iPx0M27lVkw2BvIKPUg5VJt5Vcvd6yqEMnnkdY5AJ4+mlEsNX/e+7igCg== 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)(376014)(36860700016)(1800799024)(23010399003)(18002099003)(22082099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: p7k8omerYvJKRlZjGVRmPFYqJYVcLnfgW2xYSR0A9y0K9T2QcjLoaygLBz3sFKFlI7qGKvY7HIU14yPwBnyxHCEZf015UTnJ8FzGGPrxgLrBdWgoeW6LdHPDqvxAVKNM6x3mACtkkuqCBS4shGwIFAULoZFtmDk3VubYO9yANNVOImKokKSjQVk2hAE32cHSmPQTcTjM3RT2MZFlTuM729+XjPiDfU2OOUNYZ/uCSBMcsiRzhZVFyajC7u4HC8OhwNSySF2SCnAN7PyLDXmmoZXa0QhUCYKkztTSMobJ0FyofXJIz8RmzPwDYbZ2cqY8o4Mx0kkaQnwk/tW8cN+vU+Mwwtc1ZJyAbd9IuOFIrwMZhCvC3RNjnsOq3CrOl/a5GUXGNdzvG48L0RzgEMMdH4KqaI+/DvKDaP4l0pNjFZCnRaGU18HIIon8Od4j/Kgd X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2026 06:05:12.8459 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f28c0f87-c751-4d9c-019d-08ded024392b 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: SA2PEPF00001508.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR18MB6197 Received-SPF: pass client-ip=2a01:111:f403:c001::5; envelope-from=kchiu@axiado.com; helo=BYAPR05CU005.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, 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: 1782108467816158500 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 | 18 ++++++++++++++++++ include/hw/arm/ax3000-soc.h | 7 +++++++ 3 files changed, 26 insertions(+) diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 63fa8869317..4a201dc8236 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -729,4 +729,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 aaeae110747..3a882dd4673 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) @@ -165,6 +166,23 @@ 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)); + + card =3D qdev_new(TYPE_SD_CARD); + qdev_prop_set_drive_err(card, "drive", + blk_by_legacy_dinfo((drive_get(IF_SD, 0, 0))), + &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 329aa4e7698..52b47aa8294 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 Sun Jul 26 12:29:02 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=1782108425; cv=pass; d=zohomail.com; s=zohoarc; b=b55IVlI4UUSYYJQXWJmzkHSETblYtr7F4h6bNCPfOFmetUu7hYchm+vZ4iKJfP4VU+xHQj7cGVCT0sYk4+hX2WjmcYZxlA11W0UpTi4WEQtYm/OaGoK9pziDjRx5x1zBhirX0QOiaB5/Frpsusa63BgB+dsnknNcD9d9EDld+8A= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782108425; 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=/NgG+qZWkkidpb2JlA/wQC0LvebyKzewaQNViEIQvQw=; b=ZBvrdNc+HJG//KJnjrkiZYkejJ2tfb7dMgWtIFLrBG6BGho9x4QmPuaCTynCXn38hMQs17TiSoYFLqxoXVvDwt9E4AZkpPmvq47trIPBac0PECOC9NnwxKak4rvkCaE9FSmHK8dGyMXKfcOowczQvDw+VoeuwGS4a0jhG1aFcmA= 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 1782108425959850.4932680165267; Sun, 21 Jun 2026 23:07:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wbXnQ-00051D-Gn; Mon, 22 Jun 2026 02:06: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 1wbXmn-0004oY-Bt for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:34 -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 1wbXmk-0006cy-Ly for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:32 -0400 Received: from PH0PR07CA0014.namprd07.prod.outlook.com (2603:10b6:510:5::19) by SA6PR18MB6342.namprd18.prod.outlook.com (2603:10b6:806:41d::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.19; Mon, 22 Jun 2026 06:05:13 +0000 Received: from SN1PEPF000397B1.namprd05.prod.outlook.com (2603:10b6:510:5:cafe::9c) by PH0PR07CA0014.outlook.office365.com (2603:10b6:510:5::19) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.19 via Frontend Transport; Mon, 22 Jun 2026 06:05:13 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by SN1PEPF000397B1.mail.protection.outlook.com (10.167.248.55) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.159.10 via Frontend Transport; Mon, 22 Jun 2026 06:05:12 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id A571340BFE12; Sun, 21 Jun 2026 23:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=LqGs/1Wi6nFU3H6kN2zAfy3xGYy8CrrbYtxvbO1BmOP3wiVnIfJN9caUzEIhei/wqaI9+OKDARfCDA7dcV9iocSf8v9YkkA+VJ/PntXQ/mc4c6hT3T7aICVbqGeCG/ErSI/XMHkeb9mD2xUYNKjoYmVNjDqLSqk35VAOisq9npKnh8Wh3rvfEKFHYUnQCL7lEEKP8+s7YtwhYGpfVBf8sa1nnUVYs/ZC8TiqA+7Y87+ciCsXqKyT4OJzz+T+1Dk2FB6HTYjtm23nn7m01o41LUZMEymxwvbvkzbLckY0/gzpVKpczPn/O8Q+bS38TtWm+Dw5DZ4zkZoRwN/z1r1rUQ== 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=/NgG+qZWkkidpb2JlA/wQC0LvebyKzewaQNViEIQvQw=; b=GtkTX3E2xR8gipYh0UmyIkMBNkdlRXFpWmu/i5YoqDggBHoXnBCLxAXMydjCImoz/foAGFjFZSsfxYOHFQ46y+sFekviQ5FKB+AyTbnNT2HHIkzNHzsElGF10zZF7r5L5P/iRcFH0LWIMzi4Xxh17rExawVb6aMiuSY9bh8B+8UydlqGQMLNNMZ3pxRUoxtaYs10IKnVLlOUPhLER7O3CtzZD5D50Rl7pkOg/SqwtkDLgw6EvzEyRSM7DQdv0ft1Eh2c2HyTHVh76CB1sYQByM0uY1k4wnQorUV+u3fI0PsmrWATMJ2ByfSPaNYkBAL1vT+hikhAW7cCpSsAgZhl7g== 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=/NgG+qZWkkidpb2JlA/wQC0LvebyKzewaQNViEIQvQw=; b=nxzxsoQyNbIjjw0MSZ1u6FLDXSnL1veU/PqAmxztOs484zeH5XYlVGHBPNxRnysOSq+ZazRJYscSBog+GrmB9c58hAdIpuyIikUb9UgbvafO7dulAzClt6RbCht9iJDnm2klzw5l68qNV08g9xnFXVTmej7eXFzc5bmJxyasnNICtqeR51JWqJdWYuo0xwH65CaMVuWJQy4UwObY5X8UNd2JHPs+hpa0JjKkY+QKxUJ1d63TamTDgcVoIIDBq1UPlScHMD7Wa1/mAl3yRW8oLKxfZK16joUm1T9MhtdxwNZC6+3GC/Tl7+XmhwYrueMQPCcWyo4BO221MaDvM41CWw== 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 v6 6/8] hw/arm: Add Axiado EVK SCM3003 Date: Sun, 21 Jun 2026 23:05:04 -0700 Message-Id: <20260622060507.83195-7-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260622060507.83195-1-kchiu@axiado.com> References: <20260622060507.83195-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF000397B1:EE_|SA6PR18MB6342:EE_ X-MS-Office365-Filtering-Correlation-Id: 67408699-a5db-44a5-dc33-08ded024393a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|36860700016|1800799024|82310400026|23010399003|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: SRQ2RcN9vHu/HYtStHtjCq5KHp03lHs1lZMNiQx0V+ikHB3ClvH7ntb6eB5EHO1/rdDS9jULwN2+VXZh865nKBArE66hf0b8Bw1r5Ys9+ra5yj9repagh6pZNshmyaKl8zr7JjibAZnjfowNK6yL/D51DBwmZDw5QnYa6S0/1MPCdzO6GNOEST9eR/4mlqCL5g9nx4axTfJVMAq9ynckNFhaxT7yH8m4eChBIkekd0PI2hBjX/av1InjbHX3E8+iFdglKL4VjkkvK41ciaBC/Om1HGAgJsLJQ1WbwGn8zlL+7Vxzu8zkq4QHh2Tl6yYruajm/eoYYtBLAQ+WyLAm5FElK3ZSPfk+xgD2pDmNIZD2WNZWuXnCEOR/VFW0DCXxF1dTMVog4jeUPfk9AqURxyWY7yRxnrlBup3v46NuIO5lUqdwDiF5D+TctM40x5M8U4HQqsJlA9lcMkqlRxio6RM292WhjoZt+Mco7RhL58T+RimexXvTbdcnFZEZCv/fykgDu5puqMRgIAY2z59mX6vYy7PSyntngjTF+QjXXdK+xsqj3KqVmX5tlYPSc1RFj6mBGJeQ5O1hf85h/QiJpeF4yzR2M8hKwOAKabFn84NS0ujkCCzleFPA7TqQals89XZLxk4t+ehhVPDao2QWVfOxuWyjSCIJCKgE3ynQX0pNQA+vzlA6U9H3d3zNCpXMp/7fjOAqf6M/XnxMlaEIYQ== 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)(82310400026)(23010399003)(18002099003)(22082099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: pKSiRCtJ3JxG0V04cr/b3h4VE8VdHcyNefaItIPPnT/qFcEvHWCW9YGPSwiZBIvTySNKFaxGIa8WZMXEPz2fEKLJv19rYQNvc63NUv/SgP3rJ0wY3wPiYJ8aw4OXpjDnhjSJhwK+g3ppt7ylXqqGkamT9wMsqJT6zl5yOpefCGofFr7a14rFtwqBZ/ZWJA4GMe2sVjjnM4ZldibRSVcrXWddLBDSeaibEXNz2JTm4mU3dYfVe5LLJbQu+H2TQzwisWfWSlawUypEMmpVWoKICHMY9yHl6rMA4Oh2nS1EdZNwTcBd+nKXHAYkEFkOyyf0UlzlVDKYwRDJD07E6lTqaJUJi/g/6U2P6ndbKFS1RZJ0XBoavkOQ/vNoSPauwoLdfYhmm45HXhrAlVcySs0pFdLG+aSsbmNsb9zoRaKRQ7tD6Ym3SuIMiUD3WR1JgFET X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2026 06:05:12.9491 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 67408699-a5db-44a5-dc33-08ded024393a 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: SN1PEPF000397B1.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA6PR18MB6342 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: 1782108427750158501 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 4a201dc8236..c63c57fd18d 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -731,3 +731,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 00000000000..4b8deec15cf --- /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 00000000000..a1708488710 --- /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 0254b82df1a..8ee5307a919 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 00000000000..4a632661e1e --- /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 Sun Jul 26 12:29:02 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=1782108417; cv=pass; d=zohomail.com; s=zohoarc; b=IP5oGG7zqm0i0u23Lh/6OSqL0vouj/eDWzeeK3HXAZMuOsfKgkbmIqske2S9HAwQv6JNZWclYnQJszlhYQSBu8pt0Tz3TM/G8zCjSZscEeObrvtNuWwuguBgpHhtOgRmXgNMcXYUTLAGdMKXYcLWAS9ezhBXQgMqjdMz8vD8iPw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782108417; 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=AG1ansV0CUtjHs6A6pOD9+gFy1I9aWqswt4hrJSt0x8=; b=L8gcA6OvXTwx2XSwbSTHV/wD6zc3ly++LKesVvphXxIKYhoerk0bYe2PUBbCUQfZJ0p02AOrWlXKMu+mOkzTZuxvGVh1RpAbEpfkFEYIc3Rbs+sA2G/bNCOooTGqW5sd9RiJ0xyOW/qzJFUOU26PjbldjAiX4jT1MQVrcvg676A= 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 1782108417093960.1638200823958; Sun, 21 Jun 2026 23:06:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wbXnS-000547-VK; Mon, 22 Jun 2026 02:06: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 1wbXmp-0004rA-7e for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:36 -0400 Received: from mail-eastusazlp170120007.outbound.protection.outlook.com ([2a01:111:f403:c101::7] 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 1wbXmm-0006cz-8U for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:34 -0400 Received: from BN9PR03CA0874.namprd03.prod.outlook.com (2603:10b6:408:13c::9) by SN7PR18MB5293.namprd18.prod.outlook.com (2603:10b6:806:2e5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.11; Mon, 22 Jun 2026 06:05:13 +0000 Received: from BN3PEPF0000B06C.namprd21.prod.outlook.com (2603:10b6:408:13c:cafe::66) by BN9PR03CA0874.outlook.office365.com (2603:10b6:408:13c::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.19 via Frontend Transport; Mon, 22 Jun 2026 06:05:13 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BN3PEPF0000B06C.mail.protection.outlook.com (10.167.243.71) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.181.0 via Frontend Transport; Mon, 22 Jun 2026 06:05:13 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id B9FF040BFE13; Sun, 21 Jun 2026 23:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ZljEtRmcB3G+sN1LbZ0J47OQsPk5OP53Uj0Jp3pNv11JN4fk0ELp+stGk6NzpYRss9J35eJs+qFD+KgR7JPqafCRwbKR2c8lhDMgQDb4bdTJS62I8UUVVjRn/g/2ZvOilUKMcVnCyAQrO3nbH6wbiZOi0A5oQdlbYXEGlOD0h+qNreNmPqtO4wp1VmqB9hhb1PZrLTWDb4OV44vkyXRaPUoKSy/NHVca0QqA2kexbJO08k+493zwBdPoi5TNDzEQsEE65Rjf87coEsG2Tdd63VI2AdAkfyxVH/kNH2v13HRYHXsD5VR4z1bH4h7B2cp8GcG7R3sno8eKxts44VoN6g== 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=AG1ansV0CUtjHs6A6pOD9+gFy1I9aWqswt4hrJSt0x8=; b=vKpUamTfX/AW9ygtqVx7T+973H6dIWHEBMCtg7W3jX4cokwBClkTVg8OR1Y9sM5xot69tJ+G7Ju85CjRUEyrQV1wHiNL7g0yecuTjseQV96gGUAgGPcmuXQx8j2nw2lF1UodtisYOcFOyx6SqtdyH8i0XJhnPljpHmQRthhOKX5f/vYkYsbu4RyEayRUjcoAJEby5+V2sHqU6vz80q11MpXRjxCPrww7MAgfgdQt+9Q6gg5238KOVtJ7AJP7ruMLh/tuwujSEQBZherAt6WqcMQm0g/h1Z4iciuw3tXYCRl0lKnForBr/1SMeJShMK/3QlC9FU4NdIVmGwBTvH1Gcg== 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=AG1ansV0CUtjHs6A6pOD9+gFy1I9aWqswt4hrJSt0x8=; b=tf3h5CGxQMsDFQoimU1aR6IBCcGgxoKRG6fu3AvqTuUSrF1qinRaaRYFBrjhRd6hzQoIEvyvwZGf9OuW6oGxXkcVQKttHIHkeY3SC1tRklZ8PC4XBRf7a5XGQJTWscpjLXNhbGnaJk8J3OQVgGtAbiNgnicXA9fyue88kcXm7mny0YEERWFteb+CZupyU5+4NnRiSKeMmsTF5UukYa5y8a47m9EWOHt1Ox5NL0mD0RkKWQYJgl8E2wS8DLlDuSYnYG9pk8WWFLKSj5++g2msLamLey4F3jZsPEPIWbbTLrkWFm2NuETXmYCNa0mC1+PPM4XRZ2EaYd88PQbc/N3eSA== 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 v6 7/8] hw/gpio: Add Cadence GPIO controller Date: Sun, 21 Jun 2026 23:05:05 -0700 Message-Id: <20260622060507.83195-8-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260622060507.83195-1-kchiu@axiado.com> References: <20260622060507.83195-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B06C:EE_|SN7PR18MB5293:EE_ X-MS-Office365-Filtering-Correlation-Id: 19a8fa17-70aa-4dda-c86e-08ded0243975 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|1800799024|23010399003|376014|36860700016|18002099003|22082099003|3023799007|56012099006|6133799003; X-Microsoft-Antispam-Message-Info: fPso6mVzqes6fmMKnINUOpNOpsz6nvTpi0L6nyT5DhzA/6cevGRJw6TL+W5BGo8JZllYnUGpqw0Ol6ItPq4yB5/K8Q4Vmbe09jDvqdfAXThXW8o+fNSQ7KyR44leTSzfquixPXaxBtjqjyMHiTnO9NiuU2TqtWwsbqfNYvfmNdRPF4CyamqkaRTEK3q73LTwUf9RWhe6NLA23kffoiFpX/TLH61XMYvEXOo+VtFxOOiFHwunI8LXPfR+KSZDp100JQqFX+vR1MdScGYPqjhl3eRwMr/nI10lX2er9bzvrSI9IcvrKtMSd7FYHI0sKhy8HCpB+kiiQtN0as8xPLeaGZWAmnD4HR0rb2AKfdvlSD8EfI+aJtlEZfV51MIZKWvQWG2XNxLxbEidGM01AL83RkN6SCssoPgdnOTGvImxdgo1Zu16jvf3gqhtlHA5bGh3j0+EOhJ+/TqqgEoJKiC8fe4lhtybkSRVhg79A5kipITellsJ/FtvAt1O29/5i8RLm3rXiHoo7S/D345NZvwUIJaRfjt1RPqQuaQo/JkGdrDB+mtD7jcktLq96SITBjeKXXie06LthL07SIvX630Rj3k6yWnxaCAPNHvQ4q+kPRaJvdEGKdv9nDSxUi9Zrail0kDW43+4qmQObfr6S/hZNCV4/DSI6SaIULBx04fO/i3yDtGOAm3a15pssXqAoP3mWCnq2rz61hVCs3hr7Bc2jA== 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)(1800799024)(23010399003)(376014)(36860700016)(18002099003)(22082099003)(3023799007)(56012099006)(6133799003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: p+sfeDA+UAH3Qsqde9dHdZkPJ1dvfL0O6ySAZDq0MYPzgj0PnEzZwv0Wc3jK2ruWbBgBqGh3R9/I+iGU1p8+kHlikXGsnAsANmRyWTXHofqqXRqRATTZXECWQXxWJJkRQ2Tde82pdJE25PAMIJ+eAHH0JQlz/K/4aO9tgm4iRF0eQCKAc0IdhNw6vJFoam7BumQkTxx6XKTB9uhB7oNq5rS1NCeV3puz0TAX8M4yggYo8ciLCQ05N6gJHs4gWJ8C41++35LHmo3OMueWc5xP9+P6Vv9uAMbkwY2RXSFNrWNz4PcvWa9ApipAkXJhuXlia9xFwzLDD9fzYpIFbNBESsJ5kmXKMO3KWg+wNuf1QeMMGgIJkaxpt3wok2KWs/VoWc+lj3nLXnoW5cfyqXrgfCV29RE/BAMkRuv5XgWxfy9HkhSkudtmjskWzTrXSMBp X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2026 06:05:13.2853 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 19a8fa17-70aa-4dda-c86e-08ded0243975 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: BN3PEPF0000B06C.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR18MB5293 Received-SPF: pass client-ip=2a01:111:f403:c101::7; 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, 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: 1782108419632158500 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 a209294c20c..fcc7c70bd50 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 00000000000..ce8256b381b --- /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 6a67ee958fa..0555f44b6a7 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 cea896b28f6..80ca783a039 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 00000000000..ed3f77b894f --- /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 Sun Jul 26 12:29:02 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=1782108402; cv=pass; d=zohomail.com; s=zohoarc; b=B8paKwmvA+AP50Z8N170UaZ99Bd3dGkYAkmy8Ck2LgjXUv+pbWs8+2mZFeFmajrReQK8ZpKstnhuOg5SfQOsJkGZdsBUu5fdMTRKJtBkI/AXjO2nYqpJwmUZkc2vqJdJNue1ChBl8ynIf4CgkfvdthtsiXp3T12lyGWe0A5URFM= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782108402; 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=Ih5KlBM31tv7G8Xh1DYmjLXIPinn+btQ9QOz0eBgst4=; b=QhLu8TDXrqc4FOXe0/sGvApz/oTCkocTqYwJ1GHbiTw2a4tyT83dxB06IAorXRUItS9Cqj9wkPPYRzMHXiY5UhIlwHlDm/7nUel0FXA5K7nFrBeTcrxGVwfcMAg69JgWw0iIgxYoa6IAyaIRUshCYwxMvWPZuxu+gyvJF6Ya6Sk= 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 1782108402275403.71039247394003; Sun, 21 Jun 2026 23:06:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wbXnD-0004x9-8N; Mon, 22 Jun 2026 02:06:08 -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 1wbXmq-0004sk-Qn for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:40 -0400 Received: from mail-westus2azlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c005::5] helo=CO1PR03CU002.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 1wbXmn-0006dI-7l for qemu-devel@nongnu.org; Mon, 22 Jun 2026 02:05:36 -0400 Received: from BN0PR04CA0108.namprd04.prod.outlook.com (2603:10b6:408:ec::23) by PH7PR18MB5029.namprd18.prod.outlook.com (2603:10b6:510:15b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.19; Mon, 22 Jun 2026 06:05:13 +0000 Received: from BN3PEPF0000B075.namprd04.prod.outlook.com (2603:10b6:408:ec:cafe::5a) by BN0PR04CA0108.outlook.office365.com (2603:10b6:408:ec::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.20 via Frontend Transport; Mon, 22 Jun 2026 06:05:13 +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.139.8 via Frontend Transport; Mon, 22 Jun 2026 06:05:13 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id CB88340BFE15; Sun, 21 Jun 2026 23:02:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=aE50prvocDTwh5uzRky7fUz79liT7g08Ao5sDkVGDTICJKr9j6GAtSgdSdpk/eLESQvTZC0YgsTI8A6drMe9Tu0Nmo55QfpNQFbxz7tGvZDm7xObCkSDr3zlvX/KoKRmpCzvZnfgqTGSY3s8oxW9AfuFERhS8SeigX21330YGejPJYId/qB1SWkbz2A30b5yRQlP+BVq0F4ZyzsoivO67wd8LpAE4yUpnsNM1qjMmudtL+gHwiq+u6q2voBphxCWSLg7sn0BqmlNSudQ+txuCSBcUNDHlbNVrOvDZYv69MYQfRT0eKCXCiZQtsnEDy4DqSEpJ57avYt0JQH7233HMQ== 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=Ih5KlBM31tv7G8Xh1DYmjLXIPinn+btQ9QOz0eBgst4=; b=h0d2h8UaXXf9I87O3StqMh6UGHOKrTm3HTZYIQ19ftpJaX8GTRNm+/K6X+5LUUf01MMKn68WDF9/d+miyqB/PCuTkvDxPH7/o6zHJCILMEhHL056hH6wTgYAE2rrBminp6MWchTGPg/AY0QrsMoTrMOZBmQEJLidC75LA4jpnmQXozrUN4dUiySMj0O2Dg2Wzkrqx6gwTFyaMoIvJkMhNGUiXs7iuqpyV6Rl3NZgOpJ8sm61PItdVczfXKvtSv39HLIqJChw0h6zRrQzyuIpQ8dlVeUg3cJEWT47cVMguuZ583w59wQP2wBBjEYrLImYTlUiQhmYkkxJVAW7BBNMZg== 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=Ih5KlBM31tv7G8Xh1DYmjLXIPinn+btQ9QOz0eBgst4=; b=GjnTf9qj0wlN+Cc52Doxbog+XYqezLwAmaZzrQIcmd9MJlywgMhX9QNyxYD8FK+7XZHy/WMk5H/SdJESxc37/0VK4ZvnXyH9Rm6ueN22JzaLixjhXaIjnlo+UuYCFgDg85XYnzXAP1gl09KpFLCG4wXnTENvt04e6qWuZLQTfXteTi4moPk4t4nGgUQ4bt4b3PP/TIV29q9WZi/kSdygWyAAY1Ec3twhJ6/ye8UFBM8p0o3Sr8reNX9dJzRo7iQscITEPwtfeHxIp4VSxG6qPNq6aEJRccUIAqvEukafhLt6C1AzTNHJEtB9h0XPYu0SBNRTWIH8l/Fk9qenDr4IuQ== 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 v6 8/8] hw/arm: ax3000-soc: Enable Cadence GPIO controllers Date: Sun, 21 Jun 2026 23:05:06 -0700 Message-Id: <20260622060507.83195-9-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260622060507.83195-1-kchiu@axiado.com> References: <20260622060507.83195-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: BN3PEPF0000B075:EE_|PH7PR18MB5029:EE_ X-MS-Office365-Filtering-Correlation-Id: 460d3879-72c9-463c-7a55-08ded024398a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|36860700016|23010399003|376014|6133799003|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: xF5laY8geHVoey5zvhRMz11KlIGUc0ZCTpkgc19PRREn2ArIcI8pnlUpgyKBvw7LWzy9bRc7Uj117bXJAc8+nyaCiF+lK7WaLOBkBWPd55jOx+rLHwzs35MHrfpLRKg70BNfs0alO408xKG82PPsIFy1foqApdGXCbbavROeR8/XpNeGj70sKzmfYRSE9/pJPt4SU8uzDYRAZYPyPeC3Y+dUvbHBTA30obs0Rh7fG98dRn0Iao5+hL5GCLPo13hYa+omuT/pTEKYCH9mljq3jJOtd+EfVLxGnR6kexcipbBdgSKOBo4Ml5dk9WGYF+jcTJNX57YizzOFlbHDGc4nBrZNjGTyrAU4unHWkyY+guqnxZwIfZeEVXAZjQWG8EFv6y7n2ylP5olD+KvedOAV5VZltlmDvS4+Eefu1pjpOjDvpkp78BYUFGB3rQP/T0zLjgzJJqI694LlhFzbYp3AckzYoIY4T+btsnYnp6rrcDzsga1of5iEzSegBfgkC4iLNupmTshEzgbJTMqaLVOaEdk+IJWb8O31IlZMjzi5t0JR5qd0BrEFUjd5NDoJYtAocWt/MuP6qgyc79/18w5J/H4bUEwcufbDydtLPdKRPQlivQ1xJfPHE0J9YXQe74F3OkHGvHgRce5oHCmYfZP4XgodOtPjB3ky6Wk/VCuE+dG3lUK8O/Ks6HQcrOIo/+b1wqgyWMubboEveAdBUsfGiw== 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)(82310400026)(36860700016)(23010399003)(376014)(6133799003)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FgnLocKYuW3KDwTGBR2GWFb5gpf8OPvNTUaEprA9tuwsK3kSEGbtASCsUW70m8LYBSOwHY9XNOcQdinbDmC40dL0jrNXC62I+qkkTf4QnzY32+MNkoHM5k1KtLiDFodbJqd6x3OgNvBJ/L8QOlMij+U1xvhAMiaFygB3PH0UW2if1jj2tEX8H85l1gyN4f4ggX/P0oshiUteqTJxebHDvI3wLur7ruYMgOp8Xx9xhth/xg01WR13J2/jGx+soULYE4tIDcbePPtBVsosw92X4rMcawOGQ8q+Ts0PzpVYX/kN3qJctfekmCfXmx1Bo6tmPq2N9ozLCman+AogPQxiod8u2Z5B5Y/vwpS/TqLWaEXw5meFzyYUUvzPUW1ipCs8Rt1PzRejJMUlSMHFE83nvIJB3PdWlmVnI6A58fbIxuXnkH8TjwUnwoNMrgyBjl/K X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2026 06:05:13.4219 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 460d3879-72c9-463c-7a55-08ded024398a 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: PH7PR18MB5029 Received-SPF: pass client-ip=2a01:111:f403:c005::5; envelope-from=kchiu@axiado.com; helo=CO1PR03CU002.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: 1782108404024158500 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 c63c57fd18d..749de848b7a 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -729,6 +729,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 3a882dd4673..58d167d0fa7 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) @@ -183,6 +188,31 @@ static void ax3000_realize(DeviceState *dev, Error **e= rrp) blk_by_legacy_dinfo((drive_get(IF_SD, 0, 0))), &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 52b47aa8294..344fcb6f3c2 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