On Wed, 02 Dec 2015 15:22:05 +0100, Moise Gergaud wrote: > > Use pcm iec958 channel status helper to update sampling freq parameter. > > Signed-off-by: Moise Gergaud <moise.gergaud@xxxxxx> > Acked-by: Arnaud Pouliquen <arnaud.pouliquen@xxxxxx> > --- > sound/soc/sti/Kconfig | 1 + > sound/soc/sti/uniperif_player.c | 58 ++++++++--------------------------------- > 2 files changed, 12 insertions(+), 47 deletions(-) > > diff --git a/sound/soc/sti/Kconfig b/sound/soc/sti/Kconfig > index 64a6900..8e616a4 100644 > --- a/sound/soc/sti/Kconfig > +++ b/sound/soc/sti/Kconfig > @@ -6,6 +6,7 @@ menuconfig SND_SOC_STI > depends on SND_SOC > depends on ARCH_STI || COMPILE_TEST > select SND_SOC_GENERIC_DMAENGINE_PCM > + select SND_PCM_IEC958 > help > Say Y if you want to enable ASoC-support for > any of the STI platforms (e.g. STIH416). > diff --git a/sound/soc/sti/uniperif_player.c b/sound/soc/sti/uniperif_player.c > index 7aca6b9..b55e412 100644 > --- a/sound/soc/sti/uniperif_player.c > +++ b/sound/soc/sti/uniperif_player.c > @@ -12,6 +12,7 @@ > > #include <sound/asoundef.h> > #include <sound/soc.h> > +#include <sound/pcm_iec958.h> > > #include "uniperif.h" > > @@ -244,6 +245,7 @@ static void uni_player_set_channel_status(struct uniperif *player, > { > int n; > unsigned int status; > + unsigned char *aes = player->stream_settings.iec958.status; > > /* > * Some AVRs and TVs require the channel status to contain a correct > @@ -251,51 +253,9 @@ static void uni_player_set_channel_status(struct uniperif *player, > * set one. > */ > mutex_lock(&player->ctrl_lock); > - if (runtime) { > - switch (runtime->rate) { > - case 22050: > - player->stream_settings.iec958.status[3] = > - IEC958_AES3_CON_FS_22050; > - break; > - case 44100: > - player->stream_settings.iec958.status[3] = > - IEC958_AES3_CON_FS_44100; > - break; > - case 88200: > - player->stream_settings.iec958.status[3] = > - IEC958_AES3_CON_FS_88200; > - break; > - case 176400: > - player->stream_settings.iec958.status[3] = > - IEC958_AES3_CON_FS_176400; > - break; > - case 24000: > - player->stream_settings.iec958.status[3] = > - IEC958_AES3_CON_FS_24000; > - break; > - case 48000: > - player->stream_settings.iec958.status[3] = > - IEC958_AES3_CON_FS_48000; > - break; > - case 96000: > - player->stream_settings.iec958.status[3] = > - IEC958_AES3_CON_FS_96000; > - break; > - case 192000: > - player->stream_settings.iec958.status[3] = > - IEC958_AES3_CON_FS_192000; > - break; > - case 32000: > - player->stream_settings.iec958.status[3] = > - IEC958_AES3_CON_FS_32000; > - break; > - default: > - /* Mark as sampling frequency not indicated */ > - player->stream_settings.iec958.status[3] = > - IEC958_AES3_CON_FS_NOTID; > - break; > - } > - } > + > + /* update channel status sampling freq */ > + snd_pcm_update_iec958_consumer(runtime, aes, 4); > > /* Audio mode: > * Use audio mode status to select PCM or encoded mode The changes until this point are indeed about the conversion with a helper function. However.... > @@ -318,7 +278,7 @@ static void uni_player_set_channel_status(struct uniperif *player, > /* Program the new channel status */ > for (n = 0; n < 6; ++n) { > status = > - player->stream_settings.iec958.status[0 + (n * 4)] & 0xf; > + player->stream_settings.iec958.status[0 + (n * 4)] & 0xff; > status |= > player->stream_settings.iec958.status[1 + (n * 4)] << 8; > status |= > @@ -563,6 +523,7 @@ static int uni_player_ctl_iec958_get(struct snd_kcontrol *kcontrol, > ucontrol->value.iec958.status[1] = iec958->status[1]; > ucontrol->value.iec958.status[2] = iec958->status[2]; > ucontrol->value.iec958.status[3] = iec958->status[3]; > + ucontrol->value.iec958.status[4] = iec958->status[4]; > mutex_unlock(&player->ctrl_lock); > return 0; > } > @@ -574,15 +535,18 @@ static int uni_player_ctl_iec958_put(struct snd_kcontrol *kcontrol, > struct sti_uniperiph_data *priv = snd_soc_dai_get_drvdata(dai); > struct uniperif *player = priv->dai_data.uni; > struct snd_aes_iec958 *iec958 = &player->stream_settings.iec958; > + struct snd_pcm_substream *substream = player->substream; > > mutex_lock(&player->ctrl_lock); > iec958->status[0] = ucontrol->value.iec958.status[0]; > iec958->status[1] = ucontrol->value.iec958.status[1]; > iec958->status[2] = ucontrol->value.iec958.status[2]; > iec958->status[3] = ucontrol->value.iec958.status[3]; > + iec958->status[4] = ucontrol->value.iec958.status[4]; > mutex_unlock(&player->ctrl_lock); These changes are basically irrelevant. They look like real fixes, and if it's really so, they should be split to a different patch. Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel