• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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