[haiku-bugs] Re: [Haiku] #8270: [HDA] very quiet on Lenovo laptop (due to hda mixer?)

  • From: "ttcoder" <trac@xxxxxxxxxxxx>
  • Date: Fri, 06 Jan 2012 22:11:37 -0000

#8270: [HDA] very quiet on Lenovo laptop (due to hda mixer?)
---------------------------------+----------------------------
   Reporter:  ttcoder            |      Owner:  korli
       Type:  bug                |     Status:  new
   Priority:  normal             |  Milestone:  R1
  Component:  Drivers/Audio/HDA  |    Version:  R1/Development
 Resolution:                     |   Keywords:
 Blocked By:                     |   Blocking:
Has a Patch:  0                  |   Platform:  All
---------------------------------+----------------------------

Comment (by ttcoder):

 Replying to [comment:2 korli]:
 > The driver tries to configure widgets along the output path in
 hda_audio_group_get_widgets(). There each call to hda_send_verbs() changes
 something on a widget. You could try to comment one after the other to
 check if you have the normal behaviour.

 Hmmm I'm coming back to you mostly empty-handed on this:
 - with the previous "activated mixer" source I commented out the
 hda_send_verbs() calls one by one until all 5 were out, but sound was
 active, yet very quiet, in all cases.
 - then I did again the "bypass mixer" line change, with the five
 hda_send_verbs() still all commented out, and volume came back full,
 working correctly!

 > Your patch actually bypasses the mixer to find the output path. It would
 be interesting to compare syslogs with and without the patch.

 Here's the syslog difference, edited for clarity:
 {{{
 ~/Desktop/New folder> diff hda_log hda_log_patcheddriver > fullvolume.diff

 Results in this:

 87c87,88
 < KERN: build output tree: use mixer
 ---
 > KERN: try without mixer!
 > KERN: build output tree: don't use mixer
 89,94c90,92
 < KERN:     try widget 25: 0x82096a0c
 < KERN:     try widget 23: 0x820968b4
 < KERN:     widget 23 is candidate
 < KERN:         output: added output widget 25
 < KERN:       output: added mixer/selector widget 23
 ---
 > KERN:     try widget 25: 0x8209380c
 > KERN:     widget 25 is candidate
 > KERN:       output: added output widget 25
 97,99c95,97
 < KERN:     try widget 25: 0x82096a0c
 < KERN:     try widget 23: 0x820968b4
 < KERN:     widget 23 is candidate
 ---
 > KERN:     try widget 25: 0x8209380c
 > KERN:     widget 25 is candidate
 > KERN:       output: added output widget 25
 104c101
 < KERN:     try widget 23: 0x820968b4
 ---
 > KERN:     try widget 23: 0x820936b4
 119,120c116,117
 < KERN:         Inputs: 25 <23>
 ---
 > KERN:         Inputs: <25> 23
 125,126c122,123
 < KERN:         Inputs: 25 <23>
 ---
 > KERN:         Inputs: <25> 23
 153,154c150,151
 < KERN:         Inputs: <25> 20 18 17 21
 ---
 > KERN:         Inputs: 25 <20> 18 17 21
 164c161
 ---
 176d172
 < KERN: UNMUTE/SET INPUT GAIN widget 23 (offset 20)
 }}}

 I notice that..

 - the gain is set ''twice'' on the mixer in the failure case, and only
 once in the "bypass mixer" case. (ref. line "UNMUTE/SET INPUT GAIN widget
 23")
 - the "try widget 23: 0x820968b4" hex value differs in the first and
 second case
 - my hardware seems to have "quirks" enabled ("KERN: input vref 80
 enabled")

 Can't interpret any of those oddities... Hopefully it's more clear for you
 than for me ;-)

-- 
Ticket URL: <http://dev.haiku-os.org/ticket/8270#comment:3>
Haiku <http://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: