[alsa-devel] [PATCH v2] sound azt3328: hook up new emulated AC97 on AC97 patch side
Takashi Iwai
tiwai at suse.de
Sat Feb 19 16:20:19 CET 2011
At Sat, 19 Feb 2011 00:49:48 +0100,
Andreas Mohr wrote:
>
> ChangeLog:
>
> Make newly created AC97 emulation of azt3328 known to the AC97 layer
> side.
> - relocate common functions to the top (due to definition after use)
> - rename control names
> - adjust 3D settings to the card's custom layout of this register
>
> v2:
> - use forward declarations instead of relocating entire functions,
> to decrease patch hunk size
>
> Signed-off-by: Andreas Mohr <andi at lisas.de>
> ---
> Patch created on -rc3, tested and checkpatch.pl'd.
> GIT history seems clean, should thus apply easily.
>
> Thanks!
Applied this one, too. Thanks.
Takashi
>
> Index: linux-2.6/sound/pci/ac97/ac97_codec.c
> ===================================================================
> --- linux-2.6.orig/sound/pci/ac97/ac97_codec.c 2011-02-18 23:40:28.000000000 +0100
> +++ linux-2.6/sound/pci/ac97/ac97_codec.c 2011-02-19 00:30:57.000000000 +0100
> @@ -71,6 +71,12 @@
> { 0x414b4d00, 0xffffff00, "Asahi Kasei", NULL, NULL },
> { 0x414c4300, 0xffffff00, "Realtek", NULL, NULL },
> { 0x414c4700, 0xffffff00, "Realtek", NULL, NULL },
> +/*
> + * This is an _inofficial_ Aztech Labs entry
> + * (value might differ from unknown official Aztech ID),
> + * currently used by the AC97 emulation of the almost-AC97 PCI168 card.
> + */
> +{ 0x415a5400, 0xffffff00, "Aztech Labs (emulated)", NULL, NULL },
> { 0x434d4900, 0xffffff00, "C-Media Electronics", NULL, NULL },
> { 0x43525900, 0xffffff00, "Cirrus Logic", NULL, NULL },
> { 0x43585400, 0xffffff00, "Conexant", NULL, NULL },
> @@ -127,6 +133,7 @@
> { 0x414c4781, 0xffffffff, "ALC658D", NULL, NULL }, /* already patched */
> { 0x414c4780, 0xfffffff0, "ALC658", patch_alc655, NULL },
> { 0x414c4790, 0xfffffff0, "ALC850", patch_alc850, NULL },
> +{ 0x415a5401, 0xffffffff, "AZF3328", patch_aztech_azf3328, NULL },
> { 0x434d4941, 0xffffffff, "CMI9738", patch_cm9738, NULL },
> { 0x434d4961, 0xffffffff, "CMI9739", patch_cm9739, NULL },
> { 0x434d4969, 0xffffffff, "CMI9780", patch_cm9780, NULL },
> Index: linux-2.6/sound/pci/ac97/ac97_patch.c
> ===================================================================
> --- linux-2.6.orig/sound/pci/ac97/ac97_patch.c 2011-02-18 23:40:28.000000000 +0100
> +++ linux-2.6/sound/pci/ac97/ac97_patch.c 2011-02-19 00:30:57.000000000 +0100
> @@ -27,6 +27,15 @@
> #include "ac97_patch.h"
>
> /*
> + * Forward declarations
> + */
> +
> +static struct snd_kcontrol *snd_ac97_find_mixer_ctl(struct snd_ac97 *ac97,
> + const char *name);
> +static int snd_ac97_add_vmaster(struct snd_ac97 *ac97, char *name,
> + const unsigned int *tlv, const char **slaves);
> +
> +/*
> * Chip specific initialization
> */
>
> @@ -2940,6 +2949,49 @@
> return 0;
> }
>
> +static int patch_aztech_azf3328_specific(struct snd_ac97 *ac97)
> +{
> + struct snd_kcontrol *kctl_3d_center =
> + snd_ac97_find_mixer_ctl(ac97, "3D Control - Center");
> + struct snd_kcontrol *kctl_3d_depth =
> + snd_ac97_find_mixer_ctl(ac97, "3D Control - Depth");
> +
> + /*
> + * 3D register is different from AC97 standard layout
> + * (also do some renaming, to resemble Windows driver naming)
> + */
> + if (kctl_3d_center) {
> + kctl_3d_center->private_value =
> + AC97_SINGLE_VALUE(AC97_3D_CONTROL, 1, 0x07, 0);
> + snd_ac97_rename_vol_ctl(ac97,
> + "3D Control - Center", "3D Control - Width"
> + );
> + }
> + if (kctl_3d_depth)
> + kctl_3d_depth->private_value =
> + AC97_SINGLE_VALUE(AC97_3D_CONTROL, 8, 0x03, 0);
> +
> + /* Aztech Windows driver calls the
> + equivalent control "Modem Playback", thus rename it: */
> + snd_ac97_rename_vol_ctl(ac97,
> + "Master Mono Playback", "Modem Playback"
> + );
> + snd_ac97_rename_vol_ctl(ac97,
> + "Headphone Playback", "FM Synth Playback"
> + );
> +
> + return 0;
> +}
> +
> +static const struct snd_ac97_build_ops patch_aztech_azf3328_ops = {
> + .build_specific = patch_aztech_azf3328_specific
> +};
> +
> +static int patch_aztech_azf3328(struct snd_ac97 *ac97)
> +{
> + ac97->build_ops = &patch_aztech_azf3328_ops;
> + return 0;
> +}
>
> /*
> * C-Media CM97xx codecs
>
More information about the Alsa-devel
mailing list