git: 01f650cb8d03 - stable/14 - sound: Merge ac97 and ac97_patch
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 04 Dec 2024 12:04:10 UTC
The branch stable/14 has been updated by christos:
URL: https://cgit.FreeBSD.org/src/commit/?id=01f650cb8d034f1de4616d173fbfd62c85636b42
commit 01f650cb8d034f1de4616d173fbfd62c85636b42
Author: Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2024-12-02 16:26:20 +0000
Commit: Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2024-12-04 12:03:36 +0000
sound: Merge ac97 and ac97_patch
No functional change intended.
Sponsored by: The FreeBSD Foundation
MFC after: 2 days
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D47732
(cherry picked from commit 0b4e32912566d802c7a6501d9ce8119f04dbc2fb)
---
sys/conf/files | 1 -
sys/dev/sound/pcm/ac97.c | 96 +++++++++++++++++++++++++++++++-
sys/dev/sound/pcm/ac97_patch.c | 117 ---------------------------------------
sys/dev/sound/pcm/ac97_patch.h | 35 ------------
sys/modules/sound/sound/Makefile | 2 +-
5 files changed, 96 insertions(+), 155 deletions(-)
diff --git a/sys/conf/files b/sys/conf/files
index 68ca2fe2e6ec..2fc2d151e143 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -3107,7 +3107,6 @@ dev/sound/pci/hdspe.c optional snd_hdspe pci
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
index d04ec2d8271c..71eb387afa1b 100644
--- 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 @@ static const struct ac97_vendorid ac97vendorid[] = {
{ 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 @@ ac97_getflags(struct ac97_info *codec)
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.c b/sys/dev/sound/pcm/ac97_patch.c
deleted file mode 100644
index 671b6598f51a..000000000000
--- 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/dev/sound/pcm/ac97_patch.h b/sys/dev/sound/pcm/ac97_patch.h
deleted file mode 100644
index 997b10dbd02c..000000000000
--- 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/modules/sound/sound/Makefile b/sys/modules/sound/sound/Makefile
index 1c3685715503..b29154117719 100644
--- a/sys/modules/sound/sound/Makefile
+++ b/sys/modules/sound/sound/Makefile
@@ -16,7 +16,7 @@ SRCS+= feeder_matrix.c feeder_mixer.c
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