VIA8235 + AD1980

Orion Hodson orion at freebsd.org
Thu Jun 26 09:09:10 PDT 2003


Oleg

Well done on working out a working fix for this problem and apologies
for not answering the email you sent earlier.  It was one of several
lost in the inbox overflow whilst the recipient was busy elsewhere.
I'm also going to be offline until until July 7th and won't be able to
provide any further input for a little while.

There are some comments inline below that may help.  

- Orion

Oleg Sharoiko writes:
|
| There is a small problem with this patch: AC97_MIXEXT_SURROUND has
| seprate mute bits for right and left channels and I don't see how
| can they be implemented in FreeBSD.

The gain setting method would need to check for whether the register
was the AC97_MIXEXT_SURROUND and have a specific piece of code to deal
with this case.

| I'd like to get to the roots of this problem and this is where I
| need some help. If I understood everything correctly than it happens
| so that the sound somehow goes to surround dac. The question that I
| cannot answer: why it goes to surround dac? Unfortunately I don't
| have via8235 spec. Myabe data are being put into wrong timeslots?

The driver was written from the VT8233 spec under NDA.  The driver
sets the AC97 slots for the multichannel register set - these are set
with the macros SLOT3 and SLOT4.

There are no documented registers for assigning the regular stereo
playback channels to different slots.

The behaviour you are describing would be partially explained if
channel spreading were enabled in the codec (2 channels spread to 6).
This can be manually and automatically enabled (AD1980 rev 0 specs
pages 25 and 27).

Since the AD1980 is an ac97 2.3 codec and these codecs do jack sense
detection, it's probably worth checking out the ac97 2.3 spec and
writing some code to find out what the jack sense registers report as
attached.




More information about the freebsd-hackers mailing list