Revision aa941b94 hw/pxa2xx_gpio.c
b/hw/pxa2xx_gpio.c | ||
---|---|---|
247 | 247 |
pxa2xx_gpio_write |
248 | 248 |
}; |
249 | 249 |
|
250 |
static void pxa2xx_gpio_save(QEMUFile *f, void *opaque) |
|
251 |
{ |
|
252 |
struct pxa2xx_gpio_info_s *s = (struct pxa2xx_gpio_info_s *) opaque; |
|
253 |
int i; |
|
254 |
|
|
255 |
qemu_put_be32(f, s->lines); |
|
256 |
|
|
257 |
for (i = 0; i < PXA2XX_GPIO_BANKS; i ++) { |
|
258 |
qemu_put_be32s(f, &s->ilevel[i]); |
|
259 |
qemu_put_be32s(f, &s->olevel[i]); |
|
260 |
qemu_put_be32s(f, &s->dir[i]); |
|
261 |
qemu_put_be32s(f, &s->rising[i]); |
|
262 |
qemu_put_be32s(f, &s->falling[i]); |
|
263 |
qemu_put_be32s(f, &s->status[i]); |
|
264 |
qemu_put_be32s(f, &s->gafr[i * 2 + 0]); |
|
265 |
qemu_put_be32s(f, &s->gafr[i * 2 + 1]); |
|
266 |
|
|
267 |
qemu_put_be32s(f, &s->prev_level[i]); |
|
268 |
} |
|
269 |
} |
|
270 |
|
|
271 |
static int pxa2xx_gpio_load(QEMUFile *f, void *opaque, int version_id) |
|
272 |
{ |
|
273 |
struct pxa2xx_gpio_info_s *s = (struct pxa2xx_gpio_info_s *) opaque; |
|
274 |
int i; |
|
275 |
|
|
276 |
if (qemu_get_be32(f) != s->lines) |
|
277 |
return -EINVAL; |
|
278 |
|
|
279 |
for (i = 0; i < PXA2XX_GPIO_BANKS; i ++) { |
|
280 |
qemu_get_be32s(f, &s->ilevel[i]); |
|
281 |
qemu_get_be32s(f, &s->olevel[i]); |
|
282 |
qemu_get_be32s(f, &s->dir[i]); |
|
283 |
qemu_get_be32s(f, &s->rising[i]); |
|
284 |
qemu_get_be32s(f, &s->falling[i]); |
|
285 |
qemu_get_be32s(f, &s->status[i]); |
|
286 |
qemu_get_be32s(f, &s->gafr[i * 2 + 0]); |
|
287 |
qemu_get_be32s(f, &s->gafr[i * 2 + 1]); |
|
288 |
|
|
289 |
qemu_get_be32s(f, &s->prev_level[i]); |
|
290 |
} |
|
291 |
|
|
292 |
return 0; |
|
293 |
} |
|
294 |
|
|
250 | 295 |
struct pxa2xx_gpio_info_s *pxa2xx_gpio_init(target_phys_addr_t base, |
251 | 296 |
CPUState *env, qemu_irq *pic, int lines) |
252 | 297 |
{ |
... | ... | |
265 | 310 |
pxa2xx_gpio_writefn, s); |
266 | 311 |
cpu_register_physical_memory(base, 0x00000fff, iomemtype); |
267 | 312 |
|
313 |
register_savevm("pxa2xx_gpio", 0, 0, |
|
314 |
pxa2xx_gpio_save, pxa2xx_gpio_load, s); |
|
315 |
|
|
268 | 316 |
return s; |
269 | 317 |
} |
270 | 318 |
|
Also available in: Unified diff