Commit bd33c1ca authored by Eliot Blennerhassett's avatar Eliot Blennerhassett Committed by Takashi Iwai

ALSA: asihpi - New functions prep for interrupt driven streams.

Signed-off-by: default avatarEliot Blennerhassett <eblennerhassett@audioscience.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 827492ac
...@@ -324,6 +324,15 @@ to enable SSX2 stream mapping within the kernel level of the driver. ...@@ -324,6 +324,15 @@ to enable SSX2 stream mapping within the kernel level of the driver.
*/ */
HPI_ADAPTER_PROPERTY_SSX2_SETTING = 4, 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 */ /** Base number for readonly properties */
HPI_ADAPTER_PROPERTY_READONLYBASE = 256, HPI_ADAPTER_PROPERTY_READONLYBASE = 256,
...@@ -428,7 +437,13 @@ return value is true (1) or false (0). If the current adapter ...@@ -428,7 +437,13 @@ return value is true (1) or false (0). If the current adapter
mode is MONO SSX2 is disabled, even though this property will mode is MONO SSX2 is disabled, even though this property will
return true. 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 /** Adapter mode commands
...@@ -998,6 +1013,8 @@ enum HPI_ERROR_CODES { ...@@ -998,6 +1013,8 @@ enum HPI_ERROR_CODES {
HPI_ERROR_NO_INTERADAPTER_GROUPS = 314, HPI_ERROR_NO_INTERADAPTER_GROUPS = 314,
/** Streams on different DSPs cannot be grouped. */ /** Streams on different DSPs cannot be grouped. */
HPI_ERROR_NO_INTERDSP_GROUPS = 315, HPI_ERROR_NO_INTERDSP_GROUPS = 315,
/** Stream wait cancelled before threshold reached. */
HPI_ERROR_WAIT_CANCELLED = 316,
/** Invalid mixer node for this adapter. */ /** Invalid mixer node for this adapter. */
HPI_ERROR_INVALID_NODE = 400, HPI_ERROR_INVALID_NODE = 400,
......
...@@ -432,7 +432,9 @@ enum HPI_FUNCTION_IDS { ...@@ -432,7 +432,9 @@ enum HPI_FUNCTION_IDS {
HPI_ADAPTER_ENUM_PROPERTY = HPI_FUNC_ID(ADAPTER, 16), HPI_ADAPTER_ENUM_PROPERTY = HPI_FUNC_ID(ADAPTER, 16),
HPI_ADAPTER_MODULE_INFO = HPI_FUNC_ID(ADAPTER, 17), HPI_ADAPTER_MODULE_INFO = HPI_FUNC_ID(ADAPTER, 17),
HPI_ADAPTER_DEBUG_READ = HPI_FUNC_ID(ADAPTER, 18), 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_OPEN = HPI_FUNC_ID(OSTREAM, 1),
HPI_OSTREAM_CLOSE = HPI_FUNC_ID(OSTREAM, 2), HPI_OSTREAM_CLOSE = HPI_FUNC_ID(OSTREAM, 2),
...@@ -458,7 +460,8 @@ enum HPI_FUNCTION_IDS { ...@@ -458,7 +460,8 @@ enum HPI_FUNCTION_IDS {
HPI_OSTREAM_GROUP_RESET = HPI_FUNC_ID(OSTREAM, 22), HPI_OSTREAM_GROUP_RESET = HPI_FUNC_ID(OSTREAM, 22),
HPI_OSTREAM_HOSTBUFFER_GET_INFO = HPI_FUNC_ID(OSTREAM, 23), HPI_OSTREAM_HOSTBUFFER_GET_INFO = HPI_FUNC_ID(OSTREAM, 23),
HPI_OSTREAM_WAIT_START = HPI_FUNC_ID(OSTREAM, 24), 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_OPEN = HPI_FUNC_ID(ISTREAM, 1),
HPI_ISTREAM_CLOSE = HPI_FUNC_ID(ISTREAM, 2), HPI_ISTREAM_CLOSE = HPI_FUNC_ID(ISTREAM, 2),
...@@ -479,7 +482,8 @@ enum HPI_FUNCTION_IDS { ...@@ -479,7 +482,8 @@ enum HPI_FUNCTION_IDS {
HPI_ISTREAM_GROUP_RESET = HPI_FUNC_ID(ISTREAM, 17), HPI_ISTREAM_GROUP_RESET = HPI_FUNC_ID(ISTREAM, 17),
HPI_ISTREAM_HOSTBUFFER_GET_INFO = HPI_FUNC_ID(ISTREAM, 18), HPI_ISTREAM_HOSTBUFFER_GET_INFO = HPI_FUNC_ID(ISTREAM, 18),
HPI_ISTREAM_WAIT_START = HPI_FUNC_ID(ISTREAM, 19), 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: /* NOTE:
GET_NODE_INFO, SET_CONNECTION, GET_CONNECTIONS are not currently used */ GET_NODE_INFO, SET_CONNECTION, GET_CONNECTIONS are not currently used */
...@@ -494,7 +498,8 @@ enum HPI_FUNCTION_IDS { ...@@ -494,7 +498,8 @@ enum HPI_FUNCTION_IDS {
HPI_MIXER_GET_CONTROL_ARRAY_BY_INDEX = HPI_FUNC_ID(MIXER, 9), 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_GET_CONTROL_MULTIPLE_VALUES = HPI_FUNC_ID(MIXER, 10),
HPI_MIXER_STORE = HPI_FUNC_ID(MIXER, 11), 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_INFO = HPI_FUNC_ID(CONTROL, 1),
HPI_CONTROL_GET_STATE = HPI_FUNC_ID(CONTROL, 2), HPI_CONTROL_GET_STATE = HPI_FUNC_ID(CONTROL, 2),
...@@ -693,6 +698,9 @@ union hpi_adapterx_msg { ...@@ -693,6 +698,9 @@ union hpi_adapterx_msg {
u32 pad32; u32 pad32;
u16 value; u16 value;
} test_assert; } test_assert;
struct {
u32 yes;
} irq_query;
}; };
struct hpi_adapter_res { struct hpi_adapter_res {
...@@ -731,6 +739,9 @@ union hpi_adapterx_res { ...@@ -731,6 +739,9 @@ union hpi_adapterx_res {
u32 length; u32 length;
u32 version; u32 version;
} query_flash; } query_flash;
struct {
u32 yes;
} irq_query;
}; };
struct hpi_stream_msg { struct hpi_stream_msg {
...@@ -742,6 +753,7 @@ struct hpi_stream_msg { ...@@ -742,6 +753,7 @@ struct hpi_stream_msg {
u32 time_scale; u32 time_scale;
struct hpi_buffer buffer; struct hpi_buffer buffer;
struct hpi_streamid stream; struct hpi_streamid stream;
u32 threshold_bytes;
} u; } u;
}; };
...@@ -828,6 +840,11 @@ union hpi_mixerx_res { ...@@ -828,6 +840,11 @@ union hpi_mixerx_res {
u32 p_data; /* pointer to data array */ u32 p_data; /* pointer to data array */
u16 more_to_do; /* indicates if there is more to do */ u16 more_to_do; /* indicates if there is more to do */
} gcabi; } 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 { struct hpi_control_msg {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment