ASoC: Intel: Skylake: Add deep buffer support
[sfrench/cifs-2.6.git] / sound / soc / intel / skylake / skl-topology.h
index cc64d6bdb4f6c4859621619daa3a9077a96a8dc7..c25e8868b84e670cb765f815d2b69f409c245c22 100644 (file)
 #define MODULE_MAX_IN_PINS     8
 #define MODULE_MAX_OUT_PINS    8
 
+#define SKL_MIC_CH_SUPPORT     4
+#define SKL_MIC_MAX_CH_SUPPORT 8
+#define SKL_DEFAULT_MIC_SEL_GAIN       0x3FF
+#define SKL_MIC_SEL_SWITCH     0x3
+
 enum skl_channel_index {
        SKL_CHANNEL_LEFT = 0,
        SKL_CHANNEL_RIGHT = 1,
@@ -309,11 +314,14 @@ struct skl_module_cfg {
        u8 dev_type;
        u8 dma_id;
        u8 time_slot;
+       u8 dmic_ch_combo_index;
+       u32 dmic_ch_type;
        u32 params_fixup;
        u32 converter;
        u32 vbus_id;
        u32 mem_pages;
        enum d0i3_capability d0i3_caps;
+       u32 dma_buffer_size; /* in milli seconds */
        struct skl_module_pin *m_in_pin;
        struct skl_module_pin *m_out_pin;
        enum skl_module_type m_type;
@@ -342,6 +350,19 @@ struct skl_module_deferred_bind {
        struct list_head node;
 };
 
+struct skl_mic_sel_config {
+       u16 mic_switch;
+       u16 flags;
+       u16 blob[SKL_MIC_MAX_CH_SUPPORT][SKL_MIC_MAX_CH_SUPPORT];
+} __packed;
+
+enum skl_channel {
+       SKL_CH_MONO = 1,
+       SKL_CH_STEREO = 2,
+       SKL_CH_TRIO = 3,
+       SKL_CH_QUATRO = 4,
+};
+
 static inline struct skl *get_skl_ctx(struct device *dev)
 {
        struct hdac_ext_bus *ebus = dev_get_drvdata(dev);