2.6.35-longterm review patch.  If anyone has any objections, please let me know.

------------------
From: Przemyslaw Bruski <[email protected]>

commit f164753a263bfd2daaf3e0273b179de7e099c57d upstream.

SDPIF status retrieval always returned the default settings instead of
the actual ones.

Signed-off-by: Przemyslaw Bruski <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Andi Kleen <[email protected]>

---
 sound/pci/ctxfi/ctmixer.c |   19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

Index: linux-2.6.35.y/sound/pci/ctxfi/ctmixer.c
===================================================================
--- linux-2.6.35.y.orig/sound/pci/ctxfi/ctmixer.c       2011-03-29 
22:50:36.240331118 -0700
+++ linux-2.6.35.y/sound/pci/ctxfi/ctmixer.c    2011-03-29 23:03:02.576234251 
-0700
@@ -566,19 +566,6 @@
        return 0;
 }
 
-static int ct_spdif_default_get(struct snd_kcontrol *kcontrol,
-                               struct snd_ctl_elem_value *ucontrol)
-{
-       unsigned int status = SNDRV_PCM_DEFAULT_CON_SPDIF;
-
-       ucontrol->value.iec958.status[0] = (status >> 0) & 0xff;
-       ucontrol->value.iec958.status[1] = (status >> 8) & 0xff;
-       ucontrol->value.iec958.status[2] = (status >> 16) & 0xff;
-       ucontrol->value.iec958.status[3] = (status >> 24) & 0xff;
-
-       return 0;
-}
-
 static int ct_spdif_get(struct snd_kcontrol *kcontrol,
                        struct snd_ctl_elem_value *ucontrol)
 {
@@ -586,6 +573,10 @@
        unsigned int status;
 
        atc->spdif_out_get_status(atc, &status);
+
+       if (status == 0)
+               status = SNDRV_PCM_DEFAULT_CON_SPDIF;
+
        ucontrol->value.iec958.status[0] = (status >> 0) & 0xff;
        ucontrol->value.iec958.status[1] = (status >> 8) & 0xff;
        ucontrol->value.iec958.status[2] = (status >> 16) & 0xff;
@@ -629,7 +620,7 @@
        .name           = SNDRV_CTL_NAME_IEC958("", PLAYBACK, DEFAULT),
        .count          = 1,
        .info           = ct_spdif_info,
-       .get            = ct_spdif_default_get,
+       .get            = ct_spdif_get,
        .put            = ct_spdif_put,
        .private_value  = MIXER_IEC958_DEFAULT
 };

_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable

Reply via email to