*/
        HPI_ADAPTER_PROPERTY_SSX2_SETTING = 4,
 
+/** Enables/disables PCI(e) IRQ.
+A setting of 0 indicates that no interrupts are being generated. A DSP boot
+this property is set to 0. Setting to a non-zero value specifies the number
+of frames of audio that should be processed between interrupts. This property
+should be set to multiple of the mixer interval as read back from the
+HPI_ADAPTER_PROPERTY_INTERVAL property.
+*/
+       HPI_ADAPTER_PROPERTY_IRQ_RATE = 5,
+
 /** Base number for readonly properties */
        HPI_ADAPTER_PROPERTY_READONLYBASE = 256,
 
 mode is MONO SSX2 is disabled, even though this property will
 return true.
 */
-       HPI_ADAPTER_PROPERTY_SUPPORTS_SSX2 = 271
+       HPI_ADAPTER_PROPERTY_SUPPORTS_SSX2 = 271,
+/** Readonly supports PCI(e) IRQ.
+Indicates that the adapter in it's current mode supports interrupts
+across the host bus. Note, this does not imply that interrupts are
+enabled. Instead it indicates that they can be enabled.
+*/
+       HPI_ADAPTER_PROPERTY_SUPPORTS_IRQ = 272
 };
 
 /** Adapter mode commands
        HPI_ERROR_NO_INTERADAPTER_GROUPS = 314,
        /** Streams on different DSPs cannot be grouped. */
        HPI_ERROR_NO_INTERDSP_GROUPS = 315,
+       /** Stream wait cancelled before threshold reached. */
+       HPI_ERROR_WAIT_CANCELLED = 316,
 
        /** Invalid mixer node for this adapter. */
        HPI_ERROR_INVALID_NODE = 400,
 
        HPI_ADAPTER_ENUM_PROPERTY = HPI_FUNC_ID(ADAPTER, 16),
        HPI_ADAPTER_MODULE_INFO = HPI_FUNC_ID(ADAPTER, 17),
        HPI_ADAPTER_DEBUG_READ = HPI_FUNC_ID(ADAPTER, 18),
-#define HPI_ADAPTER_FUNCTION_COUNT 18
+       HPI_ADAPTER_IRQ_QUERY_AND_CLEAR = HPI_FUNC_ID(ADAPTER, 19),
+       HPI_ADAPTER_IRQ_CALLBACK = HPI_FUNC_ID(ADAPTER, 20),
+#define HPI_ADAPTER_FUNCTION_COUNT 20
 
        HPI_OSTREAM_OPEN = HPI_FUNC_ID(OSTREAM, 1),
        HPI_OSTREAM_CLOSE = HPI_FUNC_ID(OSTREAM, 2),
        HPI_OSTREAM_GROUP_RESET = HPI_FUNC_ID(OSTREAM, 22),
        HPI_OSTREAM_HOSTBUFFER_GET_INFO = HPI_FUNC_ID(OSTREAM, 23),
        HPI_OSTREAM_WAIT_START = HPI_FUNC_ID(OSTREAM, 24),
-#define HPI_OSTREAM_FUNCTION_COUNT 24
+       HPI_OSTREAM_WAIT = HPI_FUNC_ID(OSTREAM, 25),
+#define HPI_OSTREAM_FUNCTION_COUNT 25
 
        HPI_ISTREAM_OPEN = HPI_FUNC_ID(ISTREAM, 1),
        HPI_ISTREAM_CLOSE = HPI_FUNC_ID(ISTREAM, 2),
        HPI_ISTREAM_GROUP_RESET = HPI_FUNC_ID(ISTREAM, 17),
        HPI_ISTREAM_HOSTBUFFER_GET_INFO = HPI_FUNC_ID(ISTREAM, 18),
        HPI_ISTREAM_WAIT_START = HPI_FUNC_ID(ISTREAM, 19),
-#define HPI_ISTREAM_FUNCTION_COUNT 19
+       HPI_ISTREAM_WAIT = HPI_FUNC_ID(ISTREAM, 20),
+#define HPI_ISTREAM_FUNCTION_COUNT 20
 
 /* NOTE:
    GET_NODE_INFO, SET_CONNECTION, GET_CONNECTIONS are not currently used */
        HPI_MIXER_GET_CONTROL_ARRAY_BY_INDEX = HPI_FUNC_ID(MIXER, 9),
        HPI_MIXER_GET_CONTROL_MULTIPLE_VALUES = HPI_FUNC_ID(MIXER, 10),
        HPI_MIXER_STORE = HPI_FUNC_ID(MIXER, 11),
-#define HPI_MIXER_FUNCTION_COUNT 11
+       HPI_MIXER_GET_CACHE_INFO = HPI_FUNC_ID(MIXER, 12),
+#define HPI_MIXER_FUNCTION_COUNT 12
 
        HPI_CONTROL_GET_INFO = HPI_FUNC_ID(CONTROL, 1),
        HPI_CONTROL_GET_STATE = HPI_FUNC_ID(CONTROL, 2),
                u32 pad32;
                u16 value;
        } test_assert;
+       struct {
+               u32 yes;
+       } irq_query;
 };
 
 struct hpi_adapter_res {
                u32 length;
                u32 version;
        } query_flash;
+       struct {
+               u32 yes;
+       } irq_query;
 };
 
 struct hpi_stream_msg {
                u32 time_scale;
                struct hpi_buffer buffer;
                struct hpi_streamid stream;
+               u32 threshold_bytes;
        } u;
 };
 
                u32 p_data;     /* pointer to data array */
                u16 more_to_do; /* indicates if there is more to do */
        } gcabi;
+       struct {
+               u32 total_controls;     /* count of controls in the mixer */
+               u32 cache_controls;     /* count of controls in the cac */
+               u32 cache_bytes;        /* size of cache */
+       } cache_info;
 };
 
 struct hpi_control_msg {