[alsa-devel] [PATCH 0/2] ASoC: Intel: kbl: update dmic fixup params
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. And removes choosing the channel count based on pdata.
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(-)
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 using pdata.
Signed-off-by: Naveen Manohar naveen.m@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 7f76074..661f164 100644 --- a/sound/soc/intel/boards/kbl_rt5663_max98927.c +++ b/sound/soc/intel/boards/kbl_rt5663_max98927.c @@ -390,26 +390,6 @@ static int kabylake_dmic_fixup(struct snd_soc_pcm_runtime *rtd, return 0; }
-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; @@ -838,7 +818,6 @@ static int kabylake_card_late_probe(struct snd_soc_card *card) static int kabylake_audio_probe(struct platform_device *pdev) { struct kbl_rt5663_private *ctx; - struct skl_machine_pdata *pdata;
ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_ATOMIC); if (!ctx) @@ -852,11 +831,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);
- pdata = dev_get_drvdata(&pdev->dev); - if (pdata) - dmic_constraints = pdata->dmic_num == 2 ? - &constraints_dmic_2ch : &constraints_dmic_channels; - return devm_snd_soc_register_card(&pdev->dev, kabylake_audio_card); }
On Thu, Nov 09, 2017 at 07:34:35PM +0530, Naveen Manohar wrote:
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 using pdata.
Which userspace and are you sure there are no boards that only have two of the mics?
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 --- 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 661f164..27c8cf3 100644 --- a/sound/soc/intel/boards/kbl_rt5663_max98927.c +++ b/sound/soc/intel/boards/kbl_rt5663_max98927.c @@ -33,9 +33,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 { @@ -305,6 +305,16 @@ static int kabylake_5663_hdmi2_init(struct snd_soc_pcm_runtime *rtd) .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; @@ -382,7 +392,7 @@ static int kabylake_dmic_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_interval *channels = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS);
- if (params_channels(params) == 2 || DMIC_CH(dmic_constraints) == 2) + if (params_channels(params) == 2) channels->min = channels->max = 2; else channels->min = channels->max = 4; @@ -394,9 +404,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);
On Thu, Nov 09, 2017 at 07:34:34PM +0530, Naveen Manohar wrote:
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. And removes choosing the channel count based on pdata.
Acked-By: Vinod Koul vinod.koul@intel.com
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(-)
-- 1.9.1
participants (3)
-
Mark Brown
-
Naveen Manohar
-
Vinod Koul