From: Matthew Garrett <mjg59@srcf.ucam.org>
To: Takashi Iwai <tiwai@suse.de>
Cc: alsa-devel@alsa-project.org
Subject: Re: Problems with multiple simultaneous ac97 quirks
Date: Fri, 16 Sep 2005 11:41:37 +0100 [thread overview]
Message-ID: <20050916104137.GA18311@srcf.ucam.org> (raw)
In-Reply-To: <20050915202858.GA5169@srcf.ucam.org>
[-- Attachment #1: Type: text/plain, Size: 415 bytes --]
On Thu, Sep 15, 2005 at 09:28:58PM +0100, Matthew Garrett wrote:
> Ok. Something like the following patch? It introduces
> AC97_TUNE_HP_MUTE_LED (yes, it's a poor name...) which is identical to
> AC97_TUNE_MUTE_LED except it calls bind_hp_volsw_put instead of
> snd_ac97_put_volsw and removes the headphone mixer controls.
Oops. Entirely the wrong patch. Here we go:
--
Matthew Garrett | mjg59@srcf.ucam.org
[-- Attachment #2: hpledquirk.diff --]
[-- Type: text/plain, Size: 2059 bytes --]
--- include/sound/ac97_codec.h.orig 2005-09-15 19:05:14.000000000 +0100
+++ b/include/sound/ac97_codec.h 2005-09-15 19:05:47.000000000 +0100
@@ -570,6 +570,7 @@
AC97_TUNE_ALC_JACK, /* for Realtek, enable JACK detection */
AC97_TUNE_INV_EAPD, /* inverted EAPD implementation */
AC97_TUNE_MUTE_LED, /* EAPD bit works as mute LED */
+ AC97_TUNE_HP_MUTE_LED, /* EAPD bit works as mute LED, use headphone control as master */
};
struct ac97_quirk {
--- sound/pci/ac97/ac97_codec.c.orig 2005-09-15 21:25:24.000000000 +0100
+++ b/sound/pci/ac97/ac97_codec.c 2005-09-15 19:09:55.000000000 +0100
@@ -2470,6 +2470,40 @@
return 0;
}
+static int hp_master_mute_sw_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol)
+{
+ int err = bind_hp_volsw_put(kcontrol, ucontrol);
+ if (err > 0) {
+ ac97_t *ac97 = snd_kcontrol_chip(kcontrol);
+ int shift = (kcontrol->private_value >> 8) & 0x0f;
+ int rshift = (kcontrol->private_value >> 12) & 0x0f;
+ unsigned short mask;
+ if (shift != rshift)
+ mask = 0x8080;
+ else
+ mask = 0x8000;
+ snd_ac97_update_bits(ac97, AC97_POWERDOWN, 0x8000,
+ (ac97->regs[AC97_MASTER] & mask) == mask ?
+ 0x8000 : 0);
+ }
+ return err;
+}
+
+static int tune_hp_mute_led(ac97_t *ac97)
+{
+ snd_kcontrol_t *msw = ctl_find(ac97, "Master Playback Switch", NULL);
+ snd_kcontrol_t *mvol = ctl_find(ac97, "Master Playback Volume", NULL);
+ if (! msw || ! mvol)
+ return -ENOENT;
+ msw->put = hp_master_mute_sw_put;
+ mvol->put = bind_hp_volsw_put;
+ snd_ac97_remove_ctl(ac97, "External Amplifier", NULL);
+ snd_ac97_remove_ctl(ac97, "Headphone Playback", "Switch");
+ snd_ac97_remove_ctl(ac97, "Headphone Playback", "Volume");
+ snd_ac97_update_bits(ac97, AC97_POWERDOWN, 0x8000, 0x8000); /* mute LED on */
+ return 0;
+}
+
struct quirk_table {
const char *name;
int (*func)(ac97_t *);
@@ -2484,6 +2518,7 @@
{ "alc_jack", tune_alc_jack },
{ "inv_eapd", tune_inv_eapd },
{ "mute_led", tune_mute_led },
+ { "hp_mute_led", tune_hp_mute_led },
};
/* apply the quirk with the given type */
next prev parent reply other threads:[~2005-09-16 10:41 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-15 18:04 Problems with multiple simultaneous ac97 quirks Matthew Garrett
2005-09-15 19:49 ` Takashi Iwai
2005-09-15 20:28 ` Matthew Garrett
2005-09-16 9:52 ` Takashi Iwai
2005-09-16 10:41 ` Matthew Garrett [this message]
2005-09-16 12:37 ` John W. Linville
2005-09-16 14:25 ` Matthew Garrett
2005-09-16 17:52 ` Takashi Iwai
2005-09-16 18:20 ` Takashi Iwai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050916104137.GA18311@srcf.ucam.org \
--to=mjg59@srcf.ucam.org \
--cc=alsa-devel@alsa-project.org \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.