| .. | .. | 
|---|
|  | 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ | 
|---|
| 1 | 2 | /* | 
|---|
| 2 | 3 | *  skl_topology.h - Intel HDA Platform topology header file | 
|---|
| 3 | 4 | * | 
|---|
| .. | .. | 
|---|
| 5 | 6 | *  Author: Jeeja KP <jeeja.kp@intel.com> | 
|---|
| 6 | 7 | *  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|---|
| 7 | 8 | * | 
|---|
| 8 |  | - *  This program is free software; you can redistribute it and/or modify | 
|---|
| 9 |  | - *  it under the terms of the GNU General Public License as published by | 
|---|
| 10 |  | - *  the Free Software Foundation; version 2 of the License. | 
|---|
| 11 |  | - * | 
|---|
| 12 |  | - *  This program is distributed in the hope that it will be useful, but | 
|---|
| 13 |  | - *  WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 14 |  | - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|---|
| 15 |  | - *  General Public License for more details. | 
|---|
| 16 |  | - * | 
|---|
| 17 | 9 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
|---|
| 18 |  | - * | 
|---|
| 19 | 10 | */ | 
|---|
| 20 | 11 |  | 
|---|
| 21 | 12 | #ifndef __SKL_TOPOLOGY_H__ | 
|---|
| .. | .. | 
|---|
| 106 | 97 | u8 number_of_channels; | 
|---|
| 107 | 98 | u8 valid_bit_depth; | 
|---|
| 108 | 99 | u8 sample_type; | 
|---|
| 109 |  | -	u8 reserved[1]; | 
|---|
|  | 100 | +	u8 reserved; | 
|---|
| 110 | 101 | } __packed; | 
|---|
| 111 | 102 |  | 
|---|
| 112 | 103 | struct skl_base_cfg { | 
|---|
| 113 |  | -	u32 cps; | 
|---|
|  | 104 | +	u32 cpc; | 
|---|
| 114 | 105 | u32 ibs; | 
|---|
| 115 | 106 | u32 obs; | 
|---|
| 116 | 107 | u32 is_pages; | 
|---|
| .. | .. | 
|---|
| 128 | 119 | struct skl_dma_control { | 
|---|
| 129 | 120 | u32 node_id; | 
|---|
| 130 | 121 | u32 config_length; | 
|---|
| 131 |  | -	u32 config_data[0]; | 
|---|
|  | 122 | +	u32 config_data[]; | 
|---|
| 132 | 123 | } __packed; | 
|---|
| 133 | 124 |  | 
|---|
| 134 | 125 | struct skl_cpr_cfg { | 
|---|
| .. | .. | 
|---|
| 149 | 140 | enum skl_s_freq src_cfg; | 
|---|
| 150 | 141 | } __packed; | 
|---|
| 151 | 142 |  | 
|---|
| 152 |  | -struct notification_mask { | 
|---|
| 153 |  | -	u32 notify; | 
|---|
| 154 |  | -	u32 enable; | 
|---|
| 155 |  | -} __packed; | 
|---|
| 156 |  | - | 
|---|
| 157 | 143 | struct skl_up_down_mixer_cfg { | 
|---|
| 158 | 144 | struct skl_base_cfg base_cfg; | 
|---|
| 159 | 145 | enum skl_ch_cfg out_ch_cfg; | 
|---|
| .. | .. | 
|---|
| 166 | 152 |  | 
|---|
| 167 | 153 | struct skl_algo_cfg { | 
|---|
| 168 | 154 | struct skl_base_cfg  base_cfg; | 
|---|
| 169 |  | -	char params[0]; | 
|---|
|  | 155 | +	char params[]; | 
|---|
| 170 | 156 | } __packed; | 
|---|
| 171 | 157 |  | 
|---|
| 172 | 158 | struct skl_base_outfmt_cfg { | 
|---|
| .. | .. | 
|---|
| 224 | 210 | struct skl_uuid_inst_map { | 
|---|
| 225 | 211 | u16 inst_id; | 
|---|
| 226 | 212 | u16 reserved; | 
|---|
| 227 |  | -	uuid_le mod_uuid; | 
|---|
|  | 213 | +	guid_t mod_uuid; | 
|---|
| 228 | 214 | } __packed; | 
|---|
| 229 | 215 |  | 
|---|
| 230 | 216 | struct skl_kpb_params { | 
|---|
| .. | .. | 
|---|
| 236 | 222 | }; | 
|---|
| 237 | 223 |  | 
|---|
| 238 | 224 | struct skl_module_inst_id { | 
|---|
| 239 |  | -	uuid_le mod_uuid; | 
|---|
|  | 225 | +	guid_t mod_uuid; | 
|---|
| 240 | 226 | int module_id; | 
|---|
| 241 | 227 | u32 instance_id; | 
|---|
| 242 | 228 | int pvt_id; | 
|---|
| .. | .. | 
|---|
| 320 | 306 | struct skl_path_config configs[SKL_MAX_PATH_CONFIGS]; | 
|---|
| 321 | 307 | struct list_head w_list; | 
|---|
| 322 | 308 | bool passthru; | 
|---|
|  | 309 | +	u32 pipe_config_idx; | 
|---|
| 323 | 310 | }; | 
|---|
| 324 | 311 |  | 
|---|
| 325 | 312 | enum skl_module_state { | 
|---|
| .. | .. | 
|---|
| 357 | 344 | struct skl_module_res { | 
|---|
| 358 | 345 | u8 id; | 
|---|
| 359 | 346 | u32 is_pages; | 
|---|
| 360 |  | -	u32 cps; | 
|---|
| 361 | 347 | u32 ibs; | 
|---|
| 362 | 348 | u32 obs; | 
|---|
| 363 | 349 | u32 dma_buffer_size; | 
|---|
| .. | .. | 
|---|
| 369 | 355 | }; | 
|---|
| 370 | 356 |  | 
|---|
| 371 | 357 | struct skl_module { | 
|---|
| 372 |  | -	uuid_le uuid; | 
|---|
|  | 358 | +	guid_t uuid; | 
|---|
| 373 | 359 | u8 loadable; | 
|---|
| 374 | 360 | u8 input_pin_type; | 
|---|
| 375 | 361 | u8 output_pin_type; | 
|---|
| .. | .. | 
|---|
| 398 | 384 | u8 out_queue_mask; | 
|---|
| 399 | 385 | u8 in_queue; | 
|---|
| 400 | 386 | u8 out_queue; | 
|---|
| 401 |  | -	u32 mcps; | 
|---|
| 402 |  | -	u32 ibs; | 
|---|
| 403 |  | -	u32 obs; | 
|---|
| 404 | 387 | u8 is_loadable; | 
|---|
| 405 | 388 | u8 core_id; | 
|---|
| 406 | 389 | u8 dev_type; | 
|---|
| .. | .. | 
|---|
| 456 | 439 | SKL_CH_QUATRO = 4, | 
|---|
| 457 | 440 | }; | 
|---|
| 458 | 441 |  | 
|---|
| 459 |  | -static inline struct skl *get_skl_ctx(struct device *dev) | 
|---|
|  | 442 | +static inline struct skl_dev *get_skl_ctx(struct device *dev) | 
|---|
| 460 | 443 | { | 
|---|
| 461 | 444 | struct hdac_bus *bus = dev_get_drvdata(dev); | 
|---|
| 462 | 445 |  | 
|---|
| .. | .. | 
|---|
| 465 | 448 |  | 
|---|
| 466 | 449 | int skl_tplg_be_update_params(struct snd_soc_dai *dai, | 
|---|
| 467 | 450 | struct skl_pipe_params *params); | 
|---|
| 468 |  | -int skl_dsp_set_dma_control(struct skl_sst *ctx, u32 *caps, | 
|---|
|  | 451 | +int skl_dsp_set_dma_control(struct skl_dev *skl, u32 *caps, | 
|---|
| 469 | 452 | u32 caps_size, u32 node_id); | 
|---|
| 470 | 453 | void skl_tplg_set_be_dmic_config(struct snd_soc_dai *dai, | 
|---|
| 471 | 454 | struct skl_pipe_params *params, int stream); | 
|---|
| 472 | 455 | int skl_tplg_init(struct snd_soc_component *component, | 
|---|
| 473 |  | -				struct hdac_bus *ebus); | 
|---|
|  | 456 | +				struct hdac_bus *bus); | 
|---|
|  | 457 | +void skl_tplg_exit(struct snd_soc_component *component, | 
|---|
|  | 458 | +				struct hdac_bus *bus); | 
|---|
| 474 | 459 | struct skl_module_cfg *skl_tplg_fe_get_cpr_module( | 
|---|
| 475 | 460 | struct snd_soc_dai *dai, int stream); | 
|---|
| 476 | 461 | int skl_tplg_update_pipe_params(struct device *dev, | 
|---|
| 477 | 462 | struct skl_module_cfg *mconfig, struct skl_pipe_params *params); | 
|---|
| 478 | 463 |  | 
|---|
| 479 |  | -void skl_tplg_d0i3_get(struct skl *skl, enum d0i3_capability caps); | 
|---|
| 480 |  | -void skl_tplg_d0i3_put(struct skl *skl, enum d0i3_capability caps); | 
|---|
|  | 464 | +void skl_tplg_d0i3_get(struct skl_dev *skl, enum d0i3_capability caps); | 
|---|
|  | 465 | +void skl_tplg_d0i3_put(struct skl_dev *skl, enum d0i3_capability caps); | 
|---|
| 481 | 466 |  | 
|---|
| 482 |  | -int skl_create_pipeline(struct skl_sst *ctx, struct skl_pipe *pipe); | 
|---|
|  | 467 | +int skl_create_pipeline(struct skl_dev *skl, struct skl_pipe *pipe); | 
|---|
| 483 | 468 |  | 
|---|
| 484 |  | -int skl_run_pipe(struct skl_sst *ctx, struct skl_pipe *pipe); | 
|---|
|  | 469 | +int skl_run_pipe(struct skl_dev *skl, struct skl_pipe *pipe); | 
|---|
| 485 | 470 |  | 
|---|
| 486 |  | -int skl_pause_pipe(struct skl_sst *ctx, struct skl_pipe *pipe); | 
|---|
|  | 471 | +int skl_pause_pipe(struct skl_dev *skl, struct skl_pipe *pipe); | 
|---|
| 487 | 472 |  | 
|---|
| 488 |  | -int skl_delete_pipe(struct skl_sst *ctx, struct skl_pipe *pipe); | 
|---|
|  | 473 | +int skl_delete_pipe(struct skl_dev *skl, struct skl_pipe *pipe); | 
|---|
| 489 | 474 |  | 
|---|
| 490 |  | -int skl_stop_pipe(struct skl_sst *ctx, struct skl_pipe *pipe); | 
|---|
|  | 475 | +int skl_stop_pipe(struct skl_dev *skl, struct skl_pipe *pipe); | 
|---|
| 491 | 476 |  | 
|---|
| 492 |  | -int skl_reset_pipe(struct skl_sst *ctx, struct skl_pipe *pipe); | 
|---|
|  | 477 | +int skl_reset_pipe(struct skl_dev *skl, struct skl_pipe *pipe); | 
|---|
| 493 | 478 |  | 
|---|
| 494 |  | -int skl_init_module(struct skl_sst *ctx, struct skl_module_cfg *module_config); | 
|---|
|  | 479 | +int skl_init_module(struct skl_dev *skl, struct skl_module_cfg *mconfig); | 
|---|
| 495 | 480 |  | 
|---|
| 496 |  | -int skl_bind_modules(struct skl_sst *ctx, struct skl_module_cfg | 
|---|
| 497 |  | -	*src_module, struct skl_module_cfg *dst_module); | 
|---|
|  | 481 | +int skl_bind_modules(struct skl_dev *skl, struct skl_module_cfg | 
|---|
|  | 482 | +	*src_mcfg, struct skl_module_cfg *dst_mcfg); | 
|---|
| 498 | 483 |  | 
|---|
| 499 |  | -int skl_unbind_modules(struct skl_sst *ctx, struct skl_module_cfg | 
|---|
| 500 |  | -	*src_module, struct skl_module_cfg *dst_module); | 
|---|
|  | 484 | +int skl_unbind_modules(struct skl_dev *skl, struct skl_module_cfg | 
|---|
|  | 485 | +	*src_mcfg, struct skl_module_cfg *dst_mcfg); | 
|---|
| 501 | 486 |  | 
|---|
| 502 |  | -int skl_set_module_params(struct skl_sst *ctx, u32 *params, int size, | 
|---|
|  | 487 | +int skl_set_module_params(struct skl_dev *skl, u32 *params, int size, | 
|---|
| 503 | 488 | u32 param_id, struct skl_module_cfg *mcfg); | 
|---|
| 504 |  | -int skl_get_module_params(struct skl_sst *ctx, u32 *params, int size, | 
|---|
|  | 489 | +int skl_get_module_params(struct skl_dev *skl, u32 *params, int size, | 
|---|
| 505 | 490 | u32 param_id, struct skl_module_cfg *mcfg); | 
|---|
| 506 | 491 |  | 
|---|
| 507 | 492 | struct skl_module_cfg *skl_tplg_be_get_cpr_module(struct snd_soc_dai *dai, | 
|---|
| .. | .. | 
|---|
| 515 | 500 | int skl_dai_load(struct snd_soc_component *cmp, int index, | 
|---|
| 516 | 501 | struct snd_soc_dai_driver *dai_drv, | 
|---|
| 517 | 502 | struct snd_soc_tplg_pcm *pcm, struct snd_soc_dai *dai); | 
|---|
| 518 |  | -void skl_tplg_add_moduleid_in_bind_params(struct skl *skl, | 
|---|
|  | 503 | +void skl_tplg_add_moduleid_in_bind_params(struct skl_dev *skl, | 
|---|
| 519 | 504 | struct snd_soc_dapm_widget *w); | 
|---|
| 520 | 505 | #endif | 
|---|