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