diff options
Diffstat (limited to 'sound/soc/intel/skylake/skl-messages.c')
-rw-r--r-- | sound/soc/intel/skylake/skl-messages.c | 31 |
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; |