hw/misc/iotkit-sysinfo.c: add SSE-310 support
Add SSE-310 PIDR and CIDR registers. Add sys_config2 register and always report 0 on read as we do not implement the NPU. Reviewed-by: Owen Giles <owen.giles@hpe.com> Reviewed-by: Robert Elliott <elliott@hpe.com> Signed-off-by: Simon Xu <simonxhy0404@gmail.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-Id: <20260805153005.9989-8-simonxhy0404@gmail.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Simon Xu committed
Aug 17, 2026 at 19:26 UTC
d99f8e511a0fdd1b0743f0a63acc3e034271a4de
1 file changed
+21
-1
hw/misc/iotkit-sysinfo.c
+21
-1
@@ -31,6 +31,7 @@
31
REG32(SYS_VERSION, 0x0)
32
REG32(SYS_CONFIG, 0x4)
33
REG32(SYS_CONFIG1, 0x8)
34
+REG32(SYS_CONFIG2, 0xc)
35
REG32(IIDR, 0xfc8)
36
REG32(PID4, 0xfd0)
37
REG32(PID5, 0xfd4)
@@ -58,6 +59,12 @@ static const int sysinfo_sse300_id[] = {
59
0x0d, 0xf0, 0x05, 0xb1, /* CID0..CID3 */
60
};
61
62
+static const int sysinfo_sse310_id[] = {
63
+ 0x04, 0x00, 0x00, 0x00, /* PID4..PID7 */
64
+ 0x58, 0xb8, 0x2b, 0x00, /* PID0..PID3 */
65
+ 0x0d, 0xf0, 0x05, 0xb1, /* CID0..CID3 */
66
+};
67
+
68
static uint64_t iotkit_sysinfo_read(void *opaque, hwaddr offset,
69
unsigned size)
70
{
@@ -68,13 +75,22 @@ static uint64_t iotkit_sysinfo_read(void *opaque, hwaddr offset,
75
case A_SYS_VERSION:
76
r = s->sys_version;
77
break;
71
-
78
case A_SYS_CONFIG:
79
r = s->sys_config;
80
break;
81
case A_SYS_CONFIG1:
82
switch (s->sse_version) {
83
case ARMSSE_SSE300:
84
+ case ARMSSE_SSE310:
85
+ return 0;
86
+ break;
87
+ default:
88
+ goto bad_read;
89
+ }
90
+ break;
91
+ case A_SYS_CONFIG2:
92
+ switch (s->sse_version) {
93
+ case ARMSSE_SSE310:
94
return 0;
95
break;
96
default:
@@ -84,6 +100,7 @@ static uint64_t iotkit_sysinfo_read(void *opaque, hwaddr offset,
100
case A_IIDR:
101
switch (s->sse_version) {
102
case ARMSSE_SSE300:
103
+ case ARMSSE_SSE310:
104
return s->iidr;
105
break;
106
default:
@@ -95,6 +112,9 @@ static uint64_t iotkit_sysinfo_read(void *opaque, hwaddr offset,
112
case ARMSSE_SSE300:
113
r = sysinfo_sse300_id[(offset - A_PID4) / 4];
114
break;
115
+ case ARMSSE_SSE310:
116
+ r = sysinfo_sse310_id[(offset - A_PID4) / 4];
117
+ break;
118
default:
119
r = sysinfo_id[(offset - A_PID4) / 4];
120
break;