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