Revision cdbe40ca

b/hw/i2c.h
80 80
void max7310_gpio_out_set(i2c_slave *i2c, int line, qemu_irq handler);
81 81

  
82 82
/* wm8750.c */
83
i2c_slave *wm8750_init(i2c_bus *bus);
84
void wm8750_reset(i2c_slave *i2c);
85
void wm8750_data_req_set(i2c_slave *i2c,
83
void wm8750_data_req_set(DeviceState *dev,
86 84
                void (*data_req)(void *, int, int), void *opaque);
87 85
void wm8750_dac_dat(void *opaque, uint32_t sample);
88 86
uint32_t wm8750_adc_dat(void *opaque);
b/hw/musicpal.c
235 235
    unsigned int play_pos;
236 236
    unsigned int last_free;
237 237
    uint32_t clock_div;
238
    i2c_slave *wm;
238
    DeviceState *wm;
239 239
} musicpal_audio_state;
240 240

  
241 241
static void audio_callback(void *opaque, int free_out, int free_in)
......
434 434
    i2c->bus = i2c_init_bus();
435 435
    i2c->current_addr = -1;
436 436

  
437
    s->wm = wm8750_init(i2c->bus);
438
    if (!s->wm)
439
        return NULL;
440
    i2c_set_slave_address(s->wm, MP_WM_ADDR);
437
    s->wm = i2c_create_slave(i2c->bus, "wm8750", MP_WM_ADDR);
441 438
    wm8750_data_req_set(s->wm, audio_callback, s);
442 439

  
443 440
    iomemtype = cpu_register_io_memory(0, musicpal_audio_readfn,
b/hw/spitz.c
740 740
    i2c_bus *bus = pxa2xx_i2c_bus(cpu->i2c[0]);
741 741

  
742 742
#ifdef HAS_AUDIO
743
    i2c_slave *wm;
743
    DeviceState *wm;
744 744

  
745 745
    /* Attach a WM8750 to the bus */
746
    wm = wm8750_init(bus);
746
    wm = i2c_create_slave(bus, "wm8750", 0);
747 747

  
748 748
    spitz_wm8750_addr(wm, 0, 0);
749 749
    pxa2xx_gpio_out_set(cpu->gpio, SPITZ_GPIO_WM,
b/hw/wm8750.c
259 259
    }
260 260
}
261 261

  
262
void wm8750_reset(i2c_slave *i2c)
262
static void wm8750_reset(i2c_slave *i2c)
263 263
{
264 264
    WM8750State *s = (WM8750State *) i2c;
265 265
    s->rate = &wm_rate_table[0];
......
645 645
    return 0;
646 646
}
647 647

  
648
i2c_slave *wm8750_init(i2c_bus *bus)
648
static void wm8750_init(i2c_slave *i2c)
649 649
{
650
    WM8750State *s = (WM8750State *)
651
            i2c_slave_init(bus, 0, sizeof(WM8750State));
652
    s->i2c.event = wm8750_event;
653
    s->i2c.recv = wm8750_rx;
654
    s->i2c.send = wm8750_tx;
650
    WM8750State *s = FROM_I2C_SLAVE(WM8750State, i2c);
655 651

  
656 652
    AUD_register_card(CODEC, &s->card);
657 653
    wm8750_reset(&s->i2c);
658 654

  
659 655
    register_savevm(CODEC, -1, 0, wm8750_save, wm8750_load, s);
660

  
661
    return &s->i2c;
662 656
}
663 657

  
664 658
#if 0
......
671 665
}
672 666
#endif
673 667

  
674
void wm8750_data_req_set(i2c_slave *i2c,
668
void wm8750_data_req_set(DeviceState *dev,
675 669
                void (*data_req)(void *, int, int), void *opaque)
676 670
{
677
    WM8750State *s = (WM8750State *) i2c;
671
    WM8750State *s = FROM_I2C_SLAVE(WM8750State, I2C_SLAVE_FROM_QDEV(dev));
678 672
    s->data_req = data_req;
679 673
    s->opaque = opaque;
680 674
}
......
730 724
    s->ext_dac_hz = new_hz;
731 725
    wm8750_clk_update(s, 1);
732 726
}
727

  
728
static I2CSlaveInfo wm8750_info = {
729
    .init = wm8750_init,
730
    .event = wm8750_event,
731
    .recv = wm8750_rx,
732
    .send = wm8750_tx
733
};
734

  
735
static void wm8750_register_devices(void)
736
{
737
    i2c_register_slave("wm8750", sizeof(WM8750State), &wm8750_info);
738
}
739

  
740
device_init(wm8750_register_devices)

Also available in: Unified diff