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 |