All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Kovalenko <garrison@mail.ru>
To: Raymond <rayau@netvigator.com>
Cc: alsa-devel@lists.sourceforge.net, openvortex-dev@nongnu.org
Subject: Re: [Openvortex-dev] Re: Re: [ALSA - driver 0001138]:   errors when installing au8820 modules
Date: Thu, 14 Jul 2005 20:43:15 +0400	[thread overview]
Message-ID: <42D69623.6050206@mail.ru> (raw)
In-Reply-To: <42C68E53.4050406@netvigator.com>

Raymond wrote:
> 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
> 

The patch at Follow-up Comment #42, patch #3948 (project openvortex):
http://sourceforge.net/mailarchive/forum.php?thread_id=7699552&forum_id=33141
which adds extra read after ac97 codec write seem to cure abnormal volume problem,
so I did not look further.

-- 
Kind regards,
Igor V. Kovalenko


-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click

  reply	other threads:[~2005-07-14 16:43 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-28 20:22 [ALSA - driver 0001138]: errors when installing au8820 modules bugtrack
2005-06-06  2:09 ` Raymond
2005-06-06 15:49   ` Takashi Iwai
2005-06-07 15:05     ` Raymond
2005-06-07 15:16       ` Alien
2005-06-07 16:29         ` Takashi Iwai
2005-06-07 17:05           ` [Openvortex-dev] " Igor Kovalenko
2005-06-07 17:17             ` Alien
2005-06-07 17:38               ` Igor Kovalenko
2005-06-07 18:02                 ` Alien
2005-06-08 10:18                   ` Takashi Iwai
2005-06-08 11:13                     ` Alien
2005-06-08 12:12                       ` Takashi Iwai
2005-06-08 13:29                         ` Alien
2005-06-08 13:41                           ` Takashi Iwai
2005-06-08 18:09                             ` Igor Kovalenko
2005-06-08 11:40                     ` Raymond
2005-06-08 12:19                       ` Takashi Iwai
2005-06-08 18:12                         ` Igor Kovalenko
2005-06-09  8:13                           ` Raymond
2005-06-08 12:34             ` Raymond
2005-06-08 12:43               ` Takashi Iwai
2005-06-08 18:03               ` Igor Kovalenko
2005-06-09  8:54                 ` Raymond
2005-06-28  7:50                 ` Raymond
2005-07-01 19:03                   ` Igor Kovalenko
2005-07-02 12:53                     ` Raymond
2005-07-14 16:43                       ` Igor Kovalenko [this message]
2005-06-08  9:06           ` Raymond
2005-06-08 10:22             ` Takashi Iwai
2005-06-09  8:34               ` Raymond
2005-06-09 10:17                 ` [Openvortex-dev] " Igor Kovalenko
2005-06-12 15:18                   ` Raymond
2005-06-10  7:35               ` Raymond
2005-06-10 10:33                 ` Takashi Iwai
2005-06-10 11:28                   ` Raymond
2005-07-29 14:43               ` Raymond
2005-07-29 15:09                 ` Takashi Iwai
2005-08-05 12:46                   ` Raymond
2005-08-05 14:32                     ` Takashi Iwai
     [not found]                       ` <43067D3B.5040601@netvigator.com>
2005-08-21 12:41                         ` Takashi Iwai
2005-08-23 15:20                           ` Raymond
2005-08-23 17:18                             ` Takashi Iwai
2005-08-23 21:40                               ` Alien
2005-08-24 10:35                                 ` Takashi Iwai
2005-08-25 17:12                                 ` Raymond
2005-08-25 17:43                                   ` Alien
2005-08-26  9:01                                     ` Raymond
2005-08-25 18:58                                   ` Manuel Jander
2005-08-25 20:04                                     ` Alien
2005-06-08 10:23             ` Alien
2005-06-09  8:49               ` Raymond

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42D69623.6050206@mail.ru \
    --to=garrison@mail.ru \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=openvortex-dev@nongnu.org \
    --cc=rayau@netvigator.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.