Revision aa941b94 hw/wm8750.c
b/hw/wm8750.c | ||
---|---|---|
491 | 491 |
return 0x00; |
492 | 492 |
} |
493 | 493 |
|
494 |
static void wm8750_save(QEMUFile *f, void *opaque) |
|
495 |
{ |
|
496 |
struct wm8750_s *s = (struct wm8750_s *) opaque; |
|
497 |
int i; |
|
498 |
qemu_put_8s(f, &s->i2c_data[0]); |
|
499 |
qemu_put_8s(f, &s->i2c_data[1]); |
|
500 |
qemu_put_be32(f, s->i2c_len); |
|
501 |
qemu_put_be32(f, s->enable); |
|
502 |
qemu_put_be32(f, s->idx_in); |
|
503 |
qemu_put_be32(f, s->req_in); |
|
504 |
qemu_put_be32(f, s->idx_out); |
|
505 |
qemu_put_be32(f, s->req_out); |
|
506 |
|
|
507 |
for (i = 0; i < 7; i ++) |
|
508 |
qemu_put_8s(f, &s->outvol[i]); |
|
509 |
for (i = 0; i < 2; i ++) |
|
510 |
qemu_put_8s(f, &s->outmute[i]); |
|
511 |
for (i = 0; i < 4; i ++) |
|
512 |
qemu_put_8s(f, &s->invol[i]); |
|
513 |
for (i = 0; i < 2; i ++) |
|
514 |
qemu_put_8s(f, &s->inmute[i]); |
|
515 |
|
|
516 |
for (i = 0; i < 2; i ++) |
|
517 |
qemu_put_8s(f, &s->diff[i]); |
|
518 |
qemu_put_8s(f, &s->pol); |
|
519 |
qemu_put_8s(f, &s->ds); |
|
520 |
for (i = 0; i < 2; i ++) |
|
521 |
qemu_put_8s(f, &s->monomix[i]); |
|
522 |
qemu_put_8s(f, &s->alc); |
|
523 |
qemu_put_8s(f, &s->mute); |
|
524 |
for (i = 0; i < 4; i ++) |
|
525 |
qemu_put_8s(f, &s->path[i]); |
|
526 |
for (i = 0; i < 2; i ++) |
|
527 |
qemu_put_8s(f, &s->mpath[i]); |
|
528 |
qemu_put_8s(f, &s->format); |
|
529 |
qemu_put_8s(f, &s->power); |
|
530 |
qemu_put_be32s(f, &s->inmask); |
|
531 |
qemu_put_be32s(f, &s->outmask); |
|
532 |
qemu_put_byte(f, (s->rate - wm_rate_table) / sizeof(*s->rate)); |
|
533 |
i2c_slave_save(f, &s->i2c); |
|
534 |
} |
|
535 |
|
|
536 |
static int wm8750_load(QEMUFile *f, void *opaque, int version_id) |
|
537 |
{ |
|
538 |
struct wm8750_s *s = (struct wm8750_s *) opaque; |
|
539 |
int i; |
|
540 |
qemu_get_8s(f, &s->i2c_data[0]); |
|
541 |
qemu_get_8s(f, &s->i2c_data[1]); |
|
542 |
s->i2c_len = qemu_get_be32(f); |
|
543 |
s->enable = qemu_get_be32(f); |
|
544 |
s->idx_in = qemu_get_be32(f); |
|
545 |
s->req_in = qemu_get_be32(f); |
|
546 |
s->idx_out = qemu_get_be32(f); |
|
547 |
s->req_out = qemu_get_be32(f); |
|
548 |
|
|
549 |
for (i = 0; i < 7; i ++) |
|
550 |
qemu_get_8s(f, &s->outvol[i]); |
|
551 |
for (i = 0; i < 2; i ++) |
|
552 |
qemu_get_8s(f, &s->outmute[i]); |
|
553 |
for (i = 0; i < 4; i ++) |
|
554 |
qemu_get_8s(f, &s->invol[i]); |
|
555 |
for (i = 0; i < 2; i ++) |
|
556 |
qemu_get_8s(f, &s->inmute[i]); |
|
557 |
|
|
558 |
for (i = 0; i < 2; i ++) |
|
559 |
qemu_get_8s(f, &s->diff[i]); |
|
560 |
qemu_get_8s(f, &s->pol); |
|
561 |
qemu_get_8s(f, &s->ds); |
|
562 |
for (i = 0; i < 2; i ++) |
|
563 |
qemu_get_8s(f, &s->monomix[i]); |
|
564 |
qemu_get_8s(f, &s->alc); |
|
565 |
qemu_get_8s(f, &s->mute); |
|
566 |
for (i = 0; i < 4; i ++) |
|
567 |
qemu_get_8s(f, &s->path[i]); |
|
568 |
for (i = 0; i < 2; i ++) |
|
569 |
qemu_get_8s(f, &s->mpath[i]); |
|
570 |
qemu_get_8s(f, &s->format); |
|
571 |
qemu_get_8s(f, &s->power); |
|
572 |
qemu_get_be32s(f, &s->inmask); |
|
573 |
qemu_get_be32s(f, &s->outmask); |
|
574 |
s->rate = &wm_rate_table[(uint8_t) qemu_get_byte(f) & 0x1f]; |
|
575 |
i2c_slave_load(f, &s->i2c); |
|
576 |
return 0; |
|
577 |
} |
|
578 |
|
|
579 |
static int wm8750_iid = 0; |
|
580 |
|
|
494 | 581 |
i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio) |
495 | 582 |
{ |
496 | 583 |
struct wm8750_s *s = (struct wm8750_s *) |
... | ... | |
502 | 589 |
AUD_register_card(audio, CODEC, &s->card); |
503 | 590 |
wm8750_reset(&s->i2c); |
504 | 591 |
|
592 |
register_savevm(CODEC, wm8750_iid ++, 0, wm8750_save, wm8750_load, s); |
|
593 |
|
|
505 | 594 |
return &s->i2c; |
506 | 595 |
} |
507 | 596 |
|
Also available in: Unified diff