git: 0b4e32912566 - main - sound: Merge ac97 and ac97_patch

From: Christos Margiolis <christos_at_FreeBSD.org>
Date: Mon, 02 Dec 2024 16:27:20 UTC
The branch main has been updated by christos:

URL: https://cgit.FreeBSD.org/src/commit/?id=0b4e32912566d802c7a6501d9ce8119f04dbc2fb

commit 0b4e32912566d802c7a6501d9ce8119f04dbc2fb
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2024-12-02 16:26:20 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2024-12-02 16:26:20 +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
---
 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 9b50c4e08274..5b05caddde08 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -3132,7 +3132,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 f31a751b3f29..d2cfed2f4b6a 100644
--- a/sys/modules/sound/sound/Makefile
+++ b/sys/modules/sound/sound/Makefile
@@ -15,7 +15,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