Deleted Added
full compact
ac97_patch.c (166488) ac97_patch.c (168861)
1/*-
2 * Copyright (c) 2002 Orion Hodson
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 14 unchanged lines hidden (view full) ---

23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <dev/sound/pcm/sound.h>
28#include <dev/sound/pcm/ac97.h>
29#include <dev/sound/pcm/ac97_patch.h>
30
1/*-
2 * Copyright (c) 2002 Orion Hodson
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 14 unchanged lines hidden (view full) ---

23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#include <dev/sound/pcm/sound.h>
28#include <dev/sound/pcm/ac97.h>
29#include <dev/sound/pcm/ac97_patch.h>
30
31SND_DECLARE_FILE("$FreeBSD: head/sys/dev/sound/pcm/ac97_patch.c 166488 2007-02-04 06:52:33Z joel $");
31SND_DECLARE_FILE("$FreeBSD: head/sys/dev/sound/pcm/ac97_patch.c 168861 2007-04-19 13:54:22Z ariff $");
32
33void ad1886_patch(struct ac97_info* codec)
34{
35#define AC97_AD_JACK_SPDIF 0x72
36 /*
37 * Presario700 workaround
38 * for Jack Sense/SPDIF Register misetting causing
39 * no audible output

--- 4 unchanged lines hidden (view full) ---

44
45void ad198x_patch(struct ac97_info* codec)
46{
47 ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x0420);
48}
49
50void ad1981b_patch(struct ac97_info* codec)
51{
32
33void ad1886_patch(struct ac97_info* codec)
34{
35#define AC97_AD_JACK_SPDIF 0x72
36 /*
37 * Presario700 workaround
38 * for Jack Sense/SPDIF Register misetting causing
39 * no audible output

--- 4 unchanged lines hidden (view full) ---

44
45void ad198x_patch(struct ac97_info* codec)
46{
47 ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x0420);
48}
49
50void ad1981b_patch(struct ac97_info* codec)
51{
52#if 0
53 ac97_wrcd(codec, AC97_AD_JACK_SPDIF,
54 ac97_rdcd(codec, AC97_AD_JACK_SPDIF) | 0x0800);
55#endif
52 /*
53 * Enable headphone jack sensing.
54 */
55 switch (ac97_getsubvendor(codec)) {
56 case 0x02d91014: /* IBM Thinkcentre */
57 ac97_wrcd(codec, AC97_AD_JACK_SPDIF,
58 ac97_rdcd(codec, AC97_AD_JACK_SPDIF) | 0x0800);
59 break;
60 default:
61 break;
62 }
56}
57
58void cmi9739_patch(struct ac97_info* codec)
59{
60 /*
63}
64
65void cmi9739_patch(struct ac97_info* codec)
66{
67 /*
61 * Few laptops (notably ASUS W1000N) need extra register
62 * initialization to power up the internal speakers.
68 * Few laptops need extra register initialization
69 * to power up the internal speakers.
63 */
70 */
64 ac97_wrcd(codec, AC97_REG_POWER, 0x000f);
65 ac97_wrcd(codec, AC97_MIXEXT_CLFE, 0x0000);
66 ac97_wrcd(codec, 0x64, 0x7110);
71 switch (ac97_getsubvendor(codec)) {
72 case 0x18431043: /* ASUS W1000N */
73 ac97_wrcd(codec, AC97_REG_POWER, 0x000f);
74 ac97_wrcd(codec, AC97_MIXEXT_CLFE, 0x0000);
75 ac97_wrcd(codec, 0x64, 0x7110);
76 break;
77 default:
78 break;
79 }
67}
80}
81
82void alc655_patch(struct ac97_info* codec)
83{
84 /*
85 * MSI (Micro-Star International) specific EAPD quirk.
86 */
87 switch (ac97_getsubvendor(codec)) {
88 case 0x00611462: /* MSI S250 */
89 case 0x01311462: /* MSI S270 */
90 case 0x01611462: /* LG K1 Express */
91 case 0x03511462: /* MSI L725 */
92 ac97_wrcd(codec, 0x7a, ac97_rdcd(codec, 0x7a) & 0xfffd);
93 break;
94 default:
95 break;
96 }
97}