1feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#ifndef _UAPI_LSM_PARAMS_H__ 2feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#define _UAPI_LSM_PARAMS_H__ 3feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev 4feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#include <linux/types.h> 5feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#include <sound/asound.h> 6feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev 7feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#define SNDRV_LSM_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 0) 8feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev 9feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchevenum lsm_app_id { 10feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev LSM_VOICE_WAKEUP_APP_ID = 1, 11feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev LSM_VOICE_WAKEUP_APP_ID_V2 = 2, 12feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev}; 13feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev 14feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchevenum lsm_detection_mode { 15feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev LSM_MODE_KEYWORD_ONLY_DETECTION = 1, 16feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev LSM_MODE_USER_KEYWORD_DETECTION 17feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev}; 18feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev 19feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchevstruct snd_lsm_sound_model { 20feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u8 __user *data; 21feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u32 data_size; 22feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev enum lsm_detection_mode detection_mode; 23feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u16 min_keyw_confidence; 24feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u16 min_user_confidence; 25feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev bool detect_failure; 26feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev}; 27feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev 28feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchevstruct snd_lsm_sound_model_v2 { 29feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u8 __user *data; 30feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u8 *confidence_level; 31feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u32 data_size; 32feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev enum lsm_detection_mode detection_mode; 33feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u8 num_confidence_levels; 34feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev bool detect_failure; 35feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev}; 36feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev 37feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchevstruct snd_lsm_session_data { 38feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev enum lsm_app_id app_id; 39feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev}; 40feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev 41feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchevstruct snd_lsm_event_status { 42feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u16 status; 43feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u16 payload_size; 44feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev __u8 payload[0]; 45feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev}; 46feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev 47feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#define SNDRV_LSM_REG_SND_MODEL _IOW('U', 0x00, struct snd_lsm_sound_model) 48feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#define SNDRV_LSM_DEREG_SND_MODEL _IOW('U', 0x01, int) 49feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#define SNDRV_LSM_EVENT_STATUS _IOW('U', 0x02, struct snd_lsm_event_status) 50feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#define SNDRV_LSM_ABORT_EVENT _IOW('U', 0x03, int) 51feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#define SNDRV_LSM_START _IOW('U', 0x04, int) 52feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#define SNDRV_LSM_STOP _IOW('U', 0x05, int) 53feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#define SNDRV_LSM_SET_SESSION_DATA _IOW('U', 0x06, struct snd_lsm_session_data) 54feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#define SNDRV_LSM_REG_SND_MODEL_V2 _IOW('U', 0x07,\ 55feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev struct snd_lsm_sound_model_v2) 56feae2e49081dac3166adff95e2d5f00b0e8f85daIliyan Malchev#endif 57