From 18f6b63cd203146dd0072823c917cbc7393f00e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sat, 14 Mar 2009 17:18:19 +0000 Subject: [PATCH] fix the build with ac97 code git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29524 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/audio/ac97/auvia/auvia.c | 56 ++++--------------- .../kernel/drivers/audio/ac97/auvia/config.h | 7 +++ 2 files changed, 19 insertions(+), 44 deletions(-) diff --git a/src/add-ons/kernel/drivers/audio/ac97/auvia/auvia.c b/src/add-ons/kernel/drivers/audio/ac97/auvia/auvia.c index 28058e514d..ca4341f84e 100644 --- a/src/add-ons/kernel/drivers/audio/ac97/auvia/auvia.c +++ b/src/add-ons/kernel/drivers/audio/ac97/auvia/auvia.c @@ -175,7 +175,7 @@ auvia_stream_commit_parms(auvia_stream *stream) (uint32)stream->dmaops_phy_base); if(stream->use & AUVIA_USE_RECORD) - auvia_codec_write(&stream->card->config, AC97_PCM_LR_ADC_RATE, (uint16)stream->sample_rate); + auvia_codec_write(&stream->card->config, AC97_PCM_L_R_ADC_RATE, (uint16)stream->sample_rate); else auvia_codec_write(&stream->card->config, AC97_PCM_FRONT_DAC_RATE, (uint16)stream->sample_rate); @@ -489,6 +489,8 @@ auvia_setup(auvia_dev * card) make_device_names(card); + card->config.subvendor_id = card->info.u.h0.subsystem_vendor_id; + card->config.subsystem_id = card->info.u.h0.subsystem_id; card->config.nabmbar = card->info.u.h0.base_registers[0]; card->config.irq = card->info.u.h0.interrupt_line; card->config.type = 0; @@ -506,54 +508,19 @@ auvia_setup(auvia_dev * card) cmd = (*pci->read_pci_config)(card->info.bus, card->info.device, card->info.function, PCI_command, 2); PRINT(("PCI command after: %x\n", cmd)); - /* reset the codec */ - PRINT(("codec reset\n")); - auvia_codec_write(&card->config, 0x00, 0x0000); - snooze(50000); // 50 ms + /* attach the codec */ + PRINT(("codec attach\n")); + ac97_attach(&card->config.ac97, (codec_reg_read)auvia_codec_read, + (codec_reg_write)auvia_codec_write, &card->config, + card->config.subvendor_id, card->config.subsystem_id); - ac97_init(&card->config); - ac97_amp_enable(&card->config, true); + PRINT(("codec vendor id = %#08lx\n", card->config.ac97->codec_id)); + PRINT(("codec description = %s\n", card->config.ac97->codec_info)); + PRINT(("codec 3d enhancement = %s\n", card->config.ac97->codec_3d_stereo_enhancement)); - PRINT(("codec vendor id = %#08lx\n",ac97_get_vendor_id(&card->config))); - PRINT(("codec description = %s\n",ac97_get_vendor_id_description(&card->config))); - PRINT(("codec 3d enhancement = %s\n",ac97_get_3d_stereo_enhancement(&card->config))); - PRINT(("installing interrupt : %lx\n", card->config.irq)); install_io_interrupt_handler(card->config.irq, auvia_int, card, 0); - /*PRINT(("codec master output = %#04x\n",auvia_codec_read(&card->config, 0x02))); - PRINT(("codec aux output = %#04x\n",auvia_codec_read(&card->config, 0x04))); - PRINT(("codec mono output = %#04x\n",auvia_codec_read(&card->config, 0x06))); - PRINT(("codec pcm output = %#04x\n",auvia_codec_read(&card->config, 0x18))); - PRINT(("codec line in = %#04x\n",auvia_codec_read(&card->config, 0x10))); - PRINT(("codec record line in= %#04x\n",auvia_codec_read(&card->config, 0x1a))); - PRINT(("codec record gain = %#04x\n",auvia_codec_read(&card->config, 0x1c)));*/ - - PRINT(("writing codec registers\n")); - // TODO : to move with AC97 - /* enable master output */ - auvia_codec_write(&card->config, AC97_MASTER_VOLUME, 0x0000); - /* enable aux output */ - auvia_codec_write(&card->config, AC97_AUX_OUT_VOLUME, 0x0000); - /* enable mono output */ - //auvia_codec_write(&card->config, AC97_MONO_VOLUME, 0x0004); - /* enable pcm output */ - auvia_codec_write(&card->config, AC97_PCM_OUT_VOLUME, 0x0808); - /* enable line in */ - //auvia_codec_write(&card->config, AC97_LINE_IN_VOLUME, 0x8808); - /* set record line in */ - auvia_codec_write(&card->config, AC97_RECORD_SELECT, 0x0404); - /* set record gain */ - //auvia_codec_write(&card->config, AC97_RECORD_GAIN, 0x0000); - - PRINT(("codec master output = %#04x\n",auvia_codec_read(&card->config, AC97_MASTER_VOLUME))); - PRINT(("codec aux output = %#04x\n",auvia_codec_read(&card->config, AC97_AUX_OUT_VOLUME))); - PRINT(("codec mono output = %#04x\n",auvia_codec_read(&card->config, AC97_MONO_VOLUME))); - PRINT(("codec pcm output = %#04x\n",auvia_codec_read(&card->config, AC97_PCM_OUT_VOLUME))); - PRINT(("codec line in = %#04x\n",auvia_codec_read(&card->config, AC97_LINE_IN_VOLUME))); - PRINT(("codec record line in= %#04x\n",auvia_codec_read(&card->config, AC97_RECORD_SELECT))); - PRINT(("codec record gain = %#04x\n",auvia_codec_read(&card->config, AC97_RECORD_GAIN))); - if ((err = auvia_init(card))) return (err); @@ -615,6 +582,7 @@ static void auvia_shutdown(auvia_dev *card) { PRINT(("shutdown(%p)\n", card)); + ac97_detach(card->config.ac97); remove_io_interrupt_handler(card->config.irq, auvia_int, card); } diff --git a/src/add-ons/kernel/drivers/audio/ac97/auvia/config.h b/src/add-ons/kernel/drivers/audio/ac97/auvia/config.h index a0176f2041..750083e2c2 100644 --- a/src/add-ons/kernel/drivers/audio/ac97/auvia/config.h +++ b/src/add-ons/kernel/drivers/audio/ac97/auvia/config.h @@ -31,6 +31,8 @@ #ifndef _CONFIG_H_ #define _CONFIG_H_ +#include "ac97.h" + #define NUM_CARDS 3 #define DEVNAME 32 @@ -39,6 +41,11 @@ typedef struct uint32 nabmbar; uint32 irq; uint32 type; + + ushort subvendor_id; + ushort subsystem_id; + + ac97_dev *ac97; } device_config; #define TYPE_686 0x01