From nobody Sat Jun 20 15:22:19 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=1781777906; cv=pass; d=zohomail.com; s=zohoarc; b=bL1NeQ1QmDuBtvm0sd67GnHdycryAWjBkEubzvH1Xr7KXPwzZodmzPXXmK5YaA+eL2R52eVrJnekYHtFhbhiNZzV0ECTYhEUGhtfnZ8vC9eQGbCBCUlYvH2NzGIP6FAfBzAKAsgzh6xqjI9cDVoyYEV0yDqKW7vXq85O4DarKSw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781777906; 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=lv80HXvVBY3IYtgVq7oXNKrNR9qqrL5oY7XcdR5bb+U=; b=ebdDUeRfCS4PEErohJ6XFs1O9f8Zv56Bdo1DlGk8GIqC1wcF5ckVgWqvQL83iidma8DVW5EYDr0b2DDNxJ7R5nqOW+0x0DdKzUgjYKpCzvNp0zGhgnIEfAh73jhoND52eclAF123wL8n0zZfhfMAhSuKShahq8poMC4B4cRFmAM= 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 1781777906759302.85434058317173; Thu, 18 Jun 2026 03:18:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wa9p9-0000P6-AI; Thu, 18 Jun 2026 06:18: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 1wa9p7-0000OQ-Na for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:18:13 -0400 Received: from mail-westus3azon11021111.outbound.protection.outlook.com ([40.107.208.111] helo=PH0PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wa9p5-0008P0-A8 for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:18:13 -0400 Received: from MN2PR03CA0016.namprd03.prod.outlook.com (2603:10b6:208:23a::21) by LV8PR18MB5868.namprd18.prod.outlook.com (2603:10b6:408:22c::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.18; Thu, 18 Jun 2026 10:13:04 +0000 Received: from BL02EPF0001A0FE.namprd03.prod.outlook.com (2603:10b6:208:23a:cafe::71) by MN2PR03CA0016.outlook.office365.com (2603:10b6:208:23a::21) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.11 via Frontend Transport; Thu, 18 Jun 2026 10:13:04 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BL02EPF0001A0FE.mail.protection.outlook.com (10.167.242.105) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.8 via Frontend Transport; Thu, 18 Jun 2026 10:13:03 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 288BC4186B5A; Thu, 18 Jun 2026 03:10:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=p7Jug1qm/za+FdHI5bVKZmQJHdAAD6LCLdhKOktK57ELeFWKVE+zAOAYB0yfThldIO0/UUfYFkdQ1jwI7rynMjy/+CVodsMF3FHl/efbawh99QkkdwFgSFJgK7UITVaaujJbDldtCyjiikuoKuJoPPQ1Hhmw0eyqK729Nq/sgIG6LHCQ1PA/1VUSYOJRnuHVQvgGwL0GDoJOQflytwu0xppQEkIdiDgZ9e/yxF+/o3AVoyW3kVbx6nAXqeuIdWeweAX83Piinm4nyIfNMSyhjtuNtEVa4ZuE5BOe3RlIluxl1L+e8ncs0K/Zdi0Qo0j5MQ8Nry60DJmeZ80qfIUXYQ== 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=lv80HXvVBY3IYtgVq7oXNKrNR9qqrL5oY7XcdR5bb+U=; b=ddqNY6aomdPfiUIMxul+9NhTGzCvuSnYgUDg/HM6segiOqAEk6PUfYWY4XFswp8d8JYPqh3sXwdWR5ZIKgI9WIFLBT+hmsr3VWdOHw6EoHJcS379Nm/QfpYgnk8SjNpE5ymVedtrTTk8UiYuNWO4CHCFRXcswcVsHF+oc4dBGqCE8ged2FVzuejAn1gGbNatMvpvckCOYleSyvK521HqNXNCuaqkTh4oHlInFAMWyYjbboqTMfxsUcn8SkDAIzqaHlseySHEp7dlD0PV81yrqJMPFNYfPxmQCygL44b8kCBRG0Ph+1pzUrqOsAAkAqLRbKIsdCMV9Gc0dZg7bt7TLA== 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=lv80HXvVBY3IYtgVq7oXNKrNR9qqrL5oY7XcdR5bb+U=; b=vWnz7V0ftmVBoALWk0tx5T5IymcZHUbfdiogc1FoDVipukpyXvC+xgJQYP91uTjbI4rlbwQ+Bz1zwCvzNm3rIQ0/ikOGwUnGmeAu/MlGcdrwDFVxqZYF0z5AAnojU8mYLtm+B2d2xjlxlvNRptEFA5UJn2uWhot5WCPCd6Ajj/JHgzeopI62rbynikUmj136J2fptGDkrKVcqBgHKKUueuRR0FP0CS/9wDGo71aloUJQ7d4C1Lq5xUzjD55iaLhl03tcK0TJT9rdEIr1dQGhaiNa94IEhZjkq0cZWFt/wN7SG9OZKb0ta2MeSjmsejsT8GWqyO4XP3r3ndKeyetjDA== 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 Cc: Kuan-Jui Chiu Subject: [PATCH v5 1/8] hw/arm: Add Axiado SoC AX3000 Date: Thu, 18 Jun 2026 03:12:42 -0700 Message-Id: <20260618101249.2926976-2-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260618101249.2926976-1-kchiu@axiado.com> References: <20260618101249.2926976-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A0FE:EE_|LV8PR18MB5868:EE_ X-MS-Office365-Filtering-Correlation-Id: fd679cc5-82d4-4777-d0ab-08decd222f45 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|23010399003|376014|1800799024|82310400026|56012099006|6133799003|3023799007|5023799004|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: wbYkH7lyOT3h55btRkr43xwv9gUsuz151ZC/gSVaN0KT1QGDOFPO0Ohy/uVmsoZOhvTDrw/YRLtOEopY0kpZEzztPomWktmu4B/6C7BjVhgRWYId23V5jsQi5CSoldOdKuc9MLukCFfDa0NP4+tmkBxoKHoORW2Dt+7cdaNpemaZ6AieHh5pCIYWBekYsXwDQUUiB9p4bAhH51qKNSSDYv0atiDIV6A9QyiuiwIFeCMUbZRk+lcIX8ip7d2WTXP1TMxEZ80PoxKi9HildUlNkTHUG+Kjsepnz+Svw4sFuL04J/BBPyMV9MacXjwiP0Kdg26L+VfuVGU6pi3KAXY4ujQqACHmnnzcegysZu7MaSPPRFtrd20Vx3/jXW7SuvEVRfBqW1G22JMu6Yz1GVsd/v7sEgk86y02apXEyeFuThPYqn1kfyg7pPL7hXRhoCzE3oriqq/+MqB+USudl7BfsIRzqIdjz/d9g6SmDGS75H2J4ca5WV4Wpdfl/GJ7WAHAUx6Ap7JezlMTzDi9vFQtegOYcn0ZPCT1fRBZNZVKLdJWAe+ZHRs7kkbKMi0rZ89j8anCNLelD2IP7teV2znXtpn5a42TZsgg+3Oh+K9cSWsDBwC04c0Ef1BOSQkXH0KGFmj1B7w8I2hsg3N41jsShtnntrhYDKOHgC/5lhNgfNSPUC2QA/56pdChiksBWwp9Ad4hH9p65mlZ2qsCPIFCU2QyoMVxcpgzSvF5OswEkQI= 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)(23010399003)(376014)(1800799024)(82310400026)(56012099006)(6133799003)(3023799007)(5023799004)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NzCESEmL+r0Lb3Uod9DSC2ctbg/AtsA5IRJjFd/peT09j2AC/hSjz819m4+sv576TcAusRhYAoX6gFiZkk2BVv+f/i1s7Vkm+xBCn5Oot+9AJdEMWcjeCN57Kla6QRND2XKnhSw4iHs9bqPRZEwiz3Zyg/wvx0850ojrE0ysGy3xuyseWvsl4pwI+ib4XJ/pTG/lo9vT8xW8Y9QlDawmb20uBlWOK0CBnk2Lt7EPH8FiwRv56XxE6Pn+Z0vNXqXrSy6eUtT3tI1WzFrIEavy24o+NtSaSDG5jQTq5djWowzejZQ3FEZiPPEMub/38A0WnSqIIyuetsOHsdOXj6JlrJ+wHIOK8I8eUKrbvUih60JRJJkmSY3RBCI/vfoRZ+5ZskXho68Tk88YQUjPZDr/JKUuoOBXVD7L9IntA8aWaELs27BiXLMnNgue15lEfHGf X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2026 10:13:03.7202 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fd679cc5-82d4-4777-d0ab-08decd222f45 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: BL02EPF0001A0FE.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR18MB5868 Received-SPF: pass client-ip=40.107.208.111; envelope-from=kchiu@axiado.com; helo=PH0PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, 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: 1781777908433158500 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 2b5b581e173..340428cda55 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 fb798ccbeed..818ffdbce56 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -717,3 +717,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..8e8d2edfb71 --- /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); + + /* + * 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; + + /* + * Mapping from the output timer irq lines from the CPU to the + * GIC PPI inputs. + */ + static 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 + }; + + 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 */ + for (int i =3D 0; i < AX3000_NUM_BANKS; i++) { + 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" } + }; + + 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 */ + for (int i =3D 0; i < AX3000_NUM_UARTS; i++) { + 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 } + }; + + 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 8f66a80e10e..111ab2ba010 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -108,6 +108,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 Sat Jun 20 15:22:19 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=1781777664; cv=pass; d=zohomail.com; s=zohoarc; b=PEm9Q55gdQw77ahQ86TsgFpK+1B2+bP7N30Qrb9Z2P9fehpAP8JBHxJ0CJASaGHaGKvU+0sZor8LAvC+FMVVJM2JaUE+Ep2aAmJo/X/Fl2/rtFuAXlSC5pljqcFXXRh19KMpeNuK95ig8RsFCPKkdiVHOdMetWvp9B5WXtDUiJ0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781777664; 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=V5UMqwes+9OLk6NjQnycuKTc2aB4CYFQMfad4h4Wqt8=; b=mZJObIYGRxucKZgmdvbdoP9A6INqhrsut3QPbyMJQGoqfG3s1Nz1pmA2EsOe3YZENFZfLVmt+Nje4v8tlY0ZR0pcvXMQn/zV6sinGaKnCAQboHArmkvF6b5V2mWJRqQplu1qgCOeLTr+bnn/FoJhJQpq1PcKJUNQolcpWGy8N0Y= 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 1781777664738291.79706252678375; Thu, 18 Jun 2026 03:14:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wa9kO-0005dN-HF; Thu, 18 Jun 2026 06:13: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 1wa9kH-0005c7-9A for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:15 -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 1wa9kF-0006D3-19 for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:12 -0400 Received: from MN2PR15CA0046.namprd15.prod.outlook.com (2603:10b6:208:237::15) by SN7PR18MB3981.namprd18.prod.outlook.com (2603:10b6:806:108::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.11; Thu, 18 Jun 2026 10:13:04 +0000 Received: from BL02EPF0001A0FA.namprd03.prod.outlook.com (2603:10b6:208:237:cafe::53) by MN2PR15CA0046.outlook.office365.com (2603:10b6:208:237::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.11 via Frontend Transport; Thu, 18 Jun 2026 10:13:04 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BL02EPF0001A0FA.mail.protection.outlook.com (10.167.242.101) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.8 via Frontend Transport; Thu, 18 Jun 2026 10:13:03 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 37C3B4186B5B; Thu, 18 Jun 2026 03:10:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dyXbyaCj19iibIwfB9PYrsAT8pQEAYI73pUKDGiuvncqYNoME7gssEkL/tjWgsG9TltJGXgH0cehguYGlROoTJpFoB5+Hytm51VWAnSl8owYQkG8mg8T1fASHjOkFfF3HMM2Za+8VZy2WnM+9QWA38NpVwVe0lTHVE9oOWJzZZ0Tn0fC2xOd3vHO8z3reCb5pz5Vn0U0xHwv62Hwbm2ZlpBv3N9GbPwho/Fi64e9JofON9k6vCY4W9Xv7qYiPLGZKzPSQEzXZ5bqVlu8cyyu/P8VeKvJ23u323I+0iqVUVcm98Ls+HjiwmYRgE3jCGyNedvIvC6T6F2omSKtRNcnwA== 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=V5UMqwes+9OLk6NjQnycuKTc2aB4CYFQMfad4h4Wqt8=; b=k6R0K014rrWRZ7oTlAJemdhWkt1+44ZncyCTZNNOvICWviVhElfIfnf5izZsWcbSC+mnOesMEKhZh69CWid8oYs9XexiXXuckjS2V+q5XCHnjuzlC4mX/DB1GcD4+2ipH3JTDr/gy6Xa21pyeIsfVnB92rgFzq2rAvJXQyQiodD0bXF1WnBOjTW7gv+Wifhk5oznmb2FpfHVpjsIqwqrNbIVNMxcVA8f7J5Me5/YYak10oVzUXAHP6qQczOcyo5LyFcNvj5h2fBBzX1Cyk6eMwdUfY/DeJdZVUdUHish4Yzh6cyrLU1ODYVdUY4Berq13t3jJ5mCrTD+E49xQc/qKw== 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=V5UMqwes+9OLk6NjQnycuKTc2aB4CYFQMfad4h4Wqt8=; b=SvOG0Eh61q5H+ih4XhqFj27KPyizhnoA+i5LnCCFzyoaRunRJflOUvtwwMexVz60bl0U2aksnKOFIpvQRFC6heRdzaSSYTRGOD7UZx9Dcgh+Lv7coc2DnbNzwnuaRU+cqc11DcOOk2mP7GHUWFbEnKoV1H0zDfAknxbTC00h9ixiHTvV0doAth+gBiyqYAlu3O/Dd58/rGlp+SBUQ9A8LQEjVkU2hq80DpXATfSqtI4wovnnlqaAB0S15Z/jpvt0HOnOcTo1lvdwmZgwi3aUgordi1D6sWgjOiyAo/Sx/thS9DDbBrafaOd2Jdr7QP4x3+NXDJgXPVlR2Cuzfu4Siw== 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 Cc: Kuan-Jui Chiu Subject: [PATCH v5 2/8] hw/misc: Add AX3000 clock control Date: Thu, 18 Jun 2026 03:12:43 -0700 Message-Id: <20260618101249.2926976-3-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260618101249.2926976-1-kchiu@axiado.com> References: <20260618101249.2926976-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A0FA:EE_|SN7PR18MB3981:EE_ X-MS-Office365-Filtering-Correlation-Id: e0a88d46-fa41-4e65-7322-08decd222f67 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|376014|1800799024|82310400026|23010399003|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: a8QzBs6ZqQMImu9Sy1B3QjRT1fF9VwrS3ZLaBqND7xGoTml2lnkTdxWl7G5NVGEJ7CcmZ4Pj/zgD6YH1sp5gtsa2w1IdYLxJgLKR+xAblsFkGie3IwPYRft/QptCS8hEGzWHJePeblwe7pQ+ufK9SBH25dlq2+E/Ryl3Z+pQqYRe1b89t92fpLam1jMT7LMRj/Uziig+DuUvyarzfZ7btQs1xASqhkVHS1/ofXKk9t46veg0yd/2wXb76kfbNyUCxXLhoRr4AEjFnnWQbkp/8Er6QRzWuA27lzOdsjWNZfyQAZ1Rw5mKQgAXWk93dV9aN5pPqyIkUh8PjdeiFQJTAE7F0+Ai79kDCi1VVtlMmJxYd3/2w1j0CBHhD8rk7rF3jbhmCQv9ChGndpz9M0hpyIWZtSkd4JC7jJPjysz6ngxbynmbkbKCGDqt/EgVYjWyuldoXIqN3kHkU3jLUFpNgcTqqp9eVKJzhjQOJNFPXRMpplFrVnK2Pd0EjKJkWE3ogCXBPw4JMNAhEptybP89CSBYKj9zlJ/ZVQV9iwxwsrhvi+XLYygN9kQWYd3KXX5VCeiuVc7A5ojAuJM2fNEmNxcEyV7RdElJNvkpG8TyC17HhwvTDTfK9xF5C6fx4CRhvWGQbMX5k/vBf9pG2M4AMfyNkZOFgxnAPJY49U+yLp3IK0YB5eUMwnc1Ed1UFRobtQAjMTXXDeQBk+Dytn7Dw+S+tnFxWgJUCMJKGQ6Omi0= X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700016)(376014)(1800799024)(82310400026)(23010399003)(18002099003)(22082099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 80qkHC7oA79oytU0D8wATbKko8oXmG9u7+y9tpdxu89nxT02xwk6F23Zt/v7awOdlyz9urqpmY15QmxuqkppIbZn9V/A/7ORwtxUer6XTR94u16MXQEK2Wyz/AgXm2OfEIZsvmROYDwGfLgyrBESB5YEDMOBepwcO9Nk/du6P2CHAAuHWjo0iA169GmuOnAh/3iLg6dvyrlpgts/ED0jklIjRpAH1JR7l6MmJdEKQuBtDrOP8a4ghoglua6+MVWSTK11iBCeDl51+WfR2O6NlTDDdq1l0ekQUj6zBO4kTN0cUOLzyxnnDhbxfpxd4tK2F6JDKpimYidVdPSWpBYpWwZjGq71YUoAsGHKAx5bGiWQOhbIYB9gc/0pY1ClKzsN8aQW1Agj1OvREFq+NEzA2fk+n5LYPWqfk4fz1rZn0lReWhAurVYPCfh4PkSS3AMM X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2026 10:13:03.9313 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e0a88d46-fa41-4e65-7322-08decd222f67 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: BL02EPF0001A0FA.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR18MB3981 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: 1781777667213158500 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 | 73 ++++++++++++++++++++++++++++++++++++ hw/misc/meson.build | 3 ++ include/hw/misc/axiado_clk.h | 26 +++++++++++++ 4 files changed, 105 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..6967a5995c5 --- /dev/null +++ b/hw/misc/axiado_clk.c @@ -0,0 +1,73 @@ +/* + * 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" + +#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: + return 0x00; + } +} + +static void pll_write(void *opaque, hwaddr offset, uint64_t val, unsigned = size) +{ +} + +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 Sat Jun 20 15:22:19 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=1781777661; cv=pass; d=zohomail.com; s=zohoarc; b=e67e3UcMGQJr/jrMvGaCetoNdb7OOB4cK6Hv/T/xqxgPGEwpltahwtJYCB6nD8/AyRCgfy+ziP2CbzxksiJcw4zfBFlllNj+utLPd6ozSOKtURSuEoVrI7BerNDj63clHNXR6FtEtYgac6sKDK/f+aTQzWrAlzrJ3Qjd+QtPbO4= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781777661; 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=IZMzeFt6kaGmwpVS46DDOt15XHcF2Jf0Jnl1/xSrAp8=; b=gVATcU1rH53ZX5VU1xIiuWTbckxSiKCIlrosQNs4W1wtIKNCO51QhaUzvhztVNZzuYcwEa2xHZFbE8tvWH2jXB4SDFSpRFxHnMpTha8cSX9xUE9Ea+TiLohdqhUm8UERr4bHMZS9oVkwH+0wr73dmRWeBvs9BPovza4tHKRfPeY= 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 1781777661326787.4722444117288; Thu, 18 Jun 2026 03:14:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wa9kO-0005dX-Js; Thu, 18 Jun 2026 06:13: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 1wa9kH-0005c9-UC for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:15 -0400 Received: from mail-westusazlp170120002.outbound.protection.outlook.com ([2a01:111:f403:c001::2] helo=SJ2PR03CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wa9kF-0006Ak-4P for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:13 -0400 Received: from BL1PR13CA0222.namprd13.prod.outlook.com (2603:10b6:208:2bf::17) by CH3PR18MB5546.namprd18.prod.outlook.com (2603:10b6:610:19e::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.11; Thu, 18 Jun 2026 10:13:04 +0000 Received: from BL02EPF0001A102.namprd05.prod.outlook.com (2603:10b6:208:2bf:cafe::58) by BL1PR13CA0222.outlook.office365.com (2603:10b6:208:2bf::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.11 via Frontend Transport; Thu, 18 Jun 2026 10:13:04 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BL02EPF0001A102.mail.protection.outlook.com (10.167.241.134) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.8 via Frontend Transport; Thu, 18 Jun 2026 10:13:04 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 44C9F4186B5D; Thu, 18 Jun 2026 03:10:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SzVp6HQ1k2qbOBBrQRuNWidZa5iSHxOTOMQU8GmYWRJM5/XD+gBHkp8z8Z60EVgmUXPonjiA19VWnuNoDO8A9UbjboudHUoyXKqaT2JBsuk9GiUSqynJLQLG7RRH7kfApXk3PPdLyfiuA6XiaL5P/8kKtaOXXml1FpVOmhTJogJQ1GET4IX9OlqVTszEH6BITDr0rxqnxjOB8hJz9XOtbst0qdx4d68ci66AI+AclAciFe3ucvEMCsh3pA0/tgX44a3rtROW9ZCOqFQGXYAvYbhjtYp8nx5nGR2NX7S2j+q4FSpCwLY71ha1IT2ppn2ebgLLcK5uNMwFl/ctmEIt7A== 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=IZMzeFt6kaGmwpVS46DDOt15XHcF2Jf0Jnl1/xSrAp8=; b=EP+uxXIpnIrJoDIcJw1uahqoqqyUgYtAq9TV8RdqQZqoKw9FDtMOqREIi/orC68+HxMGhULIq6S2Gxs7MCZkSKkuSsl+pvP3uAkoDCEaYmFq7CxPMna1C+krfHV/A+7hRKtQIYyYxbH7fJT9Bv/RgWIw3pgtfTUe0+ReGsSN95jmpkxmJsXALZCR/VRjL5GbXlWKnAEu3W+YoyaWmm1aHednDI4/2IIWgRWoGySZPGe+5uMD9AO8aTvJmPP5kUiK4dBsjQCfGDjdDX9p/bBTTbWMZlAZJnWWK4sC+xc5X4RSrBaesHrjbKT9Lg9n1TVnw1f1TQ09Kb49g5w9b8ByFw== 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=IZMzeFt6kaGmwpVS46DDOt15XHcF2Jf0Jnl1/xSrAp8=; b=X/mD4V1RfAQ4tiFU1Nlcg/lwWYfCe3g0YPiwAK8VPuMz8O9H7TqZxWDAn1dRuMZO1bQd6ZAQeh0ZLvP6blU7T4b4uOxPn+UZ1E4lBJ9i1iQJDxnqi0AGXN1cifKCOrpmk1EWxAj6zOp0i3/Lxcaoy6Wt153f/2yPObxhCWBSl6dohVBTQYyUiCquuYMNUVtstIemaY9cbOGhZL/OrM8Q2D+8oGRqkeT7Y9v6Z7azV6SnvOt2whrRKsUXf6jUHf4wI+MxDAkSVLe73ow8959NXyTnARtLaQP776yIrHC7Hs/fSXIcolZKmwACKBhW8ll+HKqJVkYCShqBlmx+cURhpg== 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 Cc: Kuan-Jui Chiu Subject: [PATCH v5 3/8] hw/arm: ax3000-soc: Enable Ax3000 clock control Date: Thu, 18 Jun 2026 03:12:44 -0700 Message-Id: <20260618101249.2926976-4-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260618101249.2926976-1-kchiu@axiado.com> References: <20260618101249.2926976-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A102:EE_|CH3PR18MB5546:EE_ X-MS-Office365-Filtering-Correlation-Id: 3f3fee40-3287-43bb-b3f6-08decd222f73 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|376014|36860700016|23010399003|82310400026|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: u8Vt/YCDHRqW9J2rwTrCmpuhndElumkuZFNBBQeXXS/T/i99xcofarWsF+4sW2FWBxN4VXgtGNKM2gEAgZ6V++5OTWe62yMgvg4rina25WzWXPYdt0+sZx+aV+H7+j1hZpU1E6/P8KxMTfM2ulIvi+0PF7xWT9AzO77tD6GDYVpSPfeU5nO02ic6gsiaclfASFUvwug0LJ18UbfcKHigmm5yuPE5DGfTB5eNxuncZg41Tk9NTa9urOhvqH2FZqBDJ4XQmZqJJL09HNeGZX7SeePDRzuTQ5cQLsmbJPclbb6s/M8ogyfJGJV6pkKzOiHDZMP3+g7E1rak2h+HW+U0h055Jsi+st3lRha/acsCKvefc+Y+g95Nq/1/wgWokBKIbJ8H6xwbpOELcC9o4OOnWaLxMu1t1vV98K8UYKZ8bxKf2cNkcTsb09Z/fY1pUKLe7MbALq+fEB909mqwcqP8GIZABaV90FqkbDul5z1n12aFtxt9AQLwXBEA8oB1nZCXn63MVePgMKrH/qOt2eRqDMDSeG38ham5vhj8/rQA8c9lY08qYAxm2Dl+ni82y5jQo+zB8yzuHxEGEQBY1JsBm4UCp8sF3Kw5/O8KK6FHJPFYch0mfca55TmQtoUlaTkFeHRxf5R+r7L4qoPWVNPRhtYWaHgHs1+KF3QRCLL5PLyED3JNJ9R2OmKBAzqFC29v8gUJJZPZWRyy3iT5Wyn9uxwj0df0mPytZFdyu6/7ru8= 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)(376014)(36860700016)(23010399003)(82310400026)(22082099003)(18002099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: qWuZMsF2q3H4KyVuXqrhWWPCz8BxosldzF1lMviYCxeZupPCl109DT6La83aeMlbJPRe+8UC2/8UMrDfLM5BiZHK7uSG2eqUr7+/ED5Dhfm15Ure5SDorpGnhMRQXAlXObTWt74LJkqvkL1eZ6/xiKaK3sXKNJBpniH3OqYMKRTQZeoePAVkivQf71daFA3WVsJzX0ntGI9pO4mDmWgLYizEmN0adSn+wvlLvoe02EHLgF4QZJhezf8qfafgMto4IH7K/vvb1PgowVOVbrcY2j73Fw1TC0/biqFEOetBZ5NaGVMcpKXmAemuwFa7kc05GczojBGllf3h/c6eEc7zzKkuK43mt3Ya1RtcmO74wgZptqXtW/bt88ChTkZs4mauhWu+xdEz4wdgTEun3nMoCvvDaSJLWdMzwhPRlRYYY4CXQfxFT99yObfCRgY9cXDV X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2026 10:13:04.0123 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3f3fee40-3287-43bb-b3f6-08decd222f73 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: BL02EPF0001A102.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR18MB5546 Received-SPF: pass client-ip=2a01:111:f403:c001::2; envelope-from=kchiu@axiado.com; helo=SJ2PR03CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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: 1781777663058158500 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 818ffdbce56..866e4b14e6f 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -723,4 +723,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 8e8d2edfb71..9a01d23bcc6 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 Sat Jun 20 15:22:19 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=1781777644; cv=pass; d=zohomail.com; s=zohoarc; b=IjqXldv/Vpblc2z8FIvhA0F74grgWLVIH7ovje1WOuOp23w1ZDHMcXs/C8UkzA1WNEhscyNICCd9rIq/x00q2qyTpzuwaukzJLE0FNOpDIwamWrfc4iyVKDj9N+W3uF+X/RI2XhU3S986RhpQH1tckO672l338KWtC4cOYrg4GQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781777644; 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=sVF/2c4l7mfAZ0+2WLPI18Mif1JED++gwGXq9AXJvQQ=; b=Gd9+Mw4qo3wvIUXoMRVpXxTDB28wIwEjvOPGU6UHhpORxb7uCS+GqwXni35q7tJaKJS5b/hJ3ClxNv0npjGXbCA3ThLqmuz/YAuDQDiZbkm+lA6PZz9xx9ACgdFylGLstvps9GUb/GPFzh3jv5BQCtTuRaBTf2HWc4+7PrOGDBQ= 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 1781777644085797.6434343986022; Thu, 18 Jun 2026 03:14:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wa9kQ-0005ex-Ll; Thu, 18 Jun 2026 06:13:22 -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 1wa9kO-0005d2-7A for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:20 -0400 Received: from mail-westus3azlp170110003.outbound.protection.outlook.com ([2a01:111:f403:c107::3] helo=PH0PR06CU001.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wa9kF-0006C9-4t for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:14 -0400 Received: from BLAPR03CA0022.namprd03.prod.outlook.com (2603:10b6:208:32b::27) by BL1PR18MB4327.namprd18.prod.outlook.com (2603:10b6:208:315::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.18; Thu, 18 Jun 2026 10:13:05 +0000 Received: from BL02EPF0001A0FC.namprd03.prod.outlook.com (2603:10b6:208:32b:cafe::2c) by BLAPR03CA0022.outlook.office365.com (2603:10b6:208:32b::27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.11 via Frontend Transport; Thu, 18 Jun 2026 10:13:04 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BL02EPF0001A0FC.mail.protection.outlook.com (10.167.242.103) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.8 via Frontend Transport; Thu, 18 Jun 2026 10:13:04 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 517FB40BFE07; Thu, 18 Jun 2026 03:10:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=l52wjO1Uz7hdg15ElyBP5KF+d3Ccu9BBz2qBlKOr7cjqBRqH2hPVbf/3Ki7FANEhKbnHG56hz1EmKH3w0I5g8PkeSJ4cmVO5xypdO2HIPxQ/y419hrTIOzf1bcqlxazAp6RNuS8zOv+VKdIYsa9FBgjEcSTc5Xy3csq8JYtdQgPEqYdfaPNAGQvEvCBbsN7ceXUhIHlshJR/DYOyc82mIV/AN3mGEQbTk0Qo6JOqUaPsGeLOd0bQ2zZxTTKVZ2Giu7mqfKfLIiaooZ9BkVmyBhPLTEISbgmEH797U7U/EJv/GVy5ITAcPoRxmK4rAmRqPFPYZnB7dVZK+kjZTDJx5w== 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=sVF/2c4l7mfAZ0+2WLPI18Mif1JED++gwGXq9AXJvQQ=; b=oPGU5jFGgve04wFLcSRamSbxCn5Ev2SP+nGg8XrQprStWDNf8VqucopPrZ8BwIFeCaAt2z+MPrU4kOzJlBE3P+7g6PBN6pzmN2V3bfh205f7BMnZptaizCNAeePGVXd+rh8V/ASJGErYwUCH3AmTLlN1wW7pfjeHuvJ6r0d0B47Y/w7ayg6r/bvYaVnr/NmZca5zH2/PxmTidP3ppTj7z9libAT07qZxlOFYD1wCZTcddBNZqkbC2wM16VJQ3RMyRDcRMbk3GGLoR2RkOjOir3TBJVm6BOr2YKiB8cWnXi1lVl0BN1Q8syVEa5ol8nCYdZ1aWenpXLpt7X1FC9q8gQ== 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=sVF/2c4l7mfAZ0+2WLPI18Mif1JED++gwGXq9AXJvQQ=; b=eGbrPBmAZzeNA8OcSrAhgNoXYQhMDRoe4FT1wMrvyPaghYC9/gj9R/OmJppwDgYGTy3AHEZjdsNC8Nac8sJM48feNjvZtPzFHfXl1x1UGXVf8FRrVslFTZOqWLNW++jDvAIKoGsFiZ5YbPtm8NLl5ziTUl5DcyO2ID1wZh7oU90BO9drPAVluqwn3h/my1cgCaaK8QQKm6o6JNkinkihWk+B7KFAiY1mCcKcCi9wQTQsa61F6zLB9E2M7PpIrmOkHX4AqLJ/6vFsXtTl/gRGOsO3NefhqHQ82WdFvdnXe3sG4dwfvjgomxy0vOJu6aYJVGVBAwUDqIof6/abDSTIzQ== 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 Cc: Kuan-Jui Chiu Subject: [PATCH v5 4/8] hw/sd: Add Axiado SD host controller with eMMC PHY Date: Thu, 18 Jun 2026 03:12:45 -0700 Message-Id: <20260618101249.2926976-5-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260618101249.2926976-1-kchiu@axiado.com> References: <20260618101249.2926976-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL02EPF0001A0FC:EE_|BL1PR18MB4327:EE_ X-MS-Office365-Filtering-Correlation-Id: 3ddd5458-6a4d-4a61-58c3-08decd222f79 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|23010399003|82310400026|1800799024|36860700016|376014|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: NmGKIHk4PNNFXqFzq3JZIbgZ7PbqPacGApDV2+DQHw3lEl/Q+ipAksd0CCY6VflQuuyScwr0XKD96H9DP2+aCKtl+IjIfBxov6K9edDT4h1OIW3tszFTdEXg1Ivi6RkZgCyoIPiJgmwj9Iq1wfk7P3SC9ORqPd9a+JDmbP3E0tetsNZwPLWdA6OwunVvSdttgbmXq/B8EfySdiZGbdxwvp4as+RiucAB9mwYMnAyNGrenuHf9Q2hHsUCl5E1/qYfY7V1kr+APvcpFvWEQw4S3U0N3CKJgO435MMZUL7g3ByecYi0PstQhL7IMZ1DBY1mssUEcRdPrZrwO9BHJYabhpR45T/LJgO+PAWYsut1dDoReN6App/dJedVB1yCPv81lBovQGOfGnnrVwQ/x1x4c8AENxdYw3FOM/dsnKKYmJx8zVajTzpAz0KQlRCh5uhPpEqR1HhDibM9NfMUjv5+aumuWjJY9i+Yj7R56tCNTFh6TRKz6BLXSuf5Ay+VhQMWZPfuUyR118pbNgOD/NO+AbpFP2u/c7Rmhtzlqzh10IWvbg4l5mmHPmUEdjizBfGfI/BFIql3AzVQZonyxiC8TqMbjhWFFA58X8hcfkg/7cE6IvW5S2D08MJm2cTHWe8puloWZaIGtlLeg0BQ84g/qsem5kRIBvaYOInUj+u9D7TaDoo7Ue6lah0C6+PCldR1dxo7qUvUvtYuDkHA7BSZPtno4pgzLkVE7b1VglyWKCE= 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)(82310400026)(1800799024)(36860700016)(376014)(56012099006)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: P+NkCioTzUbNYM2x84Hy9Azg++fMhKCUC0/RVPDI1H2MdI0HQjhpFPL+39Wk67eZjmiGDnAEM7rYSqNV4tqruivRZNWng1QER6MIAQXmY8JHU2R3ZD6Y7AumFL9nh9+Z0mV8Qng9ebGVkPxEbhi3NBWXP2lAzY6QHZZbkWDzZ5ylp3qv/k0IcP41ZlIeo4kPhSCNMt6iT7grbLhPNYXGjPJWCslhF+aQJq0bcLlj3gD8s04Nwj0oDgwf7lAa3QZVL0mWEK9LvZDHMZoSiJ5YRRWYLMqP/oQk2qA/VJp/dgRl5zZ0/p+xToDig/DflkLq8Xrd6gd4UagNwh5sQbbkPC0/hdZSnMKX6SvoQ+mBbxql8sdl2DL9hlFuNeAMihyrcYlmmV4lW5Sc+1Q6QOXBMg3Am1AanSntDA7hH2dlWBQQ6cA9S43o0GexEUVyMIne X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2026 10:13:04.0487 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3ddd5458-6a4d-4a61-58c3-08decd222f79 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: BL02EPF0001A0FC.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR18MB4327 Received-SPF: pass client-ip=2a01:111:f403:c107::3; envelope-from=kchiu@axiado.com; helo=PH0PR06CU001.outbound.protection.outlook.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, 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: 1781777645073158500 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 | 114 +++++++++++++++++++++++++++++++++++ hw/sd/meson.build | 1 + include/hw/sd/axiado_sdhci.h | 21 +++++++ 5 files changed, 142 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 340428cda55..0c112890818 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..e1a76b80a67 --- /dev/null +++ b/hw/sd/axiado_sdhci.c @@ -0,0 +1,114 @@ +/* + * Axiado SD Host Controller + * + * 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" + +#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: + break; + } + + return val; +} + +static void emmc_phy_write(void *opaque, hwaddr offset, uint64_t value, + unsigned size) +{ +} + +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 2, + .max_access_size =3D 4, + }, + .valid =3D { + .min_access_size =3D 2, + .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 Sat Jun 20 15:22:19 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=1781777647; cv=pass; d=zohomail.com; s=zohoarc; b=PLusAsdq2bATZRayfxFvFzVKYuHN+T1d0zRydKNkn5HPbvo6qWds8jNlikamlF613UJvxZZbOXM9UHXhGaplTHSCTU3qtJy1isJuT+zeBEP942aeLV5dP3ThGHeZjSjpR19CowQtZr/x6jG2iXk+K6jeVnCjeyUmbWEwSIJSd9E= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781777647; 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=Kn3oCo1Di4r+iQOd3URhtWT1yBvui0dnTPaLjlnvVS0=; b=Qz5tiSNCMtgmkwwHVlatPdsYUMhsDka/gFmV24uydaF7KatgIhjAb8gLssZ0eRLLGLld5eTUa5d+pUMwzXYfK+ekFIqu5Y/AuLNE4vGqWzPbHiS3btVaCgnM8kI8ZfAQ6WhQsueynKGd+wRI8qwBBvvIVh31KlgTMwNpAKHiKd4= 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 1781777647677193.06265913937386; Thu, 18 Jun 2026 03:14:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wa9kR-0005fH-8w; Thu, 18 Jun 2026 06:13:23 -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 1wa9kO-0005d3-7C for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:20 -0400 Received: from mail-westcentralusazlp170100005.outbound.protection.outlook.com ([2a01:111:f403:c112::5] helo=CY7PR03CU001.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 1wa9kF-0006Cn-3e for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:13 -0400 Received: from BL1PR13CA0187.namprd13.prod.outlook.com (2603:10b6:208:2be::12) by BL1PR18MB4136.namprd18.prod.outlook.com (2603:10b6:208:30a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.18; Thu, 18 Jun 2026 10:13:05 +0000 Received: from BN3PEPF0000B06F.namprd21.prod.outlook.com (2603:10b6:208:2be:cafe::43) by BL1PR13CA0187.outlook.office365.com (2603:10b6:208:2be::12) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.15 via Frontend Transport; Thu, 18 Jun 2026 10:13:05 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BN3PEPF0000B06F.mail.protection.outlook.com (10.167.243.74) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.159.0 via Frontend Transport; Thu, 18 Jun 2026 10:13:05 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 64FF040BFE11; Thu, 18 Jun 2026 03:10:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=cffEWCOC6L7q0VTrDH4ueOBkjIdpbaD6lGU3doCd5nGwlmXdERWFo0j2Rg9YsV7Jri+nDbiHYckz8Cg+soF8c8aPtZhM9vTl7wEBKYbBF5j8/qtF1+QBReRsB1aQ8T+tmGtaIggqh2kAiz/Rd0Ak7nFpL0oYXHMv8Fx7Dk+9o3BdGyLdDSlhe2Yck8I8gMu2AHxr2VkSB940rpZieZGaAw9fley8X+T2JYo0GujU1SYsgafV6oMTCh5C0xDQ64HtGAx4GhxXSaefQQN53yBcw8OLO07JPCMQpMriXtJvPZvC975qv1NhdcmUrk5T4+simEFbIJAK1IrUXjeNTkPQhg== 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=Kn3oCo1Di4r+iQOd3URhtWT1yBvui0dnTPaLjlnvVS0=; b=VzpvURCPcdXypVV4RMCev29Zij5Vg0GBnDEYRDeGM0bHln8NgKarTjwQ0GnR0JYixhX1klIqBYzGxqMQiArxb+lpSvqnnG63fmMAWXooHQs8dOuRS6TBFd+bJWtaMBo96ye5VqU4oRZIPR2p/muHD21dQEdmys1talx877Ai18AhxqI69sNz/sgPHwjuIKx7oJebfGNtquDHBV8AlqIn1iLnAhK9ATlEW78SW1QbUXm1USPmEtlD9MguoKiTpG/UpE2spwjY/xy8LxmyVpVUMVNVG8cRK4iL+0wlXdL6O+8WS5Q7DlJCbmhfxyY7BLO3qD9ieqb9G+glDYJ5lbjoag== 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=Kn3oCo1Di4r+iQOd3URhtWT1yBvui0dnTPaLjlnvVS0=; b=bBq8kOEzFFqEQcyT2hVfFRMzAQFsnoXx2293h1cQ5DfTYfJ+/73PSJgZmBpbZrcKUmYy2ZakKRqlOCJY8EsA9YCp0GYofwbuD79D0BbV9fNHu3yN2rMgP+slwV1MtLSHQkiDacn4P1Je+Jno+deaax4xmYv1FxAqp5EIMqTJQVUHXNo8xtgcPG4IKDtkpcKH3gKCtfYkTH3lFt/3DESu446RD1oT0aK460DxJGDDgG7TWk2ic66xA+72PqkOzr5/TyEfWLedqh1wRPsgb4Vds6etAijYRQzKHDBF0TqbehdTwwwGHSrXGtHwobNTTmcBPmgU8laEAxcpHomlM8ewxQ== 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 Cc: Kuan-Jui Chiu Subject: [PATCH v5 5/8] hw/arm: ax3000-soc: Enable Axiado SD host controller Date: Thu, 18 Jun 2026 03:12:46 -0700 Message-Id: <20260618101249.2926976-6-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260618101249.2926976-1-kchiu@axiado.com> References: <20260618101249.2926976-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B06F:EE_|BL1PR18MB4136:EE_ X-MS-Office365-Filtering-Correlation-Id: d28bd4de-12a8-48cc-e399-08decd223016 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|23010399003|82310400026|36860700016|1800799024|56012099006|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: awQkqHBZysqIDiH2QnCpQDiXPaFmN2icx9HwxKxg7hfJ/u991dZ2aWz2iNs2FckPDasqf+S8uKkHBmqj7GAJRP1M3sWLLGoNiHRXIwAzluqnlC9D/0o7GZLTbuzdzQKAbTS0+IxipNAyGK+UGnKIPyJq/3NbcS8Up3oO0A/VAqcX4QNsRTuNPhfEJxvA9J9XdJ36Za+wey1ZVlapfSnn4iCJ8tJnYayN42hjEoEB3JY0MXiD5XldRix16xak90HyLZWyDucWz9ePIzdq9Xn0o8O6v8oFKpDwMTrwwS8mUD1pMFScrq4b/616U7RReQKFjAMJ37xgPGhv2cY9kdvM1Q32kfJXdQlGBw4JHE6Y+v1CLW3tmfBIhOJWxNAtLg9CnDeX6jZVnsxHnMTo3PnUAx05eLAR2D3QmBd/Q93X8Iv5JX6G5F4AxAjQ8IDivICBA7swovwgN53ejVGKP2QIFiWUdhGoNQqJfvUfG7U9PRYDiwyM9hQaODGacOD1aWqoMy7CbI2XkhW++L21zBOtqCMVXXK/UAFXkrnQspVUtzHm9gvbQ9k5/diWV2lePijLm3WW91C8gXqO7ultFzur/HBdEDgW6FOAsCdq40PSCv4zECr+sT0Z45DkBeyApuRvZIWktQYfhjjmHfM6vFa096gQI5QlV/LGKDkriv/9brdws4oNwJQdNai9HSPLkXO6fVx3oYAbZ2MXVnjgsp3FOIHnoQv7IzSr70YBcy2oXSM= 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)(23010399003)(82310400026)(36860700016)(1800799024)(56012099006)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: lCyw5y9C0npyKaHKEoq3EqYyZbXUcA31m5M+uRFsHIF2CWvOLM7xwGCqU1TB+ESmVOOm4NFMTrlARkdRV2kpkGIBlmHjj8xYEA6K9+7eKTKeiqM0IVN3qe8MY9UqKIU/WivIO587NQL9sYwkvVnbFoLqbFlJ2RDYUi1KGbd9u6asOAW00Xc4VBdM+3qpPzitkJ2VU64jkN077RNp8Mur1NAbcCG458DtWU6NVSwRtovHitCsuIrmhDUrYcsvTvuL7qx/OnHgM5MI205Vxc2BXJJXjrej0G7MyMoOceKw8AmIEBulKIPxJ6y3YTzQgCUEJYfsXgmW7DVvqKwjRRRFqyr+JnB4ZGjA2jHr+DppQNn8LhFYtPOlSinrBxgiDowLzJ4hSdK77WtA2lvK+I9iyDPAXyhma0+lmMOGzoueQAmkxFfQPtX0yowKVyO09RBF X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2026 10:13:05.0549 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d28bd4de-12a8-48cc-e399-08decd223016 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: BN3PEPF0000B06F.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR18MB4136 Received-SPF: pass client-ip=2a01:111:f403:c112::5; envelope-from=kchiu@axiado.com; helo=CY7PR03CU001.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: 1781777649055158500 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 866e4b14e6f..13c0b44a180 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -724,4 +724,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 9a01d23bcc6..159385cf913 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 Sat Jun 20 15:22:19 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=1781777637; cv=pass; d=zohomail.com; s=zohoarc; b=YfLxdCClLgS+Gpn4auehQlltmZKD4Va9W2Z4TA8Z/Am6r3+M/JXq2WVejC+MuId2MLlpgd9EZzL5cwDGbwUBYdB6d5LpHpsyWI69yMLpQL258bGQVIJMSQcP4IuD1HppICXtQrzDMLddIgl4MXRNSOfOqsLziyCClPj+PGic8gQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781777637; 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=gkOi+MDmh5iOv/pWZ+xq/SWKxk3SGBL9J6szWThaLRw=; b=Sbwe2jQuyuP0X8sYgml94ptCl1YraVTDTn33M4ojWrIgVi4ClNoJPoboF37u4CnWDqsoJJ8J7+qxyuQXF+TmjCvVryyTnGevExooHZO9cGPkwiHZvb8MD5eMaEoHcMV458AeahJcpjkqGlTHVklu34mL2tNzi4aY3XFsZC2JxNs= 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 1781777637438383.32499260259317; Thu, 18 Jun 2026 03:13:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wa9kQ-0005eS-4y; Thu, 18 Jun 2026 06:13:22 -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 1wa9kO-0005d1-5n for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:20 -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 1wa9kF-0006E2-Fr for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:14 -0400 Received: from BN9PR03CA0458.namprd03.prod.outlook.com (2603:10b6:408:139::13) by LV0PR18MB927505.namprd18.prod.outlook.com (2603:10b6:408:344::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.11; Thu, 18 Jun 2026 10:13:05 +0000 Received: from BN3PEPF0000B06C.namprd21.prod.outlook.com (2603:10b6:408:139:cafe::14) by BN9PR03CA0458.outlook.office365.com (2603:10b6:408:139::13) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.13 via Frontend Transport; Thu, 18 Jun 2026 10:13:05 +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.159.0 via Frontend Transport; Thu, 18 Jun 2026 10:13:05 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 727DA40BFE12; Thu, 18 Jun 2026 03:10:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fTx75tx1KzMPQRKYSDtMPJTUt4My3xROjzNg67D/MIWg9OBPlrv9tohHPWw3+wSfM1/HaLnkJavGqtLg7sD6nLv65QMrqwmI10k5crK3t50bvqsm9TkoL20rBUiQn3Zd6LF0P6nru+Ewc+HnOmt+SNGAsBKeBvoNBNTgALHFOJV3fR4JYpF8tnFuKjnO4Dbbfwg8AdEgNQ+SxGeRq/c8CgJQ6gZycqjewdA3gT+W/R62B4JCJ1vBFaRBGtmrN009cjC5c52LpUXkJzXhcBxPk9MKQ5vUbYRzDzQ+v3llGYt7kLStfBi3gacVmkEY8nYzSBFExtpLlaBW+PKNLrsfog== 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=gkOi+MDmh5iOv/pWZ+xq/SWKxk3SGBL9J6szWThaLRw=; b=PbPaHGoKSDDdoXBVfekb5+EJFoVpEzCFhsGhoWHTSPMCPZYfYwiZWq4WniI4tjfu9gCglXo79gzgFy47JHLWcIrLndRZPA/5JvGrf1WGqbaZLk585IGvYA7tsKxZUWZdrjmPkqHH4gN8xMqi/2JlEK5TwNY+1HgmLME6wljE1CYGWTLbidbn6uu0Hg/BWLm76Jm90HU+2tLBrPSN27eNvUkqLw1n31gFkV1KS9D5hu2d1snLLi087WiO+qIyWMYVbboBlXsneI42TXm5zaTAveRMnhob82HG0n+C984hdYOt0feTIj6ssXHp/+18MwHYjSsMNQ1xJ1UVTScPyoUHpA== 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=gkOi+MDmh5iOv/pWZ+xq/SWKxk3SGBL9J6szWThaLRw=; b=sfBIUu8J85f7MyIUC8g/sQ1mIgeFSyi7+nx9+DLO6pUGoB2cz1at4DYDz5FZm+GNHGp+lsU8OWkOf8/71chG/eJLdLHt9Q7M9zbczxc+4Bp2Rrs93JaDFTT7kKzpiah9+Lww9kNAXyTiw78i/MLhMMTon7yTxUueLXUwMs4gTrQrm3I/RzXYkJg2K1fQS5Rp1WESrxBtvGTP4yFIJq2uYaVXqpV4b4YCN7Ot+51rjYd8rAJdEg8ONZtTfhslGlKirmgyNWRoEx1jisaNadHBU1ixF4NGpxrjT/LCGn/Gv4z5iYv/yBSGGTZZNRglk7CeEZ9fnt5JQP9l7qQsxptxxg== 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 Cc: Kuan-Jui Chiu Subject: [PATCH v5 6/8] hw/arm: Add Axiado EVK SCM3003 Date: Thu, 18 Jun 2026 03:12:47 -0700 Message-Id: <20260618101249.2926976-7-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260618101249.2926976-1-kchiu@axiado.com> References: <20260618101249.2926976-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_|LV0PR18MB927505:EE_ X-MS-Office365-Filtering-Correlation-Id: 98d5d8a5-9ee3-4c69-e8ec-08decd22300c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|376014|23010399003|1800799024|82310400026|18002099003|22082099003|56012099006; X-Microsoft-Antispam-Message-Info: yVyS+UJBopXwJfTBRgptco70m3nHauhyYlQxckqx9j9ju1wPvVs9rt87n3w/5w9CYkDLRoZDpYLNMov9RQrz4nV0c6xMbyfOACzfulm25mINbXHqhn/lVcqb4A4dapgEzPm7sgwQtTHr2+cY/XhM/ObLnNCnfn8BBO8kOSW0Lhj2OHGZILjgeylrjXadey5alCWUFhhY6k0tjFI/hQEs3P7M1FxOFoepsZOKN0r5XZz/1OS5V8siEWAH2K20Pd+G9vWEuQcsyOycua04AG0H5CYwBRUFsmEc6fEzqsJvdX+LLvsW6xuf3at0q9H60hvhF5rv6PD3pqm4IYxqfu5Z5mIoZQT5fISEY7Pt8EHjecET7csoM3kCq1abOBGpdjoBM0RwmnMhqOAMwLqyHI9fkr6x9dqy1d1Sx811+9ynQMbM2ZrXQkq7j1BhqWB0OgfKGyJU/NRzR/+9J+zFXrFWnt+n9i1WWt8At9aO13wR6aGKNwOtb2KVnvyNUg2WIvaPD00cFQH4N564g4A9rSGugHmxdmMj9vIBf7Gv9hhgxihe8Q03wPrscgPCcOkwwFD5IjMrPOr/HSzV+GQuPqOUUPFWNyVzIfvWc6JEWVCSb1chdRve6/IPOVeTTW5D3ONI5fFED3fV/MXja62yuVK3hBXbMO0ZNh6Pmd+bATQ/jTLzV64BBUO4kjyop6xTSpRWWaH1X8WiuZb+DuRR1kQX+bYohKRFbx6Z15+5LAs0kWE= X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700016)(376014)(23010399003)(1800799024)(82310400026)(18002099003)(22082099003)(56012099006); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: suWxEqfUgkFLDsMZx6PGbyP9nnzwMoPT60DntK0DxFufkT3FDVmgNwq7QWOk22LSrg0XMuCMpKJrj+Y0fDMU9QzRR2NGM5XCGVY7VFao6GtkqD3NQQ6nMgFaA0PhOGCcnNsDnQUw3LuqKCgggpC/TJiJ1GeZcPHDZK1jTN804KdiVB5rd6qypTVnTJaI8Q3Z1pYFf1jrcOdbByzdILcEYnt8Zpvh6SgjGYAbJ4iImYl9vvu8ZughaGIYB5VC38WGIb0Yllw+yikiC+aHEBllJKMmoSR5I510Pc2JWnxQAT19RQCzj03KVEo8ShXHuFpPI4DjIYzwCwIJGIhlWpLXdElRvZtlHrvQFAat6oVk0noL401N53xg0oszNPX6qYIAUvj8NRRuoTnGT6OGkdO3oCWjqGB0D74l524mcHUEJdcTxA990DsmEQrgN4jBA324 X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2026 10:13:05.0086 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 98d5d8a5-9ee3-4c69-e8ec-08decd22300c 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: LV0PR18MB927505 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: 1781777639267158500 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 13c0b44a180..7fc6fae9673 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -726,3 +726,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 111ab2ba010..feef999f36a 100644 --- a/hw/arm/meson.build +++ b/hw/arm/meson.build @@ -110,6 +110,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 Sat Jun 20 15:22:19 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=1781777637; cv=pass; d=zohomail.com; s=zohoarc; b=WptdhGzbXXRqgPiHfYk7rvYkLLOv+LTWXix+K9NmnqotcN5ln78BN7EShPaO0PrUB2R0QEdiUgpEjBfnNeJRBr16fASMllrAUaytp+ZCadn62CcQSAatzDT/OidBwvf81NndTM4MTJiKkC6iA3aH94J09QjIw8wLrn+6SuLv8jw= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781777637; 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=meMBRLY7Hue1VfmgcHJM8RM4bBIuYNIHMqmAsUamLyRJowraJ7fP4pqvbvtPfGSvvqzGMKwNTvKGk03mWS6lAwEzHKvrOCL6trCZMDaEAxLGd6CQ1HgyvV0iSOgb9UN/OmuUPYyGzi8jraYbXwf0ImvP99JorwjihGtzL5FKZ4U= 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 1781777637257322.6957578482859; Thu, 18 Jun 2026 03:13:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wa9kP-0005e8-M3; Thu, 18 Jun 2026 06:13:21 -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 1wa9kO-0005d4-7V for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:20 -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 1wa9kG-0006Fc-HL for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:15 -0400 Received: from BN9PR03CA0870.namprd03.prod.outlook.com (2603:10b6:408:13d::35) by PH5PR18MB927675.namprd18.prod.outlook.com (2603:10b6:510:39c::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.139.11; Thu, 18 Jun 2026 10:13:06 +0000 Received: from BN3PEPF0000B06A.namprd21.prod.outlook.com (2603:10b6:408:13d:cafe::7b) by BN9PR03CA0870.outlook.office365.com (2603:10b6:408:13d::35) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.13 via Frontend Transport; Thu, 18 Jun 2026 10:13:05 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BN3PEPF0000B06A.mail.protection.outlook.com (10.167.243.69) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.159.0 via Frontend Transport; Thu, 18 Jun 2026 10:13:05 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id 8141740BFE13; Thu, 18 Jun 2026 03:10:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VxsdzdBoeJnFOpmYYKKVsyXqGQVXHba53nv7DsrNhZcTaeHlSzrY4ubtJPyGg+CsvKGJplFYG+VwKUjU4I1nnam4pGDYJEKv+UufLobrsqOgtSb+1/APaWVUzR9Y0Wh4EavuP6D3uZHB5ReNtj13Hte3q5/jY4rEdv/0qXYNlDhlcO3pt8tDs0El6rdULc7Chk98JjKPZxQvnO3YXekMKHD/3id8Ch5PyUv1S6KG7gSnlDOcs6TwFbhzwHv0riUBgFP7nlq8DTdtqKqtoteDLmO52KlGPMqcc6DYSDwheZGP9PPNBfyeHEppVxWAjKFBLwZeUPd01LRv9im0M5LbYg== 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=MyGUIiVfQl5C8JloUMEhwOP7v3wWFavM3zpWoNGqAjfGIk1WCT6N88Xfm2D8V5kxZjnpSI0wL5mVHHHyjvRNw1kIWcz3rRntXB7ZL+UDipBv40rrcHemvuGsJ9PI5u2SxV7Tb3uFTbZ/ueuwiPMerlQSpkEPFbbDEPrRukZqHwVrsZLY7WBNGtTj+TZkodioY1hfDz3HgtFihsOXFeTJz9wIlXj9MvHoX7DlCVG3nRP1ESgSeYXq79LwTTTGPuL216JD841UuwffvyGtmF1LfXvouokECBd/kB2WFfwYCi/bunCOzd2I8jeUy47FonLjITcIUcPP22dL4LUt4ELf4w== 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=B/7Rhszox96tZqVEpz2fP9cFVlBtxdFoQdpv+BQHDFOhfywSWE9x483pAlvXmh1/l4RTz72DHzqpN+nvIE7SlMBfCiu/RP+JNJrHz9mS1GXLAd7f0VSFBcX2nNhDAvIbLqc2M4XD7XHPepYu3QmaQAsNSXaRO0b3InoYSVDH0iRI8VB93niRbD1GYjNl/diVX7aMvUGOie6bVteGO45SvnSU+COPlnF8UvDWkQFKlDjh1JXnT/aLSV23ErtqW4OXuomchPj/Rr822otHv53oe8CewTMKDHVjavHogqSw1PEvNzlNcgDyqdmzTLIsbmO3wMazbekmf0N3LctmGzmLNg== 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 Cc: Kuan-Jui Chiu Subject: [PATCH v5 7/8] hw/gpio: Add Cadence GPIO controller Date: Thu, 18 Jun 2026 03:12:48 -0700 Message-Id: <20260618101249.2926976-8-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260618101249.2926976-1-kchiu@axiado.com> References: <20260618101249.2926976-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B06A:EE_|PH5PR18MB927675:EE_ X-MS-Office365-Filtering-Correlation-Id: 0409b3c1-856d-46f9-ff17-08decd22305b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|23010399003|1800799024|36860700016|376014|3023799007|56012099006|6133799003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: pONkkK5lMVXpVk1EbPDQEG+NNKLjIk5Uv8j32AGTI+TQjgB+1eGCzoKps0iDZaB3oYkllqdGr9ptY5nUdjScA/eDFJ4D9GyJPEIlfx0jx2qnueSrU9ruxPQG4enGJ0zUcI63hlE3tUPe6NVNUqOUSJOsCVrHWU0urXbhrjnwbWsRzp959uQ+9vMEs0XsIb4Ey5u6Sj1/glrSh7I5z+/sCvXUekiGDpnjOGvV2++WbcVJXVCG+oAme1MTRG1Z0zT6YMAesal03wG+uFGkNixtc5wtMzSCvL5jnOhfY1ABpe5ccKZa8BKrPbrK4M9aG+Wh2MXwQOaBceRu+dAmaR6yQaCPLTSL81NsBU6FmTCgQkvgufs7VGa61g7BOY1Np7s/uFguloyEjbTEHJblKujqWpaeVatItvem38Fq0tUOoDJDVY+kr64yhXkLA9chsNpQIC0mRHc3tNtHDb82VAsfFjRNFvxp/fRlH8mUHHzkI+nJZx6rTEIpPfa+ZNL7iWIrMfU8v4MZfvgwLRwmSeoz3vHEdps01GRnEK8lxjH+riJFN1PUTN1bitXhzEHmyD/pIyflnA5EQjKP792njOh2I/bTYX67+tildRGGton1xKoUQ+MfcciNVkYpYOPm6NQ3KlIX3UISd052F6d49mw3GPh3Im9P+3mITmFO0SQY6eJ+p6MpV7FrwL8FehBf+wr9SKtJe0U0kag2v6JD4hGUsqFUpdiL1+htRKhddNcitIU= X-Forefront-Antispam-Report: CIP:64.62.143.114; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:smtp.corp.axiado.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(82310400026)(23010399003)(1800799024)(36860700016)(376014)(3023799007)(56012099006)(6133799003)(18002099003)(22082099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /K0Qhzyhcj1dK2QoTFqtPZc4JK4jWqvsS/fIprdnhDyjUHfEdC5pBtuXpeVUBKYeGx8ZLzgeAZconZbVSmVIMDNg9kOfZg5UUDRkEj1UIUAemPGgOZZy9Ym8Oa7354VuPqqrztSg+PnvLbAb0qOtmhY6A2f+BshiM6ejGoxXkTWmmCU1rcGxw4rFtRGbe/8p9bulleoDW9HbDr3tIop2C1HQwzAZcBOcOf6aRIMVWtrsucYcE1vZXusgMHlh+KeaON6BhByqMWZNSXBl+k5DjMHcoF31M26Z80WDTgxumNFyOkqq20D+qF0BeijuR87PLUvW/GM9TjGS1nTLTrov04HD7NC/g0Ej7vMvwISaFxNhQgXyZF5csiYr9qjIuKjyHyBk9gDN8kD9lrpI68tarWV8LPAYpspqkZVwuJEfz5slImoBVLsLoy6jSCGa8TfR X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2026 10:13:05.5359 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0409b3c1-856d-46f9-ff17-08decd22305b 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: BN3PEPF0000B06A.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH5PR18MB927675 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: 1781777639602158500 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 Sat Jun 20 15:22:19 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=1781777637; cv=pass; d=zohomail.com; s=zohoarc; b=DTfwT9mudZW3O0w4c8LHDSwChrRgdsYraIHFgLdhkY+CLKz5u8iMDRN/mvz3KWAyj3ym8+WwKBwbiLa2Rrnv8IGEvy7F9xErAO+bqbpZ0Fz2vLG2/HZHVnPXHyFHLFYkv2i16yVIQW8xpxZWiBqU+a0Ku/G0Ou6bDWRoawG4PvU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781777637; 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=di6xXB4q0ZamLQf6EcwMIC/esOgAswlfGEUL3kBir1M=; b=F5QlJmNChzeX7FETRMumsrrgFkwe0uPrlCpQeHiBZcRKWCSn6TawoydkQMlDhq9bA7gy6Z9kmroKFLwEpYkeMUBbsWpzOLXT8S44s/5LLI2tlFpk9BanSoNa6zl+H5iZGSuvjx/646k12zoRNPvwXBKS4xZmUkXJrmB3tVEFnxM= 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 1781777637127496.9185483797784; Thu, 18 Jun 2026 03:13:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wa9kN-0005d0-P9; Thu, 18 Jun 2026 06:13:19 -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 1wa9kH-0005c6-92 for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:14 -0400 Received: from mail-eastus2azlp170100001.outbound.protection.outlook.com ([2a01:111:f403:c110::1] helo=BN1PR04CU002.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 1wa9kE-0006Bv-Vs for qemu-devel@nongnu.org; Thu, 18 Jun 2026 06:13:12 -0400 Received: from BL1PR13CA0204.namprd13.prod.outlook.com (2603:10b6:208:2be::29) by MN0PR18MB6093.namprd18.prod.outlook.com (2603:10b6:208:4be::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.113.18; Thu, 18 Jun 2026 10:13:05 +0000 Received: from BN3PEPF0000B06F.namprd21.prod.outlook.com (2603:10b6:208:2be:cafe::63) by BL1PR13CA0204.outlook.office365.com (2603:10b6:208:2be::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.139.13 via Frontend Transport; Thu, 18 Jun 2026 10:13:05 +0000 Received: from smtp.corp.axiado.com (64.62.143.114) by BN3PEPF0000B06F.mail.protection.outlook.com (10.167.243.74) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.159.0 via Frontend Transport; Thu, 18 Jun 2026 10:13:05 +0000 Received: from axiado.com (unknown [10.4.1.181]) by smtp.corp.axiado.com (Postfix) with ESMTP id B0B8640BFE15; Thu, 18 Jun 2026 03:10:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MyStBuIAxxJy2uIOMwDOdyenr8OyvpmYHBh8FDb0YTVFA8bYFSvWOW+lkeFBfWLo0OqBu01FmTeGYn/QjSP+/l362jU0HFMcPEJjNPpOLwlVyDF6D1Wtn6D8syj15tzaZDhCnbJWNYDGz7xFaS1nfFbkSpTgbfdJu863cCQB74Jj2yeDjEw4Eo+7zO6kLDCAa8CYDyMyk+BSGZ3d/X3fjyRBp1IrLGtMcBHPNa0+qrhiXyWuZDMdRpVR4bh/ZU3ABQFMY6l6hTul14abT3ypYtL+zet/kTrYmxKlooW/6B5KqY/6K9mrmg3D7WlR72M6fPm51fC4LVIa10HSR6Zfxw== 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=di6xXB4q0ZamLQf6EcwMIC/esOgAswlfGEUL3kBir1M=; b=J/953SYYJi51vyzwgCa43G59sqpt+ThKIxKrntny823nCAiZJ11LoaGxEjN5dq7ic/HRxq7H2njqmLzmMU8i8xfwkne3MSz+4IEQinKsc1hpiWyjOl7o+WwBhq9QcJMskyxEl+SgoQ9Zpz9+MKbvzGiJvA+vh4XFR4QFH6EsVTH1s0RpJpjRKc3zwKvgL22MXd8ru/lTfjjyfnuPz8XOt7uCgrI1Lp6oZIpQvysjFM5U37x4YWpKF7sfaE7w36gKQ+UUzKCdimuXlizYk8MmGHkM2HUbYV8JSeYDzd2nbaW2x78VcKUfSPJb0Z3mSgcuRIoeokmv6ijC9XTJc6rqxQ== 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=di6xXB4q0ZamLQf6EcwMIC/esOgAswlfGEUL3kBir1M=; b=g+Z/H0gsbTm62KFMPbkxxRFtb7VVXkm+OCzfVTL6BCm/H8sKhNYao1onS8rySfE8t7mwNbww87CAMAgCz7V/t0AIXfgqD1o1hnMWAaMgj9yQBbinyrMH3/8myvcE3nzGTRQ79us7b2fj24ou25cfJ38tavEr+8Z7FCqAcHOXZwBVqwx/nrgW4MuCQBIZvnQjrmttylfIYBiagYeVoFG7Cx3ob0uz4f1xrp13rerhkd2aDX1dr5/2fBICENO/yyy/wLSsR9jyvFfL/2AZ4TKT9JvkVVz4dg6jNKhoIbxt0NtH2TzNbtObSEl8tTBiBduazwAWRciO2spo6oL+SefDtA== 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 Cc: Kuan-Jui Chiu Subject: [PATCH v5 8/8] hw/arm: ax3000-soc: Enable Cadence GPIO controllers Date: Thu, 18 Jun 2026 03:12:49 -0700 Message-Id: <20260618101249.2926976-9-kchiu@axiado.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260618101249.2926976-1-kchiu@axiado.com> References: <20260618101249.2926976-1-kchiu@axiado.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B06F:EE_|MN0PR18MB6093:EE_ X-MS-Office365-Filtering-Correlation-Id: 3df6097c-c905-49b1-6567-08decd22305e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|23010399003|82310400026|376014|1800799024|56012099006|6133799003|22082099003|18002099003; X-Microsoft-Antispam-Message-Info: R5hMvsa2UaS2XWviAZRoATl6hTI9M67zCY7Izncav+vhOO0FfM1u+HnXJib86MMfcPiGDu6hXVzwAXybk/R/2/n6BeZgPd6ES7wu3cKxZ5lHqLzpCj/ftUg/FZtoEZO1ln5SU01SZWnwr+QPcZBCmfsNylnknOzPYdKxa8sz1CXQx5hCPg+NJ/XoKUQId0qN/IED0TFoetQhpJ/Su+WfYtZv+flJqAfmTs6usJSAUi6+FavLivmOOtjE/sqZToE+VSYDzbfICmyT02AIoTpFZrBSh0MSPV/zbTFg0As2mKeaf1ER5dDMJBc5i+3v0c7w4F33iY9W5D2wbcsdzjh1vzdPg4nZjsON5l001B2zLrs5JqGo9dqAKDVOgHdy5EQgaNKiT5HCIOn/4moSXrd9GIiNotQtPOClL2np55OMZ6vGW1+4yn9pCzcsa+sID1x4QzigLy3tYfNMPsky6r/mXi5/pyGekyhTDmV5bNYk+nznR0bpO1ATornBCXBsklpk6gEJoGAQIh5z1+Kc1olki9YkfVrW87HuMckl0UfAPHFv+4ROt0tL2qxecocPr/8T6PhhhWaBUKxHFrCZYa2h+5sATyD4PGWC/F7/+UaVtxChzt6TB156XGzo4SYxLVsVwMJXdxjv24AdrNgjeTbgTde33mV5GoQKA+j4nKWskRk0sgsG2OqfgJQIWJQ1OTC85DwW331C/NZK4sWcXcOoFPiU2bulyXu907xKgC0lTTM= 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)(23010399003)(82310400026)(376014)(1800799024)(56012099006)(6133799003)(22082099003)(18002099003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gPNJ90pOR/Mnl7nhiR4K3qRdMOK04WxEMUf7jkmajxEUwAV9jlJRt+2UdJKby33IVWgX0zkCB8nGDLk+W55W70RwByxG8vq+lCu/Fr4DT6BeUxaDMv64vAMgbXQNexv5Znb6Or+iLQAiAtnZCMArgRoU5OHX/LzcblUXOj8k61QBznNqfP5mKB/IYTd6dC2Nqm2wuFbEROuJrNfqCGYAPYta6L+bB2YCtnz5aYTJcOK9TwsgWYYpSUmIiJwGjJcg0d0+NdlFhGvbi9mt8q7aGI2UGYhuB0lkx7lTtJje5wCIKmUSgEUKDmfX304N3Aw7fydV0ZRg7Ac6FYnPzp5AZeIi9i0NIYlSnG2fviLFXMiULPoHDL3A+I7PLCzk4s3QY8QBbRWX7F7bZUqJ0zSvsJVUAVAAugNLU89RoKSRg6eLB/NOvNNYnWsYDsbOk1uy X-OriginatorOrg: axiado.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2026 10:13:05.5511 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3df6097c-c905-49b1-6567-08decd22305e 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: BN3PEPF0000B06F.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR18MB6093 Received-SPF: pass client-ip=2a01:111:f403:c110::1; envelope-from=kchiu@axiado.com; helo=BN1PR04CU002.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: 1781777639494158500 Content-Type: text/plain; charset="utf-8" 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 7fc6fae9673..84810b0eadd 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -724,6 +724,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 159385cf913..98b4f1697ce 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 */ + for (int i =3D 0; i < AX3000_NUM_GPIOS; i++) { + 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 } + }; + + 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