]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - sound/soc/intel/skylake/skl-tplg-interface.h
Merge remote-tracking branch 'sound/for-next'
[karo-tx-linux.git] / sound / soc / intel / skylake / skl-tplg-interface.h
index a50689825bcace5836d41f931155cf0fdacdc454..2bc396d54cbed52fa257c1c499749eaed8ebc111 100644 (file)
 #ifndef __HDA_TPLG_INTERFACE_H__
 #define __HDA_TPLG_INTERFACE_H__
 
+/*
+ * Default types range from 0~12. type can range from 0 to 0xff
+ * SST types start at higher to avoid any overlapping in future
+ */
+#define SOC_CONTROL_TYPE_HDA_SST_ALGO_PARAMS   0x100
+#define SOC_CONTROL_TYPE_HDA_SST_MUX           0x101
+#define SOC_CONTROL_TYPE_HDA_SST_MIX           0x101
+#define SOC_CONTROL_TYPE_HDA_SST_BYTE          0x103
+
+#define HDA_SST_CFG_MAX        900 /* size of copier cfg*/
+#define MAX_IN_QUEUE 8
+#define MAX_OUT_QUEUE 8
+
+/* Event types goes here */
+/* Reserve event type 0 for no event handlers */
+enum skl_event_types {
+       SKL_EVENT_NONE = 0,
+       SKL_MIXER_EVENT,
+       SKL_MUX_EVENT,
+       SKL_VMIXER_EVENT,
+       SKL_PGA_EVENT
+};
+
 /**
  * enum skl_ch_cfg - channel configuration
  *
@@ -83,6 +106,66 @@ enum skl_dev_type {
        SKL_DEVICE_I2S = 0x2,
        SKL_DEVICE_SLIMBUS = 0x3,
        SKL_DEVICE_HDALINK = 0x4,
+       SKL_DEVICE_HDAHOST = 0x5,
        SKL_DEVICE_NONE
 };
+
+struct skl_dfw_module_pin {
+       u16 module_id;
+       u16 instance_id;
+} __packed;
+
+struct skl_dfw_module_fmt {
+       u32 channels;
+       u32 freq;
+       u32 bit_depth;
+       u32 valid_bit_depth;
+       u32 ch_cfg;
+} __packed;
+
+struct skl_dfw_module_caps {
+       u32 caps_size;
+       u32 caps[HDA_SST_CFG_MAX];
+};
+
+struct skl_dfw_pipe {
+       u8 pipe_id;
+       u8 pipe_priority;
+       u16 conn_type;
+       u32 memory_pages;
+} __packed;
+
+struct skl_dfw_module {
+       u16 module_id;
+       u16 instance_id;
+       u32 max_mcps;
+       u8 core_id;
+       u8 max_in_queue;
+       u8 max_out_queue;
+       u8 is_loadable;
+       u8 conn_type;
+       u8 dev_type;
+       u8 hw_conn_type;
+       u8 time_slot;
+       u32 obs;
+       u32 ibs;
+       u32 params_fixup;
+       u32 converter;
+       u32 module_type;
+       u32 vbus_id;
+       u8 is_dynamic_in_pin;
+       u8 is_dynamic_out_pin;
+       struct skl_dfw_pipe pipe;
+       struct skl_dfw_module_fmt in_fmt;
+       struct skl_dfw_module_fmt out_fmt;
+       struct skl_dfw_module_pin in_pin[MAX_IN_QUEUE];
+       struct skl_dfw_module_pin out_pin[MAX_OUT_QUEUE];
+       struct skl_dfw_module_caps caps;
+} __packed;
+
+struct skl_dfw_algo_data {
+       u32 max;
+       char *params;
+} __packed;
+
 #endif