Revision 371a4468
b/hw/tmp105.c | ||
---|---|---|
173 | 173 |
s->len = 0; |
174 | 174 |
} |
175 | 175 |
|
176 |
static void tmp105_save(QEMUFile *f, void *opaque)
|
|
176 |
static void tmp105_post_save(void *opaque)
|
|
177 | 177 |
{ |
178 |
TMP105State *s = (TMP105State *) opaque; |
|
179 |
|
|
180 |
qemu_put_byte(f, s->len); |
|
181 |
qemu_put_8s(f, &s->buf[0]); |
|
182 |
qemu_put_8s(f, &s->buf[1]); |
|
183 |
|
|
184 |
qemu_put_8s(f, &s->pointer); |
|
185 |
qemu_put_8s(f, &s->config); |
|
186 |
qemu_put_sbe16s(f, &s->temperature); |
|
187 |
qemu_put_sbe16s(f, &s->limit[0]); |
|
188 |
qemu_put_sbe16s(f, &s->limit[1]); |
|
189 |
qemu_put_byte(f, s->alarm); |
|
178 |
TMP105State *s = opaque; |
|
190 | 179 |
s->faults = tmp105_faultq[(s->config >> 3) & 3]; /* F */ |
191 |
|
|
192 |
i2c_slave_save(f, &s->i2c); |
|
193 | 180 |
} |
194 | 181 |
|
195 |
static int tmp105_load(QEMUFile *f, void *opaque, int version_id)
|
|
182 |
static int tmp105_post_load(void *opaque, int version_id)
|
|
196 | 183 |
{ |
197 |
TMP105State *s = (TMP105State *) opaque; |
|
198 |
|
|
199 |
s->len = qemu_get_byte(f); |
|
200 |
qemu_get_8s(f, &s->buf[0]); |
|
201 |
qemu_get_8s(f, &s->buf[1]); |
|
202 |
|
|
203 |
qemu_get_8s(f, &s->pointer); |
|
204 |
qemu_get_8s(f, &s->config); |
|
205 |
qemu_get_sbe16s(f, &s->temperature); |
|
206 |
qemu_get_sbe16s(f, &s->limit[0]); |
|
207 |
qemu_get_sbe16s(f, &s->limit[1]); |
|
208 |
s->alarm = qemu_get_byte(f); |
|
184 |
TMP105State *s = opaque; |
|
209 | 185 |
|
210 | 186 |
tmp105_interrupt_update(s); |
211 |
|
|
212 |
i2c_slave_load(f, &s->i2c); |
|
213 | 187 |
return 0; |
214 | 188 |
} |
215 | 189 |
|
190 |
static const VMStateDescription vmstate_tmp105 = { |
|
191 |
.name = "TMP105", |
|
192 |
.version_id = 0, |
|
193 |
.minimum_version_id = 0, |
|
194 |
.minimum_version_id_old = 0, |
|
195 |
.post_save = tmp105_post_save, |
|
196 |
.post_load = tmp105_post_load, |
|
197 |
.fields = (VMStateField []) { |
|
198 |
VMSTATE_UINT8(len, TMP105State), |
|
199 |
VMSTATE_UINT8_ARRAY(buf, TMP105State, 2), |
|
200 |
VMSTATE_UINT8(pointer, TMP105State), |
|
201 |
VMSTATE_UINT8(config, TMP105State), |
|
202 |
VMSTATE_INT16(temperature, TMP105State), |
|
203 |
VMSTATE_INT16_ARRAY(limit, TMP105State, 2), |
|
204 |
VMSTATE_UINT8(alarm, TMP105State), |
|
205 |
VMSTATE_I2C_SLAVE(i2c, TMP105State), |
|
206 |
VMSTATE_END_OF_LIST() |
|
207 |
} |
|
208 |
}; |
|
209 |
|
|
216 | 210 |
static void tmp105_reset(i2c_slave *i2c) |
217 | 211 |
{ |
218 | 212 |
TMP105State *s = (TMP105State *) i2c; |
... | ... | |
234 | 228 |
|
235 | 229 |
tmp105_reset(&s->i2c); |
236 | 230 |
|
237 |
register_savevm("TMP105", -1, 0, tmp105_save, tmp105_load, s);
|
|
231 |
vmstate_register(-1, &vmstate_tmp105, s);
|
|
238 | 232 |
return 0; |
239 | 233 |
} |
240 | 234 |
|
Also available in: Unified diff