[PATCH 0/2] dmic fix to allow userspace to choose ch count
From: Vamshi Krishna Gopal vamshi.krishna.gopal@intel.corp-partner.google.com
hello, git.kernel.org/pub/scm/linux/kernel/git/vkoul/sound.git/commit/?h=intel2&id=c5e7e00788229ab8491676a424fb42778038ad29 git.kernel.org/pub/scm/linux/kernel/git/vkoul/sound.git/commit/?h=intel2&id=d87fa3f7a365bcccb396146ada03e03a4574159d These patch series is about removing channel count selection based on mach/pdata and assign min and max channel only based on hw params. This allows userspcae to choose channel count. This patch series was Acked by Vinod and taken into his tree. But seems its missed to be posted. hence i've rebased the same commits and re sending.
Naveen Manohar (2): ASoC: Intel: kbl: Remove option of choosing CH count based on pdata ASoC: Intel: kbl: update dmic fixup params
sound/soc/intel/boards/kbl_rt5663_max98927.c | 44 +++++++------------- 1 file changed, 14 insertions(+), 30 deletions(-)
From: Naveen Manohar naveen.m@intel.com
Remove option of choosing channel count based on pdata for kbl_rt5663_max98927 machine driver. As User-space expects 4ch DMIC data and uses channel-map in ucm to figure-out the desired channel to use, Hence removing driver change to allow choosing channels.
Signed-off-by: Naveen Manohar naveen.m@intel.com Acked-by: Vinod Koul vinod.koul@intel.com Signed-off-by: Vamshi Krishna Gopal vamshi.krishna.gopal@intel.com --- sound/soc/intel/boards/kbl_rt5663_max98927.c | 26 -------------------- 1 file changed, 26 deletions(-)
diff --git a/sound/soc/intel/boards/kbl_rt5663_max98927.c b/sound/soc/intel/boards/kbl_rt5663_max98927.c index 9a4b3d0973f6..adfa2c044aed 100644 --- a/sound/soc/intel/boards/kbl_rt5663_max98927.c +++ b/sound/soc/intel/boards/kbl_rt5663_max98927.c @@ -524,26 +524,6 @@ static struct snd_soc_ops kabylake_ssp0_ops = { .hw_params = kabylake_ssp0_hw_params, };
-static unsigned int channels_dmic[] = { - 2, 4, -}; - -static struct snd_pcm_hw_constraint_list constraints_dmic_channels = { - .count = ARRAY_SIZE(channels_dmic), - .list = channels_dmic, - .mask = 0, -}; - -static const unsigned int dmic_2ch[] = { - 2, -}; - -static const struct snd_pcm_hw_constraint_list constraints_dmic_2ch = { - .count = ARRAY_SIZE(dmic_2ch), - .list = dmic_2ch, - .mask = 0, -}; - static int kabylake_dmic_startup(struct snd_pcm_substream *substream) { struct snd_pcm_runtime *runtime = substream->runtime; @@ -970,7 +950,6 @@ static struct snd_soc_card kabylake_audio_card_rt5663 = { static int kabylake_audio_probe(struct platform_device *pdev) { struct kbl_rt5663_private *ctx; - struct snd_soc_acpi_mach *mach; int ret;
ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); @@ -985,11 +964,6 @@ static int kabylake_audio_probe(struct platform_device *pdev) kabylake_audio_card->dev = &pdev->dev; snd_soc_card_set_drvdata(kabylake_audio_card, ctx);
- mach = pdev->dev.platform_data; - if (mach) - dmic_constraints = mach->mach_params.dmic_num == 2 ? - &constraints_dmic_2ch : &constraints_dmic_channels; - ctx->mclk = devm_clk_get(&pdev->dev, "ssp1_mclk"); if (IS_ERR(ctx->mclk)) { ret = PTR_ERR(ctx->mclk);
From: Naveen Manohar naveen.m@intel.com
Update dmic fixup params to always expose QUAD channel capture device, enabling User-space to control channel count. Assign min and max channel only based on input hw_params.
Signed-off-by: Naveen Manohar naveen.m@intel.com Acked-by: Vinod Koul vinod.koul@intel.com Signed-off-by: Vamshi Krishna Gopal vamshi.krishna.gopal@intel.com --- sound/soc/intel/boards/kbl_rt5663_max98927.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/sound/soc/intel/boards/kbl_rt5663_max98927.c b/sound/soc/intel/boards/kbl_rt5663_max98927.c index adfa2c044aed..a1bcde7851b7 100644 --- a/sound/soc/intel/boards/kbl_rt5663_max98927.c +++ b/sound/soc/intel/boards/kbl_rt5663_max98927.c @@ -29,9 +29,9 @@ #define DMIC_CH(p) p->list[p->count-1] #define MAXIM_DEV0_NAME "i2c-MX98927:00" #define MAXIM_DEV1_NAME "i2c-MX98927:01" +#define QUAD_CHANNEL 4
static struct snd_soc_card *kabylake_audio_card; -static const struct snd_pcm_hw_constraint_list *dmic_constraints; static struct snd_soc_jack skylake_hdmi[3];
struct kbl_hdmi_pcm { @@ -365,6 +365,16 @@ static const struct snd_pcm_hw_constraint_list constraints_channels = { .mask = 0, };
+static const unsigned int channels_quad[] = { + QUAD_CHANNEL, +}; + +static const struct snd_pcm_hw_constraint_list constraints_channels_quad = { + .count = ARRAY_SIZE(channels_quad), + .list = channels_quad, + .mask = 0, +}; + static int kbl_fe_startup(struct snd_pcm_substream *substream) { struct snd_pcm_runtime *runtime = substream->runtime; @@ -480,7 +490,7 @@ static int kabylake_dmic_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_interval *chan = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS);
- if (params_channels(params) == 2 || DMIC_CH(dmic_constraints) == 2) + if (params_channels(params) == 2) chan->min = chan->max = 2; else chan->min = chan->max = 4; @@ -528,9 +538,9 @@ static int kabylake_dmic_startup(struct snd_pcm_substream *substream) { struct snd_pcm_runtime *runtime = substream->runtime;
- runtime->hw.channels_max = DMIC_CH(dmic_constraints); + runtime->hw.channels_min = runtime->hw.channels_max = QUAD_CHANNEL; snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS, - dmic_constraints); + &constraints_channels_quad);
return snd_pcm_hw_constraint_list(substream->runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &constraints_rates);
participants (1)
-
vamshi.krishna.gopal@intel.com