1 // SPDX-License-Identifier: BSD-3-Clause 2 // 3 // Copyright(c) 2021 Intel Corporation. All rights reserved. 4 // 5 // Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com> 6 // Jaska Uimonen <jaska.uimonen@linux.intel.com> 7 8 #ifndef __DMIC_PROCESS_H 9 #define __DMIC_PROCESS_H 10 11 #include <stdint.h> 12 13 /* initialize and set default values before parsing */ 14 int dmic_init_params(struct intel_nhlt_params *nhlt); 15 16 /* set parameters when parsing topology2 conf */ 17 int dmic_set_params(struct intel_nhlt_params *nhlt, int dai_index, int driver_version, 18 int io_clk, int num_pdm_active, int fifo_word_length, int clk_min, int clk_max, 19 int duty_min, int duty_max, int sample_rate, int unmute_ramp_time); 20 int dmic_set_pdm_params(struct intel_nhlt_params *nhlt, int pdm_index, int enable_a, 21 int enable_b, int polarity_a, int polarity_b, int clk_edge, int skew); 22 int dmic_set_ext_params(struct intel_nhlt_params *nhlt, uint32_t snr, uint32_t sensitivity); 23 int dmic_set_mic_params(struct intel_nhlt_params *nhlt, int index, 24 uint8_t type, uint8_t panel, uint32_t speaker_position_distance, 25 uint32_t horizontal_offset, uint32_t vertical_offset, 26 uint8_t frequency_low_band, uint8_t frequency_high_band, 27 uint16_t direction_angle, uint16_t elevation_angle, 28 uint16_t vertical_angle_begin, uint16_t vertical_angle_end, 29 uint16_t horizontal_angle_begin, uint16_t horizontal_angle_end); 30 31 /* calculate the blob after parsing the values*/ 32 int dmic_calculate(struct intel_nhlt_params *nhlt); 33 34 /* get spec parameters when building the nhlt endpoint */ 35 int dmic_get_params(struct intel_nhlt_params *nhlt, int index, uint32_t *sample_rate, 36 uint16_t *channel_count, uint32_t *bits_per_sample, uint8_t *array_type, 37 uint8_t *num_mics, uint8_t *extension, uint32_t *snr, uint32_t *sensitivity); 38 int dmic_get_mic_params(struct intel_nhlt_params *nhlt, int index, 39 uint8_t *type, uint8_t *panel, uint32_t *speaker_position_distance, 40 uint32_t *horizontal_offset, uint32_t *vertical_offset, 41 uint8_t *frequency_low_band, uint8_t *frequency_high_band, 42 uint16_t *direction_angle, uint16_t *elevation_angle, 43 uint16_t *vertical_angle_begin, uint16_t *vertical_angle_end, 44 uint16_t *horizontal_angle_begin, uint16_t *horizontal_angle_end); 45 46 /* get vendor specific blob when building the nhlt endpoint */ 47 int dmic_get_vendor_blob_count(struct intel_nhlt_params *nhlt); 48 int dmic_get_vendor_blob_size(struct intel_nhlt_params *nhlt, size_t *size); 49 int dmic_get_vendor_blob(struct intel_nhlt_params *nhlt, uint8_t *vendor_blob); 50 51 #endif 52