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