iotkit-sysinfo.c (407664539d76523222a4a4a3ef273645593f75b2) iotkit-sysinfo.c (446587a914cfa57c2ce529056a9ca2215bde7111)
1/*
2 * ARM IoTKit system information block
3 *
4 * Copyright (c) 2018 Linaro Limited
5 * Written by Peter Maydell
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 or

--- 16 unchanged lines hidden (view full) ---

25#include "hw/sysbus.h"
26#include "hw/registerfields.h"
27#include "hw/misc/iotkit-sysinfo.h"
28#include "hw/qdev-properties.h"
29#include "hw/arm/armsse-version.h"
30
31REG32(SYS_VERSION, 0x0)
32REG32(SYS_CONFIG, 0x4)
1/*
2 * ARM IoTKit system information block
3 *
4 * Copyright (c) 2018 Linaro Limited
5 * Written by Peter Maydell
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 or

--- 16 unchanged lines hidden (view full) ---

25#include "hw/sysbus.h"
26#include "hw/registerfields.h"
27#include "hw/misc/iotkit-sysinfo.h"
28#include "hw/qdev-properties.h"
29#include "hw/arm/armsse-version.h"
30
31REG32(SYS_VERSION, 0x0)
32REG32(SYS_CONFIG, 0x4)
33REG32(SYS_CONFIG1, 0x8)
34REG32(IIDR, 0xfc8)
33REG32(PID4, 0xfd0)
34REG32(PID5, 0xfd4)
35REG32(PID6, 0xfd8)
36REG32(PID7, 0xfdc)
37REG32(PID0, 0xfe0)
38REG32(PID1, 0xfe4)
39REG32(PID2, 0xfe8)
40REG32(PID3, 0xfec)

--- 24 unchanged lines hidden (view full) ---

65 switch (offset) {
66 case A_SYS_VERSION:
67 r = s->sys_version;
68 break;
69
70 case A_SYS_CONFIG:
71 r = s->sys_config;
72 break;
35REG32(PID4, 0xfd0)
36REG32(PID5, 0xfd4)
37REG32(PID6, 0xfd8)
38REG32(PID7, 0xfdc)
39REG32(PID0, 0xfe0)
40REG32(PID1, 0xfe4)
41REG32(PID2, 0xfe8)
42REG32(PID3, 0xfec)

--- 24 unchanged lines hidden (view full) ---

67 switch (offset) {
68 case A_SYS_VERSION:
69 r = s->sys_version;
70 break;
71
72 case A_SYS_CONFIG:
73 r = s->sys_config;
74 break;
75 case A_SYS_CONFIG1:
76 switch (s->sse_version) {
77 case ARMSSE_SSE300:
78 return 0;
79 break;
80 default:
81 goto bad_read;
82 }
83 break;
84 case A_IIDR:
85 switch (s->sse_version) {
86 case ARMSSE_SSE300:
87 return s->iidr;
88 break;
89 default:
90 goto bad_read;
91 }
92 break;
73 case A_PID4 ... A_CID3:
74 switch (s->sse_version) {
75 case ARMSSE_SSE300:
76 r = sysinfo_sse300_id[(offset - A_PID4) / 4];
77 break;
78 default:
79 r = sysinfo_id[(offset - A_PID4) / 4];
80 break;
81 }
82 break;
83 default:
93 case A_PID4 ... A_CID3:
94 switch (s->sse_version) {
95 case ARMSSE_SSE300:
96 r = sysinfo_sse300_id[(offset - A_PID4) / 4];
97 break;
98 default:
99 r = sysinfo_id[(offset - A_PID4) / 4];
100 break;
101 }
102 break;
103 default:
104 bad_read:
84 qemu_log_mask(LOG_GUEST_ERROR,
85 "IoTKit SysInfo read: bad offset %x\n", (int)offset);
86 r = 0;
87 break;
88 }
89 trace_iotkit_sysinfo_read(offset, r, size);
90 return r;
91}

--- 17 unchanged lines hidden (view full) ---

109 .valid.min_access_size = 1,
110 .valid.max_access_size = 4,
111};
112
113static Property iotkit_sysinfo_props[] = {
114 DEFINE_PROP_UINT32("SYS_VERSION", IoTKitSysInfo, sys_version, 0),
115 DEFINE_PROP_UINT32("SYS_CONFIG", IoTKitSysInfo, sys_config, 0),
116 DEFINE_PROP_UINT32("sse-version", IoTKitSysInfo, sse_version, 0),
105 qemu_log_mask(LOG_GUEST_ERROR,
106 "IoTKit SysInfo read: bad offset %x\n", (int)offset);
107 r = 0;
108 break;
109 }
110 trace_iotkit_sysinfo_read(offset, r, size);
111 return r;
112}

--- 17 unchanged lines hidden (view full) ---

130 .valid.min_access_size = 1,
131 .valid.max_access_size = 4,
132};
133
134static Property iotkit_sysinfo_props[] = {
135 DEFINE_PROP_UINT32("SYS_VERSION", IoTKitSysInfo, sys_version, 0),
136 DEFINE_PROP_UINT32("SYS_CONFIG", IoTKitSysInfo, sys_config, 0),
137 DEFINE_PROP_UINT32("sse-version", IoTKitSysInfo, sse_version, 0),
138 DEFINE_PROP_UINT32("IIDR", IoTKitSysInfo, iidr, 0),
117 DEFINE_PROP_END_OF_LIST()
118};
119
120static void iotkit_sysinfo_init(Object *obj)
121{
122 SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
123 IoTKitSysInfo *s = IOTKIT_SYSINFO(obj);
124

--- 41 unchanged lines hidden ---
139 DEFINE_PROP_END_OF_LIST()
140};
141
142static void iotkit_sysinfo_init(Object *obj)
143{
144 SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
145 IoTKitSysInfo *s = IOTKIT_SYSINFO(obj);
146

--- 41 unchanged lines hidden ---