@@ -472,6 +472,75 @@ static void skl_set_base_module_format(struct skl_dev *skl,
472
472
base_cfg -> is_pages = res -> is_pages ;
473
473
}
474
474
475
+ static void fill_pin_params (struct skl_audio_data_format * pin_fmt ,
476
+ struct skl_module_fmt * format )
477
+ {
478
+ pin_fmt -> number_of_channels = format -> channels ;
479
+ pin_fmt -> s_freq = format -> s_freq ;
480
+ pin_fmt -> bit_depth = format -> bit_depth ;
481
+ pin_fmt -> valid_bit_depth = format -> valid_bit_depth ;
482
+ pin_fmt -> ch_cfg = format -> ch_cfg ;
483
+ pin_fmt -> sample_type = format -> sample_type ;
484
+ pin_fmt -> channel_map = format -> ch_map ;
485
+ pin_fmt -> interleaving = format -> interleaving_style ;
486
+ }
487
+
488
+ /*
489
+ * Any module configuration begins with a base module configuration but
490
+ * can be followed by a generic extension containing audio format for all
491
+ * module's pins that are in use.
492
+ */
493
+ static void skl_set_base_ext_module_format (struct skl_dev * skl ,
494
+ struct skl_module_cfg * mconfig ,
495
+ struct skl_base_cfg_ext * base_cfg_ext )
496
+ {
497
+ struct skl_module * module = mconfig -> module ;
498
+ struct skl_module_pin_resources * pin_res ;
499
+ struct skl_module_iface * fmt = & module -> formats [mconfig -> fmt_idx ];
500
+ struct skl_module_res * res = & module -> resources [mconfig -> res_idx ];
501
+ struct skl_module_fmt * format ;
502
+ struct skl_pin_format * pin_fmt ;
503
+ char * params ;
504
+ int i ;
505
+
506
+ base_cfg_ext -> nr_input_pins = res -> nr_input_pins ;
507
+ base_cfg_ext -> nr_output_pins = res -> nr_output_pins ;
508
+ base_cfg_ext -> priv_param_length =
509
+ mconfig -> formats_config [SKL_PARAM_INIT ].caps_size ;
510
+
511
+ for (i = 0 ; i < res -> nr_input_pins ; i ++ ) {
512
+ pin_res = & res -> input [i ];
513
+ pin_fmt = & base_cfg_ext -> pins_fmt [i ];
514
+
515
+ pin_fmt -> pin_idx = pin_res -> pin_index ;
516
+ pin_fmt -> buf_size = pin_res -> buf_size ;
517
+
518
+ format = & fmt -> inputs [pin_res -> pin_index ].fmt ;
519
+ fill_pin_params (& pin_fmt -> audio_fmt , format );
520
+ }
521
+
522
+ for (i = 0 ; i < res -> nr_output_pins ; i ++ ) {
523
+ pin_res = & res -> output [i ];
524
+ pin_fmt = & base_cfg_ext -> pins_fmt [res -> nr_input_pins + i ];
525
+
526
+ pin_fmt -> pin_idx = pin_res -> pin_index ;
527
+ pin_fmt -> buf_size = pin_res -> buf_size ;
528
+
529
+ format = & fmt -> outputs [pin_res -> pin_index ].fmt ;
530
+ fill_pin_params (& pin_fmt -> audio_fmt , format );
531
+ }
532
+
533
+ if (!base_cfg_ext -> priv_param_length )
534
+ return ;
535
+
536
+ params = (char * )base_cfg_ext + sizeof (struct skl_base_cfg_ext );
537
+ params += (base_cfg_ext -> nr_input_pins + base_cfg_ext -> nr_output_pins ) *
538
+ sizeof (struct skl_pin_format );
539
+
540
+ memcpy (params , mconfig -> formats_config [SKL_PARAM_INIT ].caps ,
541
+ mconfig -> formats_config [SKL_PARAM_INIT ].caps_size );
542
+ }
543
+
475
544
/*
476
545
* Copies copier capabilities into copier module and updates copier module
477
546
* config size.
@@ -1091,19 +1160,6 @@ int skl_unbind_modules(struct skl_dev *skl,
1091
1160
return ret ;
1092
1161
}
1093
1162
1094
- static void fill_pin_params (struct skl_audio_data_format * pin_fmt ,
1095
- struct skl_module_fmt * format )
1096
- {
1097
- pin_fmt -> number_of_channels = format -> channels ;
1098
- pin_fmt -> s_freq = format -> s_freq ;
1099
- pin_fmt -> bit_depth = format -> bit_depth ;
1100
- pin_fmt -> valid_bit_depth = format -> valid_bit_depth ;
1101
- pin_fmt -> ch_cfg = format -> ch_cfg ;
1102
- pin_fmt -> sample_type = format -> sample_type ;
1103
- pin_fmt -> channel_map = format -> ch_map ;
1104
- pin_fmt -> interleaving = format -> interleaving_style ;
1105
- }
1106
-
1107
1163
#define CPR_SINK_FMT_PARAM_ID 2
1108
1164
1109
1165
/*
0 commit comments