1 // SPDX-License-Identifier: BSD-3-Clause 2 // 3 // Copyright(c) 2021 Intel Corporation. All rights reserved. 4 // 5 // Author: Liam Girdwood <liam.r.girdwood@linux.intel.com> 6 // Keyon Jie <yang.jie@linux.intel.com> 7 // Rander Wang <rander.wang@linux.intel.com> 8 // Jaska Uimonen <jaska.uimonen@linux.intel.com> 9 10 #ifndef __SSP_PROCESS_H 11 #define __SSP_PROCESS_H 12 13 #include <stdint.h> 14 15 /* initialize and set default values before parsing */ 16 int ssp_init_params(struct intel_nhlt_params *nhlt); 17 18 /* set parameters when parsing topology2 conf */ 19 int ssp_set_params(struct intel_nhlt_params *nhlt, const char *dir, int dai_index, int io_clk, 20 int bclk_delay, int sample_bits, int mclk_id, int clks_control, 21 int frame_pulse_width, const char *tdm_padding_per_slot, const char *quirks, 22 int version); 23 int ssp_hw_set_params(struct intel_nhlt_params *nhlt, const char *format, const char *mclk, 24 const char *bclk, const char *bclk_invert, const char *fsync, 25 const char *fsync_invert, int mclk_freq, int bclk_freq, int fsync_freq, 26 int tdm_slots, int tdm_slot_width, int tx_slots, int rx_slots); 27 28 /* set aux params when parsing topology2 conf */ 29 int ssp_mn_set_params(struct intel_nhlt_params *nhlt, int m_div, int n_div); 30 int ssp_clk_set_params(struct intel_nhlt_params *nhlt, int clock_warm_up, int mclk, int warm_up_ovr, 31 int clock_stop_delay, int keep_running, int clock_stop_ovr); 32 int ssp_tr_start_set_params(struct intel_nhlt_params *nhlt, int sampling_frequency, 33 int bit_depth, int channel_map, int hannel_config, 34 int interleaving_style, int number_of_channels, 35 int valid_bit_depth, int sample_type); 36 int ssp_tr_stop_set_params(struct intel_nhlt_params *nhlt, int sampling_frequency, 37 int bit_depth, int channel_map, int hannel_config, 38 int interleaving_style, int number_of_channels, 39 int valid_bit_depth, int sample_type); 40 int ssp_run_set_params(struct intel_nhlt_params *nhlt, int always_run); 41 int ssp_sync_set_params(struct intel_nhlt_params *nhlt, int sync_denominator); 42 int ssp_node_set_params(struct intel_nhlt_params *nhlt, int node_id, int sampling_rate); 43 int ssp_ext_set_params(struct intel_nhlt_params *nhlt, int mclk_policy_override, 44 int mclk_always_running, int mclk_starts_on_gtw_init, int mclk_starts_on_run, 45 int mclk_starts_on_pause, int mclk_stops_on_pause, int mclk_stops_on_reset, 46 int bclk_policy_override, int bclk_always_running, 47 int bclk_starts_on_gtw_init, int bclk_starts_on_run, 48 int bclk_starts_on_pause, int bclk_stops_on_pause, int bclk_stops_on_reset, 49 int sync_policy_override, int sync_always_running, 50 int sync_starts_on_gtw_init, int sync_starts_on_run, 51 int sync_starts_on_pause, int sync_stops_on_pause, int sync_stops_on_reset); 52 int ssp_link_set_params(struct intel_nhlt_params *nhlt, int clock_source); 53 54 /* calculate the blob after parsing the values*/ 55 int ssp_calculate(struct intel_nhlt_params *nhlt); 56 /* get spec parameters when building the nhlt endpoint */ 57 int ssp_get_params(struct intel_nhlt_params *nhlt, int dai_index, uint32_t *virtualbus_id, 58 uint32_t *formats_count, uint32_t *device_type, uint32_t *direction); 59 int ssp_get_hw_params(struct intel_nhlt_params *nhlt, int dai_index, int hw_index, 60 uint32_t *sample_rate, uint16_t *channel_count, uint32_t *bits_per_sample); 61 int ssp_get_dir(struct intel_nhlt_params *nhlt, int dai_index, uint8_t *dir); 62 /* get vendor specific blob when building the nhlt endpoint */ 63 int ssp_get_vendor_blob_count(struct intel_nhlt_params *nhlt); 64 int ssp_get_vendor_blob_size(struct intel_nhlt_params *nhlt, int dai_index, int hw_config_index, 65 size_t *size); 66 int ssp_get_vendor_blob(struct intel_nhlt_params *nhlt, uint8_t *vendor_blob, int dai_index, 67 int hw_config_index); 68 69 #endif 70