From: Khai Do <dovankhai97@gmail.com>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org, peter.maydell@linaro.org,
pbonzini@redhat.com, strahinja.p.jankovic@gmail.com,
Khai Do <dovankhai97@gmail.com>
Subject: [PATCH 5/5] hw/arm/allwinner-h618: Connect Allwinner SID controller
Date: Sat, 31 Oct 2026 21:51:47 +0700 [thread overview]
Message-ID: <20261031145147.32683-6-dovankhai97@gmail.com> (raw)
In-Reply-To: <20261031145147.32683-1-dovankhai97@gmail.com>
Wire up the Allwinner Security ID (SID) eFuse controller into the
H618 SoC model:
- Map SID MMIO registers at 0x03006000 with 512 bytes capacity
- Remove sid from unimplemented peripheral list
- Configure default fixed SID identifier in Orange Pi Zero 2W machine
- Select ALLWINNER_SID in Kconfig
Signed-off-by: Khai Do <dovankhai97@gmail.com>
---
hw/arm/Kconfig | 1 +
hw/arm/allwinner-h618.c | 11 ++++++++++-
hw/arm/orangepi-zero2w.c | 8 ++++++++
include/hw/arm/allwinner-h618.h | 3 +++
4 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig
index 21480e277d..a1c09272fd 100644
--- a/hw/arm/Kconfig
+++ b/hw/arm/Kconfig
@@ -339,6 +339,7 @@ config ALLWINNER_H618
default y if TCG && AARCH64
select SERIAL_MM
select ARM_GIC
+ select ALLWINNER_SID
select UNIMP
config MAX78000_SOC
diff --git a/hw/arm/allwinner-h618.c b/hw/arm/allwinner-h618.c
index 59e0196fc6..2135df78e7 100644
--- a/hw/arm/allwinner-h618.c
+++ b/hw/arm/allwinner-h618.c
@@ -29,6 +29,7 @@ const hwaddr allwinner_h618_memmap[] = {
[AW_H618_DEV_GIC_CPU] = 0x03022000,
[AW_H618_DEV_GIC_HYP] = 0x03024000,
[AW_H618_DEV_GIC_VCPU] = 0x03026000,
+ [AW_H618_DEV_SID] = 0x03006000,
[AW_H618_DEV_UART0] = 0x05000000,
[AW_H618_DEV_UART1] = 0x05000400,
[AW_H618_DEV_UART2] = 0x05000800,
@@ -44,7 +45,6 @@ static const struct AwH618Unimplemented {
} unimplemented[] = {
{ "ccu", 0x03001000, 4 * KiB },
{ "dma", 0x03002000, 4 * KiB },
- { "sid", 0x03006000, 4 * KiB },
{ "smc", 0x03007000, 4 * KiB },
{ "timer", 0x03009000, 4 * KiB },
{ "pwm", 0x0300a000, 4 * KiB },
@@ -91,6 +91,10 @@ static void allwinner_h618_init(Object *obj)
}
object_initialize_child(obj, "gic", &s->gic, TYPE_ARM_GIC);
+
+ object_initialize_child(obj, "sid", &s->sid, TYPE_AW_SID);
+ object_property_add_alias(obj, "identifier", OBJECT(&s->sid),
+ "identifier");
}
static void allwinner_h618_realize(DeviceState *dev, Error **errp)
@@ -172,6 +176,11 @@ static void allwinner_h618_realize(DeviceState *dev, Error **errp)
ppibase + AW_H618_GIC_PPI_MAINT));
}
+ /* Security Identifier */
+ qdev_prop_set_uint32(DEVICE(&s->sid), "size", 512);
+ sysbus_realize(SYS_BUS_DEVICE(&s->sid), &error_fatal);
+ sysbus_mmio_map(SYS_BUS_DEVICE(&s->sid), 0, s->memmap[AW_H618_DEV_SID]);
+
/* SRAM */
memory_region_init_ram(&s->sram_a1, OBJECT(dev), "sram A1",
64 * KiB, &error_abort);
diff --git a/hw/arm/orangepi-zero2w.c b/hw/arm/orangepi-zero2w.c
index fe87a98efc..1cc9ad7ba6 100644
--- a/hw/arm/orangepi-zero2w.c
+++ b/hw/arm/orangepi-zero2w.c
@@ -40,6 +40,14 @@ static void orangepi_zero2w_init(MachineState *machine)
object_property_add_child(OBJECT(machine), "soc", OBJECT(h618));
object_unref(OBJECT(h618));
+ /* Setup SID properties. Currently using a default fixed SID identifier. */
+ if (qemu_uuid_is_null(&h618->sid.identifier)) {
+ qdev_prop_set_string(DEVICE(h618), "identifier",
+ "03006180-1111-2222-3333-000044556677");
+ } else if (ldl_be_p(&h618->sid.identifier.data[0]) != 0x03006180) {
+ warn_report("Security Identifier value does not include H618 prefix");
+ }
+
/* Mark H618 object realized */
qdev_realize(DEVICE(h618), NULL, &error_abort);
diff --git a/include/hw/arm/allwinner-h618.h b/include/hw/arm/allwinner-h618.h
index e1b7162759..d4c3d19725 100644
--- a/include/hw/arm/allwinner-h618.h
+++ b/include/hw/arm/allwinner-h618.h
@@ -11,6 +11,7 @@
#include "qom/object.h"
#include "hw/intc/arm_gic.h"
+#include "hw/misc/allwinner-sid.h"
#include "target/arm/cpu.h"
/**
@@ -23,6 +24,7 @@ enum {
AW_H618_DEV_GIC_CPU,
AW_H618_DEV_GIC_HYP,
AW_H618_DEV_GIC_VCPU,
+ AW_H618_DEV_SID,
AW_H618_DEV_UART0,
AW_H618_DEV_UART1,
AW_H618_DEV_UART2,
@@ -50,6 +52,7 @@ struct AwH618State {
ARMCPU cpus[AW_H618_NUM_CPUS];
const hwaddr *memmap;
GICState gic;
+ AwSidState sid;
MemoryRegion sram_a1;
MemoryRegion sram_a2;
};
--
2.43.0
prev parent reply other threads:[~2026-10-31 14:58 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-31 14:51 [PATCH 0/5] hw/arm: Add Allwinner H618 SoC and Orange Pi Zero 2W machine Khai Do
2026-10-31 14:51 ` [PATCH 1/5] hw/arm/allwinner-h618: Add Allwinner H618 SoC emulation Khai Do
2026-10-31 14:51 ` [PATCH 2/5] hw/arm/orangepi-zero2w: Add Orange Pi Zero 2W machine Khai Do
2026-10-31 14:51 ` [PATCH 3/5] hw/misc/allwinner-sid: Separate ALLWINNER_SID config symbol Khai Do
2026-10-31 14:51 ` [PATCH 4/5] hw/misc/allwinner-sid: Support configurable eFuse capacity up to 512 bytes Khai Do
2026-10-31 14:51 ` Khai Do [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261031145147.32683-6-dovankhai97@gmail.com \
--to=dovankhai97@gmail.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=strahinja.p.jankovic@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.