FreeBSD Bugzilla – Attachment 101182 Details for
Bug 140591
[PATCH][sound] No sound output on lineout/headphone jacks using AD1980 AC'97 codec chip (Fujitsu C610)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
file.diff
file.diff (text/plain), 2.02 KB, created by
Taketo Kabe
on 2009-11-16 02:30:01 UTC
(
hide
)
Description:
file.diff
Filename:
MIME Type:
Creator:
Taketo Kabe
Created:
2009-11-16 02:30:01 UTC
Size:
2.02 KB
patch
obsolete
>--- sys/dev/sound/pcm/ac97_patch.c.dist 2009-04-15 03:14:26.000000000 +0000 >+++ sys/dev/sound/pcm/ac97_patch.c 2009-11-15 16:10:10.000000000 +0000 >@@ -44,9 +44,46 @@ > > void ad198x_patch(struct ac97_info* codec) > { >+ /* >+ * AD198x series have 2 pairs of analog output: >+ * SURR_OUT/HP_OUT(surround or headphone) and LINE_OUT. >+ * >+ * Since SURR_OUT/HP_OUT output pins are equipped with power amps, >+ * retail machines often wire these to headphones jacks and/or >+ * internal speakers. >+ * This also means "mixer phout" will adjust speaker volume >+ * and "mixer vol" adjust lineout level, _independently_. >+ * >+ * (Linux has flags to swap vol/phout, and FreeBSD can do similar >+ * by mix_setrealdev() and gang them with mix_setparentchild()) >+ * >+ * AD198x register 0x76 >+ * 0x0400: select mixer for SURR_OUT/HP_OUT output pins (default surround DAC) >+ * 0x0020: select surround DAC for LINE_OUT output pins (default mixer) >+ * >+ * Selecting surround DAC for any output will yield "no sound", >+ * until FreeBSD supports surround DAC handling. >+ * >+ * Previous ad198x_patch() had set 0x0420, but 0x0400 seems to be >+ * better for all instances. At least you have mixer output >+ * for all output pins. >+ * The value is valid for all AD1888, AD1980, AD1985 and AD1986. >+ * (AD1986, having independent SURR_OUT and HP_OUT, will select >+ * mixer output for SURR_OUT by setting 0x0400 bit.) >+ * >+ * Fujitsu C610 seems to wire SURR_OUT/HP_OUT for >+ * internal speaker, and LINE_OUT for lineout AND headphone jacks; >+ * by setting previous 0x0420, internal speaker works but >+ * no output for either jacks. >+ * ASUS A9T may had been working by not setting the register because >+ * it only wired LINE_OUT. >+ */ > switch (ac97_getsubvendor(codec)) { > case 0x11931043: /* Not for ASUS A9T (probably else too). */ > break; >+ case 0x122f10cf: /* Fujitsu C610 (perhaps for others) */ >+ ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x0400); >+ break; > default: > ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x0420); > break;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 140591
: 101182