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_INTEL_H 11 #define __SSP_INTEL_H 12 13 #include <stdint.h> 14 15 /* struct for intel ssp nhlt vendor specific blob generation */ 16 struct ssp_intel_config_data { 17 uint32_t gateway_attributes; 18 uint32_t ts_group[8]; 19 uint32_t ssc0; 20 uint32_t ssc1; 21 uint32_t sscto; 22 uint32_t sspsp; 23 uint32_t sstsa; 24 uint32_t ssrsa; 25 uint32_t ssc2; 26 uint32_t sspsp2; 27 uint32_t ssc3; 28 uint32_t ssioc; 29 uint32_t mdivc; 30 uint32_t mdivr; 31 } __attribute__((packed)); 32 33 #define SSP_BLOB_VER_1_5 0xEE000105 34 35 struct ssp_intel_config_data_1_5 { 36 uint32_t gateway_attributes; 37 uint32_t version; 38 uint32_t size; 39 uint32_t ts_group[8]; 40 uint32_t ssc0; 41 uint32_t ssc1; 42 uint32_t sscto; 43 uint32_t sspsp; 44 uint32_t sstsa; 45 uint32_t ssrsa; 46 uint32_t ssc2; 47 uint32_t sspsp2; 48 uint32_t ssc3; 49 uint32_t ssioc; 50 uint32_t mdivctlr; 51 uint32_t mdivrcnt; 52 uint32_t mdivr[]; 53 } __attribute__((packed)); 54 55 struct ssp_intel_aux_tlv { 56 uint32_t type; 57 uint32_t size; 58 uint32_t val[]; 59 } __attribute__((packed)); 60 61 struct ssp_intel_mn_ctl { 62 uint32_t div_m; 63 uint32_t div_n; 64 } __attribute__((packed)); 65 66 struct ssp_intel_clk_ctl { 67 uint32_t start; 68 uint32_t stop; 69 } __attribute__((packed)); 70 71 struct ssp_intel_tr_ctl { 72 uint32_t sampling_frequency; 73 uint32_t bit_depth; 74 uint32_t channel_map; 75 uint32_t channel_config; 76 uint32_t interleaving_style; 77 uint32_t format; 78 } __attribute__((packed)); 79 80 struct ssp_intel_run_ctl { 81 uint32_t enabled; 82 } __attribute__((packed)); 83 84 struct ssp_intel_node_ctl { 85 uint32_t node_id; 86 uint32_t sampling_rate; 87 } __attribute__((packed)); 88 89 struct ssp_intel_sync_ctl { 90 uint32_t sync_denominator; 91 uint32_t count; 92 } __attribute__((packed)); 93 94 struct ssp_intel_ext_ctl { 95 uint32_t ext_data; 96 } __attribute__((packed)); 97 98 struct ssp_intel_link_ctl { 99 uint32_t clock_source; 100 } __attribute__((packed)); 101 102 #endif /* __SSP_INTEL_H */ 103