Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142192682
D47732.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
9 KB
Referenced Files
None
Subscribers
None
D47732.id.diff
View Options
diff --git a/sys/conf/files b/sys/conf/files
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -3132,7 +3132,6 @@
dev/sound/pci/hdspe-pcm.c optional snd_hdspe pci
dev/sound/pcm/ac97.c optional sound
dev/sound/pcm/ac97_if.m optional sound
-dev/sound/pcm/ac97_patch.c optional sound
dev/sound/pcm/buffer.c optional sound \
dependency "snd_fxdiv_gen.h"
dev/sound/pcm/channel.c optional sound
diff --git a/sys/dev/sound/pcm/ac97.c b/sys/dev/sound/pcm/ac97.c
--- a/sys/dev/sound/pcm/ac97.c
+++ b/sys/dev/sound/pcm/ac97.c
@@ -32,7 +32,6 @@
#include <dev/sound/pcm/sound.h>
#include <dev/sound/pcm/ac97.h>
-#include <dev/sound/pcm/ac97_patch.h>
#include <dev/pci/pcivar.h>
@@ -40,6 +39,8 @@
static MALLOC_DEFINE(M_AC97, "ac97", "ac97 codec");
+typedef void (*ac97_patch)(struct ac97_info *);
+
struct ac97mixtable_entry {
int reg; /* register index */
/* reg < 0 if inverted polarity */
@@ -133,6 +134,12 @@
{ 0x00000000, NULL }
};
+static void ad1886_patch(struct ac97_info *);
+static void ad198x_patch(struct ac97_info *);
+static void ad1981b_patch(struct ac97_info *);
+static void cmi9739_patch(struct ac97_info *);
+static void alc655_patch(struct ac97_info *);
+
static struct ac97_codecid ac97codecid[] = {
{ 0x41445303, 0x00, 0, "AD1819", 0 },
{ 0x41445340, 0x00, 0, "AD1881", 0 },
@@ -872,6 +879,93 @@
return codec->flags;
}
+static void
+ad1886_patch(struct ac97_info *codec)
+{
+#define AC97_AD_JACK_SPDIF 0x72
+ /*
+ * Presario700 workaround
+ * for Jack Sense/SPDIF Register misetting causing
+ * no audible output
+ * by Santiago Nullo 04/05/2002
+ */
+ ac97_wrcd(codec, AC97_AD_JACK_SPDIF, 0x0010);
+}
+
+static void
+ad198x_patch(struct ac97_info *codec)
+{
+ switch (ac97_getsubvendor(codec)) {
+ case 0x11931043: /* Not for ASUS A9T (probably else too). */
+ break;
+ default:
+ ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x0420);
+ break;
+ }
+}
+
+static void
+ad1981b_patch(struct ac97_info *codec)
+{
+ /*
+ * Enable headphone jack sensing.
+ */
+ switch (ac97_getsubvendor(codec)) {
+ case 0x02d91014: /* IBM Thinkcentre */
+ case 0x099c103c: /* HP nx6110 */
+ ac97_wrcd(codec, AC97_AD_JACK_SPDIF,
+ ac97_rdcd(codec, AC97_AD_JACK_SPDIF) | 0x0800);
+ break;
+ default:
+ break;
+ }
+}
+
+static void
+cmi9739_patch(struct ac97_info *codec)
+{
+ /*
+ * Few laptops need extra register initialization
+ * to power up the internal speakers.
+ */
+ switch (ac97_getsubvendor(codec)) {
+ case 0x18431043: /* ASUS W1000N */
+ ac97_wrcd(codec, AC97_REG_POWER, 0x000f);
+ ac97_wrcd(codec, AC97_MIXEXT_CLFE, 0x0000);
+ ac97_wrcd(codec, 0x64, 0x7110);
+ break;
+ default:
+ break;
+ }
+}
+
+static void
+alc655_patch(struct ac97_info *codec)
+{
+ /*
+ * MSI (Micro-Star International) specific EAPD quirk.
+ */
+ switch (ac97_getsubvendor(codec)) {
+ case 0x00611462: /* MSI S250 */
+ case 0x01311462: /* MSI S270 */
+ case 0x01611462: /* LG K1 Express */
+ case 0x03511462: /* MSI L725 */
+ ac97_wrcd(codec, 0x7a, ac97_rdcd(codec, 0x7a) & 0xfffd);
+ break;
+ case 0x10ca1734:
+ /*
+ * Amilo Pro V2055 with ALC655 has phone out by default
+ * disabled (surround on), leaving us only with internal
+ * speakers. This should really go to mixer. We write the
+ * Data Flow Control reg.
+ */
+ ac97_wrcd(codec, 0x6a, ac97_rdcd(codec, 0x6a) | 0x0001);
+ break;
+ default:
+ break;
+ }
+}
+
/* -------------------------------------------------------------------- */
static int
diff --git a/sys/dev/sound/pcm/ac97_patch.h b/sys/dev/sound/pcm/ac97_patch.h
deleted file mode 100644
--- a/sys/dev/sound/pcm/ac97_patch.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause
- *
- * Copyright (c) 2003 Orion Hodson
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-typedef void (*ac97_patch)(struct ac97_info*);
-
-void ad1886_patch(struct ac97_info*);
-void ad198x_patch(struct ac97_info*);
-void ad1981b_patch(struct ac97_info*);
-void cmi9739_patch(struct ac97_info*);
-void alc655_patch(struct ac97_info*);
diff --git a/sys/dev/sound/pcm/ac97_patch.c b/sys/dev/sound/pcm/ac97_patch.c
deleted file mode 100644
--- a/sys/dev/sound/pcm/ac97_patch.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause
- *
- * Copyright (c) 2002 Orion Hodson
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifdef HAVE_KERNEL_OPTION_HEADERS
-#include "opt_snd.h"
-#endif
-
-#include <dev/sound/pcm/sound.h>
-#include <dev/sound/pcm/ac97.h>
-#include <dev/sound/pcm/ac97_patch.h>
-
-void ad1886_patch(struct ac97_info* codec)
-{
-#define AC97_AD_JACK_SPDIF 0x72
- /*
- * Presario700 workaround
- * for Jack Sense/SPDIF Register misetting causing
- * no audible output
- * by Santiago Nullo 04/05/2002
- */
- ac97_wrcd(codec, AC97_AD_JACK_SPDIF, 0x0010);
-}
-
-void ad198x_patch(struct ac97_info* codec)
-{
- switch (ac97_getsubvendor(codec)) {
- case 0x11931043: /* Not for ASUS A9T (probably else too). */
- break;
- default:
- ac97_wrcd(codec, 0x76, ac97_rdcd(codec, 0x76) | 0x0420);
- break;
- }
-}
-
-void ad1981b_patch(struct ac97_info* codec)
-{
- /*
- * Enable headphone jack sensing.
- */
- switch (ac97_getsubvendor(codec)) {
- case 0x02d91014: /* IBM Thinkcentre */
- case 0x099c103c: /* HP nx6110 */
- ac97_wrcd(codec, AC97_AD_JACK_SPDIF,
- ac97_rdcd(codec, AC97_AD_JACK_SPDIF) | 0x0800);
- break;
- default:
- break;
- }
-}
-
-void cmi9739_patch(struct ac97_info* codec)
-{
- /*
- * Few laptops need extra register initialization
- * to power up the internal speakers.
- */
- switch (ac97_getsubvendor(codec)) {
- case 0x18431043: /* ASUS W1000N */
- ac97_wrcd(codec, AC97_REG_POWER, 0x000f);
- ac97_wrcd(codec, AC97_MIXEXT_CLFE, 0x0000);
- ac97_wrcd(codec, 0x64, 0x7110);
- break;
- default:
- break;
- }
-}
-
-void alc655_patch(struct ac97_info* codec)
-{
- /*
- * MSI (Micro-Star International) specific EAPD quirk.
- */
- switch (ac97_getsubvendor(codec)) {
- case 0x00611462: /* MSI S250 */
- case 0x01311462: /* MSI S270 */
- case 0x01611462: /* LG K1 Express */
- case 0x03511462: /* MSI L725 */
- ac97_wrcd(codec, 0x7a, ac97_rdcd(codec, 0x7a) & 0xfffd);
- break;
- case 0x10ca1734:
- /*
- * Amilo Pro V2055 with ALC655 has phone out by default
- * disabled (surround on), leaving us only with internal
- * speakers. This should really go to mixer. We write the
- * Data Flow Control reg.
- */
- ac97_wrcd(codec, 0x6a, ac97_rdcd(codec, 0x6a) | 0x0001);
- break;
- default:
- break;
- }
-}
diff --git a/sys/modules/sound/sound/Makefile b/sys/modules/sound/sound/Makefile
--- a/sys/modules/sound/sound/Makefile
+++ b/sys/modules/sound/sound/Makefile
@@ -15,7 +15,7 @@
SRCS+= feeder_eq_gen.h feeder_rate_gen.h snd_fxdiv_gen.h
SRCS+= mpu_if.h mpufoi_if.h synth_if.h
SRCS+= mpu_if.c mpufoi_if.c synth_if.c
-SRCS+= ac97.c ac97_patch.c buffer.c channel.c dsp.c
+SRCS+= ac97.c buffer.c channel.c dsp.c
SRCS+= mixer.c sndstat.c sound.c vchan.c
SRCS+= midi.c mpu401.c sequencer.c
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Jan 18, 1:24 AM (12 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27701067
Default Alt Text
D47732.id.diff (9 KB)
Attached To
Mode
D47732: sound: Merge ac97 and ac97_patch
Attached
Detach File
Event Timeline
Log In to Comment