Skip to content

Commit 5b27a71

Browse files
pawelh07broonie
authored andcommitted
ASoC: Intel: Skylake: Properly configure modules with generic extension
Make use of struct skl_base_cfg_ext and its format setter to configure modules which are described with said structure. Signed-off-by: Gustaw Lewandowski <[email protected]> Signed-off-by: Pawel Harlozinski <[email protected]> Signed-off-by: Szymon Mielczarek <[email protected]> Signed-off-by: Cezary Rojewski <[email protected]> Tested-by: Lukasz Majczak <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
1 parent db5a3f8 commit 5b27a71

File tree

1 file changed

+15
-36
lines changed

1 file changed

+15
-36
lines changed

sound/soc/intel/skylake/skl-messages.c

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -806,27 +806,6 @@ static void skl_set_copier_format(struct skl_dev *skl,
806806
skl_setup_cpr_gateway_cfg(skl, mconfig, cpr_mconfig);
807807
}
808808

809-
/*
810-
* Algo module are DSP pre processing modules. Algo module take base module
811-
* configuration and params
812-
*/
813-
814-
static void skl_set_algo_format(struct skl_dev *skl,
815-
struct skl_module_cfg *mconfig,
816-
struct skl_algo_cfg *algo_mcfg)
817-
{
818-
struct skl_base_cfg *base_cfg = (struct skl_base_cfg *)algo_mcfg;
819-
820-
skl_set_base_module_format(skl, mconfig, base_cfg);
821-
if (mconfig->formats_config[SKL_PARAM_INIT].caps_size == 0)
822-
return;
823-
824-
memcpy(algo_mcfg->params,
825-
mconfig->formats_config[SKL_PARAM_INIT].caps,
826-
mconfig->formats_config[SKL_PARAM_INIT].caps_size);
827-
828-
}
829-
830809
/*
831810
* Mic select module allows selecting one or many input channels, thus
832811
* acting as a demux.
@@ -849,6 +828,8 @@ static void skl_set_base_outfmt_format(struct skl_dev *skl,
849828
static u16 skl_get_module_param_size(struct skl_dev *skl,
850829
struct skl_module_cfg *mconfig)
851830
{
831+
struct skl_module_res *res;
832+
struct skl_module *module = mconfig->module;
852833
u16 param_size;
853834

854835
switch (mconfig->m_type) {
@@ -863,11 +844,6 @@ static u16 skl_get_module_param_size(struct skl_dev *skl,
863844
case SKL_MODULE_TYPE_UPDWMIX:
864845
return sizeof(struct skl_up_down_mixer_cfg);
865846

866-
case SKL_MODULE_TYPE_ALGO:
867-
param_size = sizeof(struct skl_base_cfg);
868-
param_size += mconfig->formats_config[SKL_PARAM_INIT].caps_size;
869-
return param_size;
870-
871847
case SKL_MODULE_TYPE_BASE_OUTFMT:
872848
case SKL_MODULE_TYPE_MIC_SELECT:
873849
return sizeof(struct skl_base_outfmt_cfg);
@@ -876,12 +852,16 @@ static u16 skl_get_module_param_size(struct skl_dev *skl,
876852
case SKL_MODULE_TYPE_KPB:
877853
return sizeof(struct skl_base_cfg);
878854

855+
case SKL_MODULE_TYPE_ALGO:
879856
default:
880-
/*
881-
* return only base cfg when no specific module type is
882-
* specified
883-
*/
884-
return sizeof(struct skl_base_cfg);
857+
res = &module->resources[mconfig->res_idx];
858+
859+
param_size = sizeof(struct skl_base_cfg) + sizeof(struct skl_base_cfg_ext);
860+
param_size += (res->nr_input_pins + res->nr_output_pins) *
861+
sizeof(struct skl_pin_format);
862+
param_size += mconfig->formats_config[SKL_PARAM_INIT].caps_size;
863+
864+
return param_size;
885865
}
886866

887867
return 0;
@@ -922,10 +902,6 @@ static int skl_set_module_format(struct skl_dev *skl,
922902
skl_set_updown_mixer_format(skl, module_config, *param_data);
923903
break;
924904

925-
case SKL_MODULE_TYPE_ALGO:
926-
skl_set_algo_format(skl, module_config, *param_data);
927-
break;
928-
929905
case SKL_MODULE_TYPE_BASE_OUTFMT:
930906
case SKL_MODULE_TYPE_MIC_SELECT:
931907
skl_set_base_outfmt_format(skl, module_config, *param_data);
@@ -936,10 +912,13 @@ static int skl_set_module_format(struct skl_dev *skl,
936912
skl_set_base_module_format(skl, module_config, *param_data);
937913
break;
938914

915+
case SKL_MODULE_TYPE_ALGO:
939916
default:
940917
skl_set_base_module_format(skl, module_config, *param_data);
918+
skl_set_base_ext_module_format(skl, module_config,
919+
*param_data +
920+
sizeof(struct skl_base_cfg));
941921
break;
942-
943922
}
944923

945924
dev_dbg(skl->dev, "Module type=%d id=%d config size: %d bytes\n",

0 commit comments

Comments
 (0)