|
From: | Raymond |
Subject: | Re: [Openvortex-dev] Re: Re: [ALSA - driver 0001138]: errors when installing au8820 modules |
Date: | Sat, 02 Jul 2005 20:53:39 +0800 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.7.7) Gecko/20050504 Fedora/1.7.7-1.1.2.legacy |
Igor Kovalenko wrote:
Raymond wrote:Igor Kovalenko wrote:Raymond wrote:Igor Kovalenko wrote:Well, I've not stated the problem clearly enough. Once set, volume stays as it should. The problem is that PCM volume is: 1% - at lowest audible level 25% - at about 50% audible level 49% - at about max audible level 51% - at lowest audible level 75% - at about 50% audible level 99% - at about max audible level - that is what I described as low-high-low-high. On the other hand, Master volume behaves as expected.What is the value of comment.range of 'PCM Playback Volume' in /etc/asound.state for your STAC9704 (au8820) ? According to 9704SPEC.pdf, it should be '0-31' ( 5 bits ) for STAC9704 PCM Out volume.control.21 { comment.access 'read write' comment.type INTEGER comment.count 2 comment.range '0 - 63' iface MIXER name 'PCM Playback Volume' value.0 21 value.1 21 } Do you mean AC97 is incorrectly reporting 0...63 range?Try the following patch to log the read/write of ac97 and post the system log using dmesg. (loading au8820 and alsactl restore) alsa-driver-1.0.9b/alsa-kernel/pci/au88x0/au88x0_core.c @@ -2520,6 +2515,7 @@ vortex_t *card = (vortex_t *) codec->private_data; unsigned int lifeboat = 0; + printk(KERN_INFO "ac97 write %.2x : %.4x\n",addr,data); /* wait for transactions to clear */ while (!(hwread(card->mmio, VORTEX_CODEC_CTRL) & 0x100)) { udelay(100); @@ -2567,6 +2563,7 @@ } } while ((data & VORTEX_CODEC_ADDMASK) != (addr << VORTEX_CODEC_ADDSHIFT)); + printk(KERN_INFO "ac97 read %.2x : %.4x\n",addr,data & VORTEX_CODEC_DATMASK); /* return data. */ return (u16) (data & VORTEX_CODEC_DATMASK);Here is the dmesg excerpt: Vortex: shutdown...<6>done. ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 185 Vortex: init.... <6>done. ac97 read 7c : 8384 ac97 read 7e : 7605 ac97 write 00 : 0000 ac97 read 00 : 6940 ac97 read 7c : 8384 ac97 read 7e : 7605 ac97 write 1c : 8a05 ac97 read 1c : 8a05 ac97 read 7c : 8384 ac97 read 7e : 7605 ac97 write 1c : 8a06 ac97 read 1c : 8a06 ac97 read 00 : 6940 ac97 read 28 : 0000 ac97 write 26 : 0000 ac97 write 00 : 0000 ac97 write 26 : 0000 ac97 write 20 : 0000 ac97 read 26 : 000f ac97 read 02 : 8000 ac97 read 02 : 8000 ac97 write 02 : 0000 ac97 read 02 : 0000 ac97 write 02 : 8000 ac97 read 02 : 8000 ac97 write 02 : 8000 ac97 write 02 : a0a0 ac97 read 02 : 9f9f ac97 write 02 : 9090 ac97 read 02 : 9090 ac97 read 02 : 9010 ac97 write 02 : 9f1f ac97 read 06 : 9f00 ac97 read 06 : 8000 ac97 write 06 : 0000 ac97 read 06 : 0000 ac97 write 06 : 8000 ac97 read 06 : 8000 ac97 write 06 : 8000 ac97 write 06 : a0a0 ac97 read 06 : a09f ac97 write 06 : 9090 ac97 read 06 : 9090 ac97 read 06 : 8010 ac97 write 06 : bf1f ac97 read 0a : 0000 ac97 write 0a : 8000 ac97 read 0a : 8000 ac97 read 0a : 8000 ac97 write 0a : 801e ac97 read 0c : 8008 ac97 read 0c : 8008 ac97 write 0c : 0008 ac97 read 0c : 0008 ac97 write 0c : 8008 ac97 read 0c : 8008 ac97 write 0c : 8008 ac97 write 0c : a0a0 ac97 read 0c : 8000 ac97 write 0c : 9090 ac97 read 0c : 8010 ac97 write 0c : 8181 ac97 read 0c : 8001 ac97 read 0c : 8001 ac97 write 0c : 801f ac97 read 0e : 8008 ac97 read 0e : 8008 ac97 write 0e : 0008 ac97 read 0e : 0008 ac97 write 0e : 8008 ac97 read 0e : 8008 ac97 write 0e : 8008 ac97 write 0e : a0a0 ac97 read 0e : a0a0 ac97 read 0e : 8000 ac97 write 0e : bf3f ac97 read 10 : a828 ac97 read 10 : 8808 ac97 write 10 : 0808 ac97 read 10 : 0808 ac97 write 10 : 8808 ac97 read 10 : 8808 ac97 write 10 : 8808 ac97 write 10 : a0a0 ac97 read 10 : a0a0 ac97 read 10 : 8000 ac97 write 10 : bf3f ac97 read 12 : a828 ac97 read 12 : 8808 ac97 write 12 : 0808 ac97 read 12 : 0808 ac97 write 12 : 8808 ac97 read 12 : 8808 ac97 write 12 : 8808 ac97 write 12 : a0a0 ac97 read 12 : a0a0 ac97 read 12 : 8000 ac97 write 12 : bf3f ac97 read 14 : a828 ac97 read 14 : 8808 ac97 write 14 : 0808 ac97 read 14 : 0808 ac97 write 14 : 8808 ac97 read 14 : 8808 ac97 write 14 : 8808 ac97 write 14 : a0a0 ac97 read 14 : a0a0 ac97 read 14 : 8000 ac97 write 14 : bf3f ac97 read 16 : a828 ac97 read 16 : 8808 ac97 write 16 : 0808 ac97 read 16 : 0808 ac97 write 16 : 8808 ac97 read 16 : 8808 ac97 write 16 : 8808 ac97 write 16 : a0a0 ac97 read 16 : a0a0 ac97 read 16 : 8000 ac97 write 16 : bf3f ac97 read 18 : 8808 ac97 write 18 : 0808 ac97 read 18 : 0808 ac97 write 18 : 8808 ac97 read 18 : 8808 ac97 write 18 : 8808 ac97 write 18 : a0a0 ac97 read 18 : a0a0 ac97 read 18 : 8000 ac97 write 18 : bf3f ac97 read 1c : b030 ac97 write 1c : 3030 ac97 read 1c : 3030 ac97 write 1c : b030 ac97 read 1c : b030 ac97 write 1c : b030 ac97 write 1a : 0000 ac97 write 1c : 0000 ac97 read 20 : 0000 ac97 write 20 : 8000 ac97 read 20 : 8000 ac97 write 20 : 0000 ac97 read 20 : 0000 ac97 write 20 : 2000 ac97 read 20 : 2000 ac97 write 20 : 0000 ac97 read 20 : 0000 ac97 write 20 : 0200 ac97 read 20 : 0200 ac97 write 20 : 0000 ac97 read 20 : 0000 ac97 write 20 : 0100 ac97 read 20 : 0100 ac97 write 20 : 0000 ac97 read 22 : 0000 ac97 write 22 : 0707 ac97 read 22 : 0707 ac97 write 22 : 0000 ac97 read 26 : 000f ac97 write 26 : 800f ac97 read 26 : 800f ac97 write 26 : 000f ac97 read 2a : ffff ac97 write 2a : ffff ac97 write 02 : 1f1f ac97 write 02 : 1313 ac97 write 12 : 3f3f ac97 write 12 : 3434 ac97 write 18 : 3f3f ac97 write 18 : 2828 ac97 write 20 : 0200 ac97 write 22 : 0400 ac97 write 22 : 0402 ac97 write 26 : 800f
Since there is no error message "vortex: ac97 codec stuck busy" or "vortex: ac97 address never arrived" appear in your system log. It seem to me that your problem is due to the routine check_volume_resolution() do not take care of the difference between STAC9704 (AC97 2.0) and AC97 2.1 Specification. ( "reserved bits are don't care upon read back" in AC97 2.0 and "reserved bits must return 0 upon read back" in AC97 2.1) http://cvs.sourceforge.net/viewcvs.py/alsa/alsa-kernel/pci/ac97/ac97_codec.c?r1=1.163&r2=1.164 You will need to open another bug report with category "AC97" in ALSA Bug Tracking System. STAC9704 specification 1) All registers not shown and bits contain an X are resserved. 2) Any reserved bits, marked X, can be written to but are don't care upon read back. AC97 2.1 specification 1) Italian underline indicate optional feature registers or optional bits within a register. Whether implemented or not, these may be written to but must return 0 if there is no support for this feature. 2) Any reserved bits, marked X, can be written to but must return 0 on read back. Master Volume ac97 read 02 : 8000 ac97 read 02 : 8000 ac97 write 02 : 0000 ac97 read 02 : 0000 ac97 write 02 : 8000 ac97 read 02 : 8000 ac97 write 02 : 8000 ac97 write 02 : a0a0 ac97 read 02 : 9f9f ac97 write 02 : 9090 ac97 read 02 : 9090 ac97 read 02 : 9010 ac97 write 02 : 9f1f ( 5-bits ) Master Volume Mono ac97 read 06 : 9f00 ac97 read 06 : 8000 ac97 write 06 : 0000 ac97 read 06 : 0000 ac97 write 06 : 8000 ac97 read 06 : 8000 ac97 write 06 : 8000 ac97 write 06 : a0a0 ac97 read 06 : a09f <--- ??? ac97 write 06 : 9090 ac97 read 06 : 9090 ac97 read 06 : 8010 ac97 write 06 : bf1f ( 6-bits ) Mic Volume ac97 read 0e : 8008 ac97 read 0e : 8008 ac97 write 0e : 0008 ac97 read 0e : 0008 ac97 write 0e : 8008 ac97 read 0e : 8008 ac97 write 0e : 8008 ac97 write 0e : a0a0 ac97 read 0e : a0a0 <--- ??? ac97 read 0e : 8000 ac97 write 0e : bf3f ( 6-bits ) CD Volume ac97 read 12 : a828 ac97 read 12 : 8808 ac97 write 12 : 0808 ac97 read 12 : 0808 ac97 write 12 : 8808 ac97 read 12 : 8808 ac97 write 12 : 8808 ac97 write 12 : a0a0 ac97 read 12 : a0a0 <--- ??? ac97 read 12 : 8000 ac97 write 12 : bf3f ( 6-bits ) PCM Volume ac97 read 18 : 8808 ac97 write 18 : 0808 ac97 read 18 : 0808 ac97 write 18 : 8808 ac97 read 18 : 8808 ac97 write 18 : 8808 ac97 write 18 : a0a0 ac97 read 18 : a0a0 <--- ??? ac97 read 18 : 8000 ac97 write 18 : bf3f ( 6-bits ) Record Gain ac97 read 1c : b030 <--- ??? ac97 write 1c : 3030 <--- ??? ac97 read 1c : 3030 <--- ??? ac97 write 1c : b030 <--- ??? ac97 read 1c : b030 <--- ??? ac97 write 1c : b030 <--- ??? alsactl restore ac97 write 02 : 1f1f ac97 write 02 : 1313 ac97 write 12 : 3f3f <--- ??? ac97 write 12 : 3434 <--- ??? ac97 write 18 : 3f3f <--- ??? ac97 write 18 : 2828 <--- ??? ac97 write 20 : 0200 ac97 write 22 : 0400 ac97 write 22 : 0402 ac97 write 26 : 800f
[Prev in Thread] | Current Thread | [Next in Thread] |