Revision 64e58fe5 hw/usb-uhci.c

b/hw/usb-uhci.c
139 139
    /* Active packets */
140 140
    UHCIAsync *async_pending;
141 141
    UHCIAsync *async_pool;
142
    uint8_t num_ports_vmstate;
142 143
} UHCIState;
143 144

  
144 145
typedef struct UHCI_TD {
......
353 354
static void uhci_save(QEMUFile *f, void *opaque)
354 355
{
355 356
    UHCIState *s = opaque;
356
    uint8_t num_ports = NB_PORTS;
357 357
    int i;
358 358

  
359 359
    uhci_async_cancel_all(s);
360 360

  
361 361
    pci_device_save(&s->dev, f);
362 362

  
363
    qemu_put_8s(f, &num_ports);
364
    for (i = 0; i < num_ports; ++i)
363
    qemu_put_8s(f, &s->num_ports_vmstate);
364
    for (i = 0; i < s->num_ports_vmstate; ++i)
365 365
        qemu_put_be16s(f, &s->ports[i].ctrl);
366 366
    qemu_put_be16s(f, &s->cmd);
367 367
    qemu_put_be16s(f, &s->status);
......
376 376
static int uhci_load(QEMUFile *f, void *opaque, int version_id)
377 377
{
378 378
    UHCIState *s = opaque;
379
    uint8_t num_ports;
380 379
    int i, ret;
381 380

  
382 381
    if (version_id > 1)
......
386 385
    if (ret < 0)
387 386
        return ret;
388 387

  
389
    qemu_get_8s(f, &num_ports);
390
    if (num_ports != NB_PORTS)
388
    qemu_get_8s(f, &s->num_ports_vmstate);
389
    if (s->num_ports_vmstate != NB_PORTS)
391 390
        return -EINVAL;
392 391

  
393
    for (i = 0; i < num_ports; ++i)
392
    for (i = 0; i < s->num_ports_vmstate; ++i)
394 393
        qemu_get_be16s(f, &s->ports[i].ctrl);
395 394
    qemu_get_be16s(f, &s->cmd);
396 395
    qemu_get_be16s(f, &s->status);
......
1088 1087
        usb_register_port(&s->bus, &s->ports[i].port, s, i, uhci_attach);
1089 1088
    }
1090 1089
    s->frame_timer = qemu_new_timer(vm_clock, uhci_frame_timer, s);
1090
    s->num_ports_vmstate = NB_PORTS;
1091 1091

  
1092 1092
    qemu_register_reset(uhci_reset, s);
1093 1093
    uhci_reset(s);

Also available in: Unified diff