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 */ 14int dmic_init_params(struct intel_nhlt_params *nhlt); 15 16/* set parameters when parsing topology2 conf */ 17int 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); 20int 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); 22int dmic_set_ext_params(struct intel_nhlt_params *nhlt, uint32_t snr, uint32_t sensitivity); 23int 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*/ 32int dmic_calculate(struct intel_nhlt_params *nhlt); 33 34/* get spec parameters when building the nhlt endpoint */ 35int 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); 38int 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 */ 47int dmic_get_vendor_blob_count(struct intel_nhlt_params *nhlt); 48int dmic_get_vendor_blob_size(struct intel_nhlt_params *nhlt, size_t *size); 49int dmic_get_vendor_blob(struct intel_nhlt_params *nhlt, uint8_t *vendor_blob); 50 51#endif 52