Commit 22d83b140e7b2dda555b7e3035050454f8764b7f
1 parent
0d9acba8
Push AUD_init down to devices
Now we can safely call AUD_init multiple times we can push it down to individual audio devices, rather than having to pass it from the board init. Signed-off-by: Paul Brook <paul@codesourcery.com>
Showing
23 changed files
with
46 additions
and
102 deletions
hw/ac97.c
| @@ -1308,8 +1308,9 @@ static void ac97_on_reset (void *opaque) | @@ -1308,8 +1308,9 @@ static void ac97_on_reset (void *opaque) | ||
| 1308 | mixer_reset (s); | 1308 | mixer_reset (s); |
| 1309 | } | 1309 | } |
| 1310 | 1310 | ||
| 1311 | -int ac97_init (PCIBus *bus, AudioState *audio) | 1311 | +int ac97_init (PCIBus *bus) |
| 1312 | { | 1312 | { |
| 1313 | + AudioState *audio = AUD_init(); | ||
| 1313 | PCIAC97LinkState *d; | 1314 | PCIAC97LinkState *d; |
| 1314 | AC97LinkState *s; | 1315 | AC97LinkState *s; |
| 1315 | uint8_t *c; | 1316 | uint8_t *c; |
| @@ -1319,11 +1320,6 @@ int ac97_init (PCIBus *bus, AudioState *audio) | @@ -1319,11 +1320,6 @@ int ac97_init (PCIBus *bus, AudioState *audio) | ||
| 1319 | return -1; | 1320 | return -1; |
| 1320 | } | 1321 | } |
| 1321 | 1322 | ||
| 1322 | - if (!audio) { | ||
| 1323 | - AUD_log ("ac97", "No audio state\n"); | ||
| 1324 | - return -1; | ||
| 1325 | - } | ||
| 1326 | - | ||
| 1327 | d = (PCIAC97LinkState *) pci_register_device (bus, "AC97", | 1323 | d = (PCIAC97LinkState *) pci_register_device (bus, "AC97", |
| 1328 | sizeof (PCIAC97LinkState), | 1324 | sizeof (PCIAC97LinkState), |
| 1329 | -1, NULL, NULL); | 1325 | -1, NULL, NULL); |
hw/adlib.c
| @@ -277,16 +277,12 @@ static void Adlib_fini (AdlibState *s) | @@ -277,16 +277,12 @@ static void Adlib_fini (AdlibState *s) | ||
| 277 | AUD_remove_card (&s->card); | 277 | AUD_remove_card (&s->card); |
| 278 | } | 278 | } |
| 279 | 279 | ||
| 280 | -int Adlib_init (AudioState *audio, qemu_irq *pic) | 280 | +int Adlib_init (qemu_irq *pic) |
| 281 | { | 281 | { |
| 282 | + AudioState *audio = AUD_init(); | ||
| 282 | AdlibState *s = &glob_adlib; | 283 | AdlibState *s = &glob_adlib; |
| 283 | struct audsettings as; | 284 | struct audsettings as; |
| 284 | 285 | ||
| 285 | - if (!audio) { | ||
| 286 | - dolog ("No audio state\n"); | ||
| 287 | - return -1; | ||
| 288 | - } | ||
| 289 | - | ||
| 290 | #ifdef HAS_YMF262 | 286 | #ifdef HAS_YMF262 |
| 291 | if (YMF262Init (1, 14318180, conf.freq)) { | 287 | if (YMF262Init (1, 14318180, conf.freq)) { |
| 292 | dolog ("YMF262Init %d failed\n", conf.freq); | 288 | dolog ("YMF262Init %d failed\n", conf.freq); |
hw/audiodev.h
| 1 | /* es1370.c */ | 1 | /* es1370.c */ |
| 2 | -int es1370_init (PCIBus *bus, AudioState *s); | 2 | +int es1370_init(PCIBus *bus); |
| 3 | 3 | ||
| 4 | /* sb16.c */ | 4 | /* sb16.c */ |
| 5 | -int SB16_init (AudioState *s, qemu_irq *pic); | 5 | +int SB16_init(qemu_irq *pic); |
| 6 | 6 | ||
| 7 | /* adlib.c */ | 7 | /* adlib.c */ |
| 8 | -int Adlib_init (AudioState *s, qemu_irq *pic); | 8 | +int Adlib_init(qemu_irq *pic); |
| 9 | 9 | ||
| 10 | /* gus.c */ | 10 | /* gus.c */ |
| 11 | -int GUS_init (AudioState *s, qemu_irq *pic); | 11 | +int GUS_init(qemu_irq *pic); |
| 12 | 12 | ||
| 13 | /* ac97.c */ | 13 | /* ac97.c */ |
| 14 | -int ac97_init (PCIBus *buf, AudioState *s); | 14 | +int ac97_init(PCIBus *buf); |
| 15 | 15 | ||
| 16 | /* cs4231a.c */ | 16 | /* cs4231a.c */ |
| 17 | -int cs4231a_init (AudioState *s, qemu_irq *pic); | 17 | +int cs4231a_init(qemu_irq *pic); |
hw/cs4231a.c
| @@ -636,16 +636,12 @@ static int cs_load(QEMUFile *f, void *opaque, int version_id) | @@ -636,16 +636,12 @@ static int cs_load(QEMUFile *f, void *opaque, int version_id) | ||
| 636 | return 0; | 636 | return 0; |
| 637 | } | 637 | } |
| 638 | 638 | ||
| 639 | -int cs4231a_init (AudioState *audio, qemu_irq *pic) | 639 | +int cs4231a_init (qemu_irq *pic) |
| 640 | { | 640 | { |
| 641 | + AudioState *audio = AUD_init(); | ||
| 641 | int i; | 642 | int i; |
| 642 | CSState *s; | 643 | CSState *s; |
| 643 | 644 | ||
| 644 | - if (!audio) { | ||
| 645 | - lerr ("No audio state\n"); | ||
| 646 | - return -1; | ||
| 647 | - } | ||
| 648 | - | ||
| 649 | s = qemu_mallocz (sizeof (*s)); | 645 | s = qemu_mallocz (sizeof (*s)); |
| 650 | 646 | ||
| 651 | s->pic = pic; | 647 | s->pic = pic; |
hw/devices.h
| @@ -17,9 +17,8 @@ void ads7846_write(void *opaque, uint32_t value); | @@ -17,9 +17,8 @@ void ads7846_write(void *opaque, uint32_t value); | ||
| 17 | ADS7846State *ads7846_init(qemu_irq penirq); | 17 | ADS7846State *ads7846_init(qemu_irq penirq); |
| 18 | 18 | ||
| 19 | /* tsc210x.c */ | 19 | /* tsc210x.c */ |
| 20 | -uWireSlave *tsc2102_init(qemu_irq pint, AudioState *audio); | ||
| 21 | -uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, | ||
| 22 | - qemu_irq dav, AudioState *audio); | 20 | +uWireSlave *tsc2102_init(qemu_irq pint); |
| 21 | +uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, qemu_irq dav); | ||
| 23 | I2SCodec *tsc210x_codec(uWireSlave *chip); | 22 | I2SCodec *tsc210x_codec(uWireSlave *chip); |
| 24 | uint32_t tsc210x_txrx(void *opaque, uint32_t value, int len); | 23 | uint32_t tsc210x_txrx(void *opaque, uint32_t value, int len); |
| 25 | void tsc210x_set_transform(uWireSlave *chip, | 24 | void tsc210x_set_transform(uWireSlave *chip, |
hw/es1370.c
| @@ -1005,8 +1005,9 @@ static void es1370_on_reset (void *opaque) | @@ -1005,8 +1005,9 @@ static void es1370_on_reset (void *opaque) | ||
| 1005 | es1370_reset (s); | 1005 | es1370_reset (s); |
| 1006 | } | 1006 | } |
| 1007 | 1007 | ||
| 1008 | -int es1370_init (PCIBus *bus, AudioState *audio) | 1008 | +int es1370_init (PCIBus *bus) |
| 1009 | { | 1009 | { |
| 1010 | + AudioState *audio = AUD_init(); | ||
| 1010 | PCIES1370State *d; | 1011 | PCIES1370State *d; |
| 1011 | ES1370State *s; | 1012 | ES1370State *s; |
| 1012 | uint8_t *c; | 1013 | uint8_t *c; |
| @@ -1016,11 +1017,6 @@ int es1370_init (PCIBus *bus, AudioState *audio) | @@ -1016,11 +1017,6 @@ int es1370_init (PCIBus *bus, AudioState *audio) | ||
| 1016 | return -1; | 1017 | return -1; |
| 1017 | } | 1018 | } |
| 1018 | 1019 | ||
| 1019 | - if (!audio) { | ||
| 1020 | - dolog ("No audio state\n"); | ||
| 1021 | - return -1; | ||
| 1022 | - } | ||
| 1023 | - | ||
| 1024 | d = (PCIES1370State *) pci_register_device (bus, "ES1370", | 1020 | d = (PCIES1370State *) pci_register_device (bus, "ES1370", |
| 1025 | sizeof (PCIES1370State), | 1021 | sizeof (PCIES1370State), |
| 1026 | -1, NULL, NULL); | 1022 | -1, NULL, NULL); |
hw/gus.c
| @@ -250,16 +250,12 @@ static int GUS_load (QEMUFile *f, void *opaque, int version_id) | @@ -250,16 +250,12 @@ static int GUS_load (QEMUFile *f, void *opaque, int version_id) | ||
| 250 | return 0; | 250 | return 0; |
| 251 | } | 251 | } |
| 252 | 252 | ||
| 253 | -int GUS_init (AudioState *audio, qemu_irq *pic) | 253 | +int GUS_init (qemu_irq *pic) |
| 254 | { | 254 | { |
| 255 | + AudioState *audio = AUD_init(); | ||
| 255 | GUSState *s; | 256 | GUSState *s; |
| 256 | struct audsettings as; | 257 | struct audsettings as; |
| 257 | 258 | ||
| 258 | - if (!audio) { | ||
| 259 | - dolog ("No audio state\n"); | ||
| 260 | - return -1; | ||
| 261 | - } | ||
| 262 | - | ||
| 263 | s = qemu_mallocz (sizeof (*s)); | 259 | s = qemu_mallocz (sizeof (*s)); |
| 264 | 260 | ||
| 265 | AUD_register_card (audio, "gus", &s->card); | 261 | AUD_register_card (audio, "gus", &s->card); |
hw/i2c.h
| @@ -60,7 +60,7 @@ qemu_irq *max7310_gpio_in_get(i2c_slave *i2c); | @@ -60,7 +60,7 @@ qemu_irq *max7310_gpio_in_get(i2c_slave *i2c); | ||
| 60 | void max7310_gpio_out_set(i2c_slave *i2c, int line, qemu_irq handler); | 60 | void max7310_gpio_out_set(i2c_slave *i2c, int line, qemu_irq handler); |
| 61 | 61 | ||
| 62 | /* wm8750.c */ | 62 | /* wm8750.c */ |
| 63 | -i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio); | 63 | +i2c_slave *wm8750_init(i2c_bus *bus); |
| 64 | void wm8750_reset(i2c_slave *i2c); | 64 | void wm8750_reset(i2c_slave *i2c); |
| 65 | void wm8750_data_req_set(i2c_slave *i2c, | 65 | void wm8750_data_req_set(i2c_slave *i2c, |
| 66 | void (*data_req)(void *, int, int), void *opaque); | 66 | void (*data_req)(void *, int, int), void *opaque); |
hw/mips_jazz.c
| @@ -104,13 +104,10 @@ static void audio_init(qemu_irq *pic) | @@ -104,13 +104,10 @@ static void audio_init(qemu_irq *pic) | ||
| 104 | } | 104 | } |
| 105 | 105 | ||
| 106 | if (audio_enabled) { | 106 | if (audio_enabled) { |
| 107 | - AudioState *s; | ||
| 108 | - | ||
| 109 | - s = AUD_init(); | ||
| 110 | for (c = soundhw; c->name; ++c) { | 107 | for (c = soundhw; c->name; ++c) { |
| 111 | if (c->enabled) { | 108 | if (c->enabled) { |
| 112 | if (c->isa) { | 109 | if (c->isa) { |
| 113 | - c->init.init_isa(s, pic); | 110 | + c->init.init_isa(pic); |
| 114 | } | 111 | } |
| 115 | } | 112 | } |
| 116 | } | 113 | } |
hw/mips_malta.c
| @@ -469,12 +469,9 @@ static void audio_init (PCIBus *pci_bus) | @@ -469,12 +469,9 @@ static void audio_init (PCIBus *pci_bus) | ||
| 469 | } | 469 | } |
| 470 | 470 | ||
| 471 | if (audio_enabled) { | 471 | if (audio_enabled) { |
| 472 | - AudioState *s; | ||
| 473 | - | ||
| 474 | - s = AUD_init (); | ||
| 475 | for (c = soundhw; c->name; ++c) { | 472 | for (c = soundhw; c->name; ++c) { |
| 476 | if (c->enabled) { | 473 | if (c->enabled) { |
| 477 | - c->init.init_pci (pci_bus, s); | 474 | + c->init.init_pci(pci_bus); |
| 478 | } | 475 | } |
| 479 | } | 476 | } |
| 480 | } | 477 | } |
hw/musicpal.c
| @@ -422,13 +422,10 @@ static CPUWriteMemoryFunc *musicpal_audio_writefn[] = { | @@ -422,13 +422,10 @@ static CPUWriteMemoryFunc *musicpal_audio_writefn[] = { | ||
| 422 | 422 | ||
| 423 | static i2c_interface *musicpal_audio_init(qemu_irq irq) | 423 | static i2c_interface *musicpal_audio_init(qemu_irq irq) |
| 424 | { | 424 | { |
| 425 | - AudioState *audio; | ||
| 426 | musicpal_audio_state *s; | 425 | musicpal_audio_state *s; |
| 427 | i2c_interface *i2c; | 426 | i2c_interface *i2c; |
| 428 | int iomemtype; | 427 | int iomemtype; |
| 429 | 428 | ||
| 430 | - audio = AUD_init(); | ||
| 431 | - | ||
| 432 | s = qemu_mallocz(sizeof(musicpal_audio_state)); | 429 | s = qemu_mallocz(sizeof(musicpal_audio_state)); |
| 433 | s->irq = irq; | 430 | s->irq = irq; |
| 434 | 431 | ||
| @@ -436,7 +433,7 @@ static i2c_interface *musicpal_audio_init(qemu_irq irq) | @@ -436,7 +433,7 @@ static i2c_interface *musicpal_audio_init(qemu_irq irq) | ||
| 436 | i2c->bus = i2c_init_bus(); | 433 | i2c->bus = i2c_init_bus(); |
| 437 | i2c->current_addr = -1; | 434 | i2c->current_addr = -1; |
| 438 | 435 | ||
| 439 | - s->wm = wm8750_init(i2c->bus, audio); | 436 | + s->wm = wm8750_init(i2c->bus); |
| 440 | if (!s->wm) | 437 | if (!s->wm) |
| 441 | return NULL; | 438 | return NULL; |
| 442 | i2c_set_slave_address(s->wm, MP_WM_ADDR); | 439 | i2c_set_slave_address(s->wm, MP_WM_ADDR); |
hw/nseries.c
| @@ -252,7 +252,7 @@ static void n800_tsc_kbd_setup(struct n800_s *s) | @@ -252,7 +252,7 @@ static void n800_tsc_kbd_setup(struct n800_s *s) | ||
| 252 | qemu_irq kbirq = omap2_gpio_in_get(s->cpu->gpif, N800_TSC_KP_IRQ_GPIO)[0]; | 252 | qemu_irq kbirq = omap2_gpio_in_get(s->cpu->gpif, N800_TSC_KP_IRQ_GPIO)[0]; |
| 253 | qemu_irq dav = omap2_gpio_in_get(s->cpu->gpif, N800_TSC_TS_GPIO)[0]; | 253 | qemu_irq dav = omap2_gpio_in_get(s->cpu->gpif, N800_TSC_TS_GPIO)[0]; |
| 254 | 254 | ||
| 255 | - s->ts.chip = tsc2301_init(penirq, kbirq, dav, 0); | 255 | + s->ts.chip = tsc2301_init(penirq, kbirq, dav); |
| 256 | s->ts.opaque = s->ts.chip->opaque; | 256 | s->ts.opaque = s->ts.chip->opaque; |
| 257 | s->ts.txrx = tsc210x_txrx; | 257 | s->ts.txrx = tsc210x_txrx; |
| 258 | 258 |
hw/omap2.c
| @@ -1973,7 +1973,6 @@ struct omap_eac_s *omap_eac_init(struct omap_target_agent_s *ta, | @@ -1973,7 +1973,6 @@ struct omap_eac_s *omap_eac_init(struct omap_target_agent_s *ta, | ||
| 1973 | omap_eac_reset(s); | 1973 | omap_eac_reset(s); |
| 1974 | 1974 | ||
| 1975 | #ifdef HAS_AUDIO | 1975 | #ifdef HAS_AUDIO |
| 1976 | - /* TODO: do AUD_init globally for machine */ | ||
| 1977 | AUD_register_card(AUD_init(), "OMAP EAC", &s->codec.card); | 1976 | AUD_register_card(AUD_init(), "OMAP EAC", &s->codec.card); |
| 1978 | 1977 | ||
| 1979 | iomemtype = cpu_register_io_memory(0, omap_eac_readfn, | 1978 | iomemtype = cpu_register_io_memory(0, omap_eac_readfn, |
hw/palm.c
| @@ -93,14 +93,8 @@ static MouseTransformInfo palmte_pointercal = { | @@ -93,14 +93,8 @@ static MouseTransformInfo palmte_pointercal = { | ||
| 93 | static void palmte_microwire_setup(struct omap_mpu_state_s *cpu) | 93 | static void palmte_microwire_setup(struct omap_mpu_state_s *cpu) |
| 94 | { | 94 | { |
| 95 | uWireSlave *tsc; | 95 | uWireSlave *tsc; |
| 96 | - AudioState *audio = 0; | ||
| 97 | 96 | ||
| 98 | -#ifdef HAS_AUDIO | ||
| 99 | - audio = AUD_init(); | ||
| 100 | -#endif | ||
| 101 | - | ||
| 102 | - tsc = tsc2102_init(omap_gpio_in_get(cpu->gpio)[PALMTE_PINTDAV_GPIO], | ||
| 103 | - audio); | 97 | + tsc = tsc2102_init(omap_gpio_in_get(cpu->gpio)[PALMTE_PINTDAV_GPIO]); |
| 104 | 98 | ||
| 105 | omap_uwire_attach(cpu->microwire, tsc, 0); | 99 | omap_uwire_attach(cpu->microwire, tsc, 0); |
| 106 | omap_mcbsp_i2s_attach(cpu->mcbsp1, tsc210x_codec(tsc)); | 100 | omap_mcbsp_i2s_attach(cpu->mcbsp1, tsc210x_codec(tsc)); |
hw/pc.c
| @@ -788,17 +788,13 @@ static void audio_init (PCIBus *pci_bus, qemu_irq *pic) | @@ -788,17 +788,13 @@ static void audio_init (PCIBus *pci_bus, qemu_irq *pic) | ||
| 788 | } | 788 | } |
| 789 | 789 | ||
| 790 | if (audio_enabled) { | 790 | if (audio_enabled) { |
| 791 | - AudioState *s; | ||
| 792 | - | ||
| 793 | - s = AUD_init (); | ||
| 794 | for (c = soundhw; c->name; ++c) { | 791 | for (c = soundhw; c->name; ++c) { |
| 795 | if (c->enabled) { | 792 | if (c->enabled) { |
| 796 | if (c->isa) { | 793 | if (c->isa) { |
| 797 | - c->init.init_isa (s, pic); | ||
| 798 | - } | ||
| 799 | - else { | 794 | + c->init.init_isa(pic); |
| 795 | + } else { | ||
| 800 | if (pci_bus) { | 796 | if (pci_bus) { |
| 801 | - c->init.init_pci (pci_bus, s); | 797 | + c->init.init_pci(pci_bus); |
| 802 | } | 798 | } |
| 803 | } | 799 | } |
| 804 | } | 800 | } |
hw/pc.h
| @@ -119,7 +119,7 @@ extern int no_hpet; | @@ -119,7 +119,7 @@ extern int no_hpet; | ||
| 119 | 119 | ||
| 120 | /* pcspk.c */ | 120 | /* pcspk.c */ |
| 121 | void pcspk_init(PITState *); | 121 | void pcspk_init(PITState *); |
| 122 | -int pcspk_audio_init(AudioState *, qemu_irq *pic); | 122 | +int pcspk_audio_init(qemu_irq *pic); |
| 123 | 123 | ||
| 124 | /* piix_pci.c */ | 124 | /* piix_pci.c */ |
| 125 | PCIBus *i440fx_init(PCIDevice **pi440fx_state, qemu_irq *pic); | 125 | PCIBus *i440fx_init(PCIDevice **pi440fx_state, qemu_irq *pic); |
hw/pcspk.c
| @@ -96,15 +96,12 @@ static void pcspk_callback(void *opaque, int free) | @@ -96,15 +96,12 @@ static void pcspk_callback(void *opaque, int free) | ||
| 96 | } | 96 | } |
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | -int pcspk_audio_init(AudioState *audio, qemu_irq *pic) | 99 | +int pcspk_audio_init(qemu_irq *pic) |
| 100 | { | 100 | { |
| 101 | + AudioState *audio = AUD_init(); | ||
| 101 | PCSpkState *s = &pcspk_state; | 102 | PCSpkState *s = &pcspk_state; |
| 102 | struct audsettings as = {PCSPK_SAMPLE_RATE, 1, AUD_FMT_U8, 0}; | 103 | struct audsettings as = {PCSPK_SAMPLE_RATE, 1, AUD_FMT_U8, 0}; |
| 103 | 104 | ||
| 104 | - if (!audio) { | ||
| 105 | - AUD_log(s_spk, "No audio state\n"); | ||
| 106 | - return -1; | ||
| 107 | - } | ||
| 108 | AUD_register_card(audio, s_spk, &s->card); | 105 | AUD_register_card(audio, s_spk, &s->card); |
| 109 | 106 | ||
| 110 | s->voice = AUD_open_out(&s->card, s->voice, s_spk, s, pcspk_callback, &as); | 107 | s->voice = AUD_open_out(&s->card, s->voice, s_spk, s, pcspk_callback, &as); |
hw/ppc_prep.c
| @@ -696,7 +696,6 @@ static void ppc_prep_init (ram_addr_t ram_size, int vga_ram_size, | @@ -696,7 +696,6 @@ static void ppc_prep_init (ram_addr_t ram_size, int vga_ram_size, | ||
| 696 | } | 696 | } |
| 697 | i8042_init(i8259[1], i8259[12], 0x60); | 697 | i8042_init(i8259[1], i8259[12], 0x60); |
| 698 | DMA_init(1); | 698 | DMA_init(1); |
| 699 | - // AUD_init(); | ||
| 700 | // SB16_init(); | 699 | // SB16_init(); |
| 701 | 700 | ||
| 702 | for(i = 0; i < MAX_FD; i++) { | 701 | for(i = 0; i < MAX_FD; i++) { |
hw/sb16.c
| @@ -1398,18 +1398,14 @@ static int SB_load (QEMUFile *f, void *opaque, int version_id) | @@ -1398,18 +1398,14 @@ static int SB_load (QEMUFile *f, void *opaque, int version_id) | ||
| 1398 | return 0; | 1398 | return 0; |
| 1399 | } | 1399 | } |
| 1400 | 1400 | ||
| 1401 | -int SB16_init (AudioState *audio, qemu_irq *pic) | 1401 | +int SB16_init (qemu_irq *pic) |
| 1402 | { | 1402 | { |
| 1403 | + AudioState *audio = AUD_init(); | ||
| 1403 | SB16State *s; | 1404 | SB16State *s; |
| 1404 | int i; | 1405 | int i; |
| 1405 | static const uint8_t dsp_write_ports[] = {0x6, 0xc}; | 1406 | static const uint8_t dsp_write_ports[] = {0x6, 0xc}; |
| 1406 | static const uint8_t dsp_read_ports[] = {0x6, 0xa, 0xc, 0xd, 0xe, 0xf}; | 1407 | static const uint8_t dsp_read_ports[] = {0x6, 0xa, 0xc, 0xd, 0xe, 0xf}; |
| 1407 | 1408 | ||
| 1408 | - if (!audio) { | ||
| 1409 | - dolog ("No audio state\n"); | ||
| 1410 | - return -1; | ||
| 1411 | - } | ||
| 1412 | - | ||
| 1413 | s = qemu_mallocz (sizeof (*s)); | 1409 | s = qemu_mallocz (sizeof (*s)); |
| 1414 | 1410 | ||
| 1415 | s->cmd = -1; | 1411 | s->cmd = -1; |
hw/spitz.c
| @@ -740,12 +740,10 @@ static void spitz_i2c_setup(PXA2xxState *cpu) | @@ -740,12 +740,10 @@ static void spitz_i2c_setup(PXA2xxState *cpu) | ||
| 740 | i2c_bus *bus = pxa2xx_i2c_bus(cpu->i2c[0]); | 740 | i2c_bus *bus = pxa2xx_i2c_bus(cpu->i2c[0]); |
| 741 | 741 | ||
| 742 | #ifdef HAS_AUDIO | 742 | #ifdef HAS_AUDIO |
| 743 | - AudioState *audio; | ||
| 744 | i2c_slave *wm; | 743 | i2c_slave *wm; |
| 745 | 744 | ||
| 746 | - audio = AUD_init(); | ||
| 747 | /* Attach a WM8750 to the bus */ | 745 | /* Attach a WM8750 to the bus */ |
| 748 | - wm = wm8750_init(bus, audio); | 746 | + wm = wm8750_init(bus); |
| 749 | 747 | ||
| 750 | spitz_wm8750_addr(wm, 0, 0); | 748 | spitz_wm8750_addr(wm, 0, 0); |
| 751 | pxa2xx_gpio_out_set(cpu->gpio, SPITZ_GPIO_WM, | 749 | pxa2xx_gpio_out_set(cpu->gpio, SPITZ_GPIO_WM, |
hw/tsc210x.c
| @@ -684,8 +684,7 @@ static void tsc2102_audio_register_write( | @@ -684,8 +684,7 @@ static void tsc2102_audio_register_write( | ||
| 684 | "wrong value written into Audio 1\n"); | 684 | "wrong value written into Audio 1\n"); |
| 685 | #endif | 685 | #endif |
| 686 | tsc2102_audio_rate_update(s); | 686 | tsc2102_audio_rate_update(s); |
| 687 | - if (s->audio) | ||
| 688 | - tsc2102_audio_output_update(s); | 687 | + tsc2102_audio_output_update(s); |
| 689 | return; | 688 | return; |
| 690 | 689 | ||
| 691 | case 0x01: | 690 | case 0x01: |
| @@ -729,8 +728,7 @@ static void tsc2102_audio_register_write( | @@ -729,8 +728,7 @@ static void tsc2102_audio_register_write( | ||
| 729 | "wrong value written into Power\n"); | 728 | "wrong value written into Power\n"); |
| 730 | #endif | 729 | #endif |
| 731 | tsc2102_audio_rate_update(s); | 730 | tsc2102_audio_rate_update(s); |
| 732 | - if (s->audio) | ||
| 733 | - tsc2102_audio_output_update(s); | 731 | + tsc2102_audio_output_update(s); |
| 734 | return; | 732 | return; |
| 735 | 733 | ||
| 736 | case 0x06: /* Audio Control 3 */ | 734 | case 0x06: /* Audio Control 3 */ |
| @@ -741,8 +739,7 @@ static void tsc2102_audio_register_write( | @@ -741,8 +739,7 @@ static void tsc2102_audio_register_write( | ||
| 741 | fprintf(stderr, "tsc2102_audio_register_write: " | 739 | fprintf(stderr, "tsc2102_audio_register_write: " |
| 742 | "wrong value written into Audio 3\n"); | 740 | "wrong value written into Audio 3\n"); |
| 743 | #endif | 741 | #endif |
| 744 | - if (s->audio) | ||
| 745 | - tsc2102_audio_output_update(s); | 742 | + tsc2102_audio_output_update(s); |
| 746 | return; | 743 | return; |
| 747 | 744 | ||
| 748 | case 0x07: /* LCH_BASS_BOOST_N0 */ | 745 | case 0x07: /* LCH_BASS_BOOST_N0 */ |
| @@ -1105,7 +1102,7 @@ static int tsc210x_load(QEMUFile *f, void *opaque, int version_id) | @@ -1105,7 +1102,7 @@ static int tsc210x_load(QEMUFile *f, void *opaque, int version_id) | ||
| 1105 | return 0; | 1102 | return 0; |
| 1106 | } | 1103 | } |
| 1107 | 1104 | ||
| 1108 | -uWireSlave *tsc2102_init(qemu_irq pint, AudioState *audio) | 1105 | +uWireSlave *tsc2102_init(qemu_irq pint) |
| 1109 | { | 1106 | { |
| 1110 | TSC210xState *s; | 1107 | TSC210xState *s; |
| 1111 | 1108 | ||
| @@ -1120,7 +1117,7 @@ uWireSlave *tsc2102_init(qemu_irq pint, AudioState *audio) | @@ -1120,7 +1117,7 @@ uWireSlave *tsc2102_init(qemu_irq pint, AudioState *audio) | ||
| 1120 | s->pint = pint; | 1117 | s->pint = pint; |
| 1121 | s->model = 0x2102; | 1118 | s->model = 0x2102; |
| 1122 | s->name = "tsc2102"; | 1119 | s->name = "tsc2102"; |
| 1123 | - s->audio = audio; | 1120 | + s->audio = AUD_init();; |
| 1124 | 1121 | ||
| 1125 | s->tr[0] = 0; | 1122 | s->tr[0] = 0; |
| 1126 | s->tr[1] = 1; | 1123 | s->tr[1] = 1; |
| @@ -1146,8 +1143,7 @@ uWireSlave *tsc2102_init(qemu_irq pint, AudioState *audio) | @@ -1146,8 +1143,7 @@ uWireSlave *tsc2102_init(qemu_irq pint, AudioState *audio) | ||
| 1146 | qemu_add_mouse_event_handler(tsc210x_touchscreen_event, s, 1, | 1143 | qemu_add_mouse_event_handler(tsc210x_touchscreen_event, s, 1, |
| 1147 | "QEMU TSC2102-driven Touchscreen"); | 1144 | "QEMU TSC2102-driven Touchscreen"); |
| 1148 | 1145 | ||
| 1149 | - if (s->audio) | ||
| 1150 | - AUD_register_card(s->audio, s->name, &s->card); | 1146 | + AUD_register_card(s->audio, s->name, &s->card); |
| 1151 | 1147 | ||
| 1152 | qemu_register_reset((void *) tsc210x_reset, s); | 1148 | qemu_register_reset((void *) tsc210x_reset, s); |
| 1153 | register_savevm(s->name, -1, 0, | 1149 | register_savevm(s->name, -1, 0, |
| @@ -1156,8 +1152,7 @@ uWireSlave *tsc2102_init(qemu_irq pint, AudioState *audio) | @@ -1156,8 +1152,7 @@ uWireSlave *tsc2102_init(qemu_irq pint, AudioState *audio) | ||
| 1156 | return &s->chip; | 1152 | return &s->chip; |
| 1157 | } | 1153 | } |
| 1158 | 1154 | ||
| 1159 | -uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, | ||
| 1160 | - qemu_irq dav, AudioState *audio) | 1155 | +uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, qemu_irq dav) |
| 1161 | { | 1156 | { |
| 1162 | TSC210xState *s; | 1157 | TSC210xState *s; |
| 1163 | 1158 | ||
| @@ -1174,7 +1169,7 @@ uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, | @@ -1174,7 +1169,7 @@ uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, | ||
| 1174 | s->davint = dav; | 1169 | s->davint = dav; |
| 1175 | s->model = 0x2301; | 1170 | s->model = 0x2301; |
| 1176 | s->name = "tsc2301"; | 1171 | s->name = "tsc2301"; |
| 1177 | - s->audio = audio; | 1172 | + s->audio = AUD_init(); |
| 1178 | 1173 | ||
| 1179 | s->tr[0] = 0; | 1174 | s->tr[0] = 0; |
| 1180 | s->tr[1] = 1; | 1175 | s->tr[1] = 1; |
| @@ -1200,8 +1195,7 @@ uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, | @@ -1200,8 +1195,7 @@ uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, | ||
| 1200 | qemu_add_mouse_event_handler(tsc210x_touchscreen_event, s, 1, | 1195 | qemu_add_mouse_event_handler(tsc210x_touchscreen_event, s, 1, |
| 1201 | "QEMU TSC2301-driven Touchscreen"); | 1196 | "QEMU TSC2301-driven Touchscreen"); |
| 1202 | 1197 | ||
| 1203 | - if (s->audio) | ||
| 1204 | - AUD_register_card(s->audio, s->name, &s->card); | 1198 | + AUD_register_card(s->audio, s->name, &s->card); |
| 1205 | 1199 | ||
| 1206 | qemu_register_reset((void *) tsc210x_reset, s); | 1200 | qemu_register_reset((void *) tsc210x_reset, s); |
| 1207 | register_savevm(s->name, -1, 0, tsc210x_save, tsc210x_load, s); | 1201 | register_savevm(s->name, -1, 0, tsc210x_save, tsc210x_load, s); |
hw/wm8750.c
| @@ -645,8 +645,9 @@ static int wm8750_load(QEMUFile *f, void *opaque, int version_id) | @@ -645,8 +645,9 @@ static int wm8750_load(QEMUFile *f, void *opaque, int version_id) | ||
| 645 | return 0; | 645 | return 0; |
| 646 | } | 646 | } |
| 647 | 647 | ||
| 648 | -i2c_slave *wm8750_init(i2c_bus *bus, AudioState *audio) | 648 | +i2c_slave *wm8750_init(i2c_bus *bus) |
| 649 | { | 649 | { |
| 650 | + AudioState *audio = AUD_init(); | ||
| 650 | WM8750State *s = (WM8750State *) | 651 | WM8750State *s = (WM8750State *) |
| 651 | i2c_slave_init(bus, 0, sizeof(WM8750State)); | 652 | i2c_slave_init(bus, 0, sizeof(WM8750State)); |
| 652 | s->i2c.event = wm8750_event; | 653 | s->i2c.event = wm8750_event; |
sysemu.h
| @@ -241,8 +241,8 @@ struct soundhw { | @@ -241,8 +241,8 @@ struct soundhw { | ||
| 241 | int enabled; | 241 | int enabled; |
| 242 | int isa; | 242 | int isa; |
| 243 | union { | 243 | union { |
| 244 | - int (*init_isa) (AudioState *s, qemu_irq *pic); | ||
| 245 | - int (*init_pci) (PCIBus *bus, AudioState *s); | 244 | + int (*init_isa) (qemu_irq *pic); |
| 245 | + int (*init_pci) (PCIBus *bus); | ||
| 246 | } init; | 246 | } init; |
| 247 | }; | 247 | }; |
| 248 | 248 |