aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/intel/skylake/skl-messages.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/intel/skylake/skl-messages.c')
-rw-r--r--sound/soc/intel/skylake/skl-messages.c31
1 files changed, 27 insertions, 4 deletions
diff --git a/sound/soc/intel/skylake/skl-messages.c b/sound/soc/intel/skylake/skl-messages.c
index ab1adc0c9cc3..eca85827dbd2 100644
--- a/sound/soc/intel/skylake/skl-messages.c
+++ b/sound/soc/intel/skylake/skl-messages.c
@@ -507,6 +507,8 @@ static void skl_setup_cpr_gateway_cfg(struct skl_sst *ctx,
507 struct skl_module_cfg *mconfig, 507 struct skl_module_cfg *mconfig,
508 struct skl_cpr_cfg *cpr_mconfig) 508 struct skl_cpr_cfg *cpr_mconfig)
509{ 509{
510 u32 dma_io_buf;
511
510 cpr_mconfig->gtw_cfg.node_id = skl_get_node_id(ctx, mconfig); 512 cpr_mconfig->gtw_cfg.node_id = skl_get_node_id(ctx, mconfig);
511 513
512 if (cpr_mconfig->gtw_cfg.node_id == SKL_NON_GATEWAY_CPR_NODE_ID) { 514 if (cpr_mconfig->gtw_cfg.node_id == SKL_NON_GATEWAY_CPR_NODE_ID) {
@@ -514,10 +516,29 @@ static void skl_setup_cpr_gateway_cfg(struct skl_sst *ctx,
514 return; 516 return;
515 } 517 }
516 518
517 if (SKL_CONN_SOURCE == mconfig->hw_conn_type) 519 switch (mconfig->hw_conn_type) {
518 cpr_mconfig->gtw_cfg.dma_buffer_size = 2 * mconfig->obs; 520 case SKL_CONN_SOURCE:
519 else 521 if (mconfig->dev_type == SKL_DEVICE_HDAHOST)
520 cpr_mconfig->gtw_cfg.dma_buffer_size = 2 * mconfig->ibs; 522 dma_io_buf = mconfig->ibs;
523 else
524 dma_io_buf = mconfig->obs;
525 break;
526
527 case SKL_CONN_SINK:
528 if (mconfig->dev_type == SKL_DEVICE_HDAHOST)
529 dma_io_buf = mconfig->obs;
530 else
531 dma_io_buf = mconfig->ibs;
532 break;
533
534 default:
535 dev_warn(ctx->dev, "wrong connection type: %d\n",
536 mconfig->hw_conn_type);
537 return;
538 }
539
540 cpr_mconfig->gtw_cfg.dma_buffer_size =
541 mconfig->dma_buffer_size * dma_io_buf;
521 542
522 cpr_mconfig->cpr_feature_mask = 0; 543 cpr_mconfig->cpr_feature_mask = 0;
523 cpr_mconfig->gtw_cfg.config_length = 0; 544 cpr_mconfig->gtw_cfg.config_length = 0;
@@ -707,6 +728,7 @@ static u16 skl_get_module_param_size(struct skl_sst *ctx,
707 return param_size; 728 return param_size;
708 729
709 case SKL_MODULE_TYPE_BASE_OUTFMT: 730 case SKL_MODULE_TYPE_BASE_OUTFMT:
731 case SKL_MODULE_TYPE_MIC_SELECT:
710 case SKL_MODULE_TYPE_KPB: 732 case SKL_MODULE_TYPE_KPB:
711 return sizeof(struct skl_base_outfmt_cfg); 733 return sizeof(struct skl_base_outfmt_cfg);
712 734
@@ -761,6 +783,7 @@ static int skl_set_module_format(struct skl_sst *ctx,
761 break; 783 break;
762 784
763 case SKL_MODULE_TYPE_BASE_OUTFMT: 785 case SKL_MODULE_TYPE_BASE_OUTFMT:
786 case SKL_MODULE_TYPE_MIC_SELECT:
764 case SKL_MODULE_TYPE_KPB: 787 case SKL_MODULE_TYPE_KPB:
765 skl_set_base_outfmt_format(ctx, module_config, *param_data); 788 skl_set_base_outfmt_format(ctx, module_config, *param_data);
766 break; 789 break;