Merge branch 'dmi/master'
[deliverable/linux.git] / sound / soc / intel / skylake / skl-nhlt.h
1 /*
2 * skl-nhlt.h - Intel HDA Platform NHLT header
3 *
4 * Copyright (C) 2015 Intel Corp
5 * Author: Sanjiv Kumar <sanjiv.kumar@intel.com>
6 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; version 2 of the License.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 *
19 */
20 #ifndef __SKL_NHLT_H__
21 #define __SKL_NHLT_H__
22
23 #include <linux/acpi.h>
24
25 struct 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
35 struct 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
46 enum 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
54 enum nhlt_device_type {
55 NHLT_DEVICE_BT = 0,
56 NHLT_DEVICE_DMIC = 1,
57 NHLT_DEVICE_I2S = 4,
58 NHLT_DEVICE_INVALID
59 };
60
61 struct nhlt_specific_cfg {
62 u32 size;
63 u8 caps[0];
64 } __packed;
65
66 struct nhlt_fmt_cfg {
67 struct wav_fmt_ext fmt_ext;
68 struct nhlt_specific_cfg config;
69 } __packed;
70
71 struct nhlt_fmt {
72 u8 fmt_count;
73 struct nhlt_fmt_cfg fmt_config[0];
74 } __packed;
75
76 struct 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
90 struct nhlt_acpi_table {
91 struct acpi_table_header header;
92 u8 endpoint_count;
93 struct nhlt_endpoint desc[0];
94 } __packed;
95
96 struct 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
109 struct nhlt_tdm_config {
110 u8 virtual_slot;
111 u8 config_type;
112 } __packed;
113
114 struct nhlt_dmic_array_config {
115 struct nhlt_tdm_config tdm_config;
116 u8 array_type;
117 } __packed;
118
119 enum {
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
This page took 0.044489 seconds and 5 git commands to generate.