1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#ifndef __SKL_NHLT_H__
21#define __SKL_NHLT_H__
22
23#include <linux/acpi.h>
24
25struct wav_fmt {
26 u16 fmt_tag;
27 u16 channels;
28 u32 samples_per_sec;
29 u32 avg_bytes_per_sec;
30 u16 block_align;
31 u16 bits_per_sample;
32 u16 cb_size;
33} __packed;
34
35struct wav_fmt_ext {
36 struct wav_fmt fmt;
37 union samples {
38 u16 valid_bits_per_sample;
39 u16 samples_per_block;
40 u16 reserved;
41 } sample;
42 u32 channel_mask;
43 u8 sub_fmt[16];
44} __packed;
45
46enum nhlt_link_type {
47 NHLT_LINK_HDA = 0,
48 NHLT_LINK_DSP = 1,
49 NHLT_LINK_DMIC = 2,
50 NHLT_LINK_SSP = 3,
51 NHLT_LINK_INVALID
52};
53
54enum nhlt_device_type {
55 NHLT_DEVICE_BT = 0,
56 NHLT_DEVICE_DMIC = 1,
57 NHLT_DEVICE_I2S = 4,
58 NHLT_DEVICE_INVALID
59};
60
61struct nhlt_specific_cfg {
62 u32 size;
63 u8 caps[0];
64} __packed;
65
66struct nhlt_fmt_cfg {
67 struct wav_fmt_ext fmt_ext;
68 struct nhlt_specific_cfg config;
69} __packed;
70
71struct nhlt_fmt {
72 u8 fmt_count;
73 struct nhlt_fmt_cfg fmt_config[0];
74} __packed;
75
76struct nhlt_endpoint {
77 u32 length;
78 u8 linktype;
79 u8 instance_id;
80 u16 vendor_id;
81 u16 device_id;
82 u16 revision_id;
83 u32 subsystem_id;
84 u8 device_type;
85 u8 direction;
86 u8 virtual_bus_id;
87 struct nhlt_specific_cfg config;
88} __packed;
89
90struct nhlt_acpi_table {
91 struct acpi_table_header header;
92 u8 endpoint_count;
93 struct nhlt_endpoint desc[0];
94} __packed;
95
96struct nhlt_resource_desc {
97 u32 extra;
98 u16 flags;
99 u64 addr_spc_gra;
100 u64 min_addr;
101 u64 max_addr;
102 u64 addr_trans_offset;
103 u64 length;
104} __packed;
105
106#define MIC_ARRAY_2CH 2
107#define MIC_ARRAY_4CH 4
108
109struct nhlt_tdm_config {
110 u8 virtual_slot;
111 u8 config_type;
112} __packed;
113
114struct nhlt_dmic_array_config {
115 struct nhlt_tdm_config tdm_config;
116 u8 array_type;
117} __packed;
118
119enum {
120 NHLT_MIC_ARRAY_2CH_SMALL = 0xa,
121 NHLT_MIC_ARRAY_2CH_BIG = 0xb,
122 NHLT_MIC_ARRAY_4CH_1ST_GEOM = 0xc,
123 NHLT_MIC_ARRAY_4CH_L_SHAPED = 0xd,
124 NHLT_MIC_ARRAY_4CH_2ND_GEOM = 0xe,
125 NHLT_MIC_ARRAY_VENDOR_DEFINED = 0xf,
126};
127
128#endif
129