Message ID | 1587976638-29806-4-git-send-email-brent.lu@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | add channel constraint for BDW machine drivers | expand |
On 2020-04-27 10:37, Brent Lu wrote: > BDW boards using this machine driver supports only stereo capture and > playback. Implement a constraint to enforce it. > Title for the overall series fits better than the one chosen for actual patches. "channel constraint support" is misleading. Constraints are added or removed but certainly not supported. > Signed-off-by: Brent Lu <brent.lu@intel.com> > --- > sound/soc/intel/boards/broadwell.c | 33 +++++++++++++++++++++++++++++++++ > 1 file changed, 33 insertions(+) > > diff --git a/sound/soc/intel/boards/broadwell.c b/sound/soc/intel/boards/broadwell.c > index f9a8336..09347f2 100644 > --- a/sound/soc/intel/boards/broadwell.c > +++ b/sound/soc/intel/boards/broadwell.c > @@ -19,6 +19,8 @@ > > #include "../../codecs/rt286.h" > > +#define DUAL_CHANNEL 2 > + Remove, we need not additional too-obvious macro. One could argue 'STEREO' is a better choice too. > static struct snd_soc_jack broadwell_headset; > /* Headset jack detection DAPM pins */ > static struct snd_soc_jack_pin broadwell_headset_pins[] = { > @@ -143,6 +145,36 @@ static int broadwell_rtd_init(struct snd_soc_pcm_runtime *rtd) > } > #endif > > +static const unsigned int channels[] = { > + DUAL_CHANNEL, Inline as stated above. > +}; > + > +static const struct snd_pcm_hw_constraint_list constraints_channels = { > + .count = ARRAY_SIZE(channels), > + .list = channels, > + .mask = 0, > +}; > + > +static int broadwell_fe_startup(struct snd_pcm_substream *substream) > +{ > + struct snd_pcm_runtime *runtime = substream->runtime; > + > + /* > + * On this platform for PCM device we support, > + * stereo audio > + */ > + Sometimes you add a newline add and before, while other times just one, before the comment. Please streamline the format across all patches in the series. Comment can be more strict too /* Board supports stereo configuration only */ > + runtime->hw.channels_max = DUAL_CHANNEL; Inline. If you really want to avoid using 2, make use of 0-entry of constrains_channels array. > + snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS, > + &constraints_channels); > + > + return 0; > +} > + > +static const struct snd_soc_ops broadwell_fe_ops = { > + .startup = broadwell_fe_startup, > +}; > + > SND_SOC_DAILINK_DEF(system, > DAILINK_COMP_ARRAY(COMP_CPU("System Pin"))); > > @@ -180,6 +212,7 @@ static struct snd_soc_dai_link broadwell_rt286_dais[] = { > .init = broadwell_rtd_init, > #endif > .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, > + .ops = &broadwell_fe_ops, > .dpcm_playback = 1, > .dpcm_capture = 1, > SND_SOC_DAILINK_REG(system, dummy, platform), >
diff --git a/sound/soc/intel/boards/broadwell.c b/sound/soc/intel/boards/broadwell.c index f9a8336..09347f2 100644 --- a/sound/soc/intel/boards/broadwell.c +++ b/sound/soc/intel/boards/broadwell.c @@ -19,6 +19,8 @@ #include "../../codecs/rt286.h" +#define DUAL_CHANNEL 2 + static struct snd_soc_jack broadwell_headset; /* Headset jack detection DAPM pins */ static struct snd_soc_jack_pin broadwell_headset_pins[] = { @@ -143,6 +145,36 @@ static int broadwell_rtd_init(struct snd_soc_pcm_runtime *rtd) } #endif +static const unsigned int channels[] = { + DUAL_CHANNEL, +}; + +static const struct snd_pcm_hw_constraint_list constraints_channels = { + .count = ARRAY_SIZE(channels), + .list = channels, + .mask = 0, +}; + +static int broadwell_fe_startup(struct snd_pcm_substream *substream) +{ + struct snd_pcm_runtime *runtime = substream->runtime; + + /* + * On this platform for PCM device we support, + * stereo audio + */ + + runtime->hw.channels_max = DUAL_CHANNEL; + snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS, + &constraints_channels); + + return 0; +} + +static const struct snd_soc_ops broadwell_fe_ops = { + .startup = broadwell_fe_startup, +}; + SND_SOC_DAILINK_DEF(system, DAILINK_COMP_ARRAY(COMP_CPU("System Pin"))); @@ -180,6 +212,7 @@ static struct snd_soc_dai_link broadwell_rt286_dais[] = { .init = broadwell_rtd_init, #endif .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, + .ops = &broadwell_fe_ops, .dpcm_playback = 1, .dpcm_capture = 1, SND_SOC_DAILINK_REG(system, dummy, platform),
BDW boards using this machine driver supports only stereo capture and playback. Implement a constraint to enforce it. Signed-off-by: Brent Lu <brent.lu@intel.com> --- sound/soc/intel/boards/broadwell.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+)