Skip to content

Commit

Permalink
ALSA: ctxfi - Fix SPDIF status retrieval
Browse files Browse the repository at this point in the history
SDPIF status retrieval always returned the default settings instead of
the actual ones.

Signed-off-by: Przemyslaw Bruski <pbruskispam@op.pl>
Cc: <stable@kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Przemyslaw Bruski authored and Takashi Iwai committed Mar 14, 2011
1 parent 4c1847e commit f164753
Showing 1 changed file with 5 additions and 14 deletions.
19 changes: 5 additions & 14 deletions sound/pci/ctxfi/ctmixer.c
Original file line number Diff line number Diff line change
Expand Up @@ -566,26 +566,17 @@ static int ct_spdif_get_mask(struct snd_kcontrol *kcontrol,
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)
{
struct ct_atc *atc = snd_kcontrol_chip(kcontrol);
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;
Expand Down Expand Up @@ -629,7 +620,7 @@ static struct snd_kcontrol_new iec958_default_ctl = {
.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
};
Expand Down

0 comments on commit f164753

Please sign in to comment.