uapi: lsm_params: Add interface to disable polling

Polling needs to be disabled when LSM connects to ADM.
Add interface to enable or disable polling through
set_params. Add support to set port.

Change-Id: If027418a6d8a1ea48dcb6a0c146f68e7dd7a2664
Signed-off-by: Chaithanya Krishna Bacharaju <chaithan@codeaurora.org>
Signed-off-by: Revathi Uddaraju <revathiu@codeaurora.org>
This commit is contained in:
Chaithanya Krishna Bacharaju 2016-02-29 14:13:02 +05:30 committed by Revathi Uddaraju
parent 958e36a73f
commit dc9fbad38f
7 changed files with 33 additions and 23 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013-2016, Linux Foundation. All rights reserved.
* Copyright (c) 2013-2017, Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@ -162,7 +162,7 @@ struct wcd_cpe_lsm_ops {
int (*lsm_set_one_param)(void *core_handle,
struct cpe_lsm_session *session,
struct lsm_params_info *p_info,
void *data, enum LSM_PARAM_TYPE param_type);
void *data, uint32_t param_type);
void (*lsm_get_snd_model_offset)
(void *core_handle, struct cpe_lsm_session *,
size_t *offset);

View file

@ -274,7 +274,7 @@ int q6lsm_read(struct lsm_client *client, struct lsm_cmd_read *read);
int q6lsm_lab_buffer_alloc(struct lsm_client *client, bool alloc);
int q6lsm_set_one_param(struct lsm_client *client,
struct lsm_params_info *p_info, void *data,
enum LSM_PARAM_TYPE param_type);
uint32_t param_type);
void q6lsm_sm_set_param_data(struct lsm_client *client,
struct lsm_params_info *p_info,
size_t *offset);

View file

@ -1,6 +1,8 @@
#ifndef _UAPI_LSM_PARAMS_H__
#define _UAPI_LSM_PARAMS_H__
#define LSM_POLLING_ENABLE_SUPPORT
#include <linux/types.h>
#include <sound/asound.h>
@ -18,6 +20,16 @@
#define LSM_OUT_TRANSFER_MODE_RT (0)
#define LSM_OUT_TRANSFER_MODE_FTRT (1)
#define LSM_ENDPOINT_DETECT_THRESHOLD (0)
#define LSM_OPERATION_MODE (1)
#define LSM_GAIN (2)
#define LSM_MIN_CONFIDENCE_LEVELS (3)
#define LSM_REG_SND_MODEL (4)
#define LSM_DEREG_SND_MODEL (5)
#define LSM_CUSTOM_PARAMS (6)
#define LSM_POLLING_ENABLE (7)
#define LSM_PARAMS_MAX (LSM_POLLING_ENABLE + 1)
enum lsm_app_id {
LSM_VOICE_WAKEUP_APP_ID = 1,
LSM_VOICE_WAKEUP_APP_ID_V2 = 2,
@ -35,18 +47,6 @@ enum lsm_vw_status {
LSM_VOICE_WAKEUP_STATUS_REJECTED
};
enum LSM_PARAM_TYPE {
LSM_ENDPOINT_DETECT_THRESHOLD = 0,
LSM_OPERATION_MODE,
LSM_GAIN,
LSM_MIN_CONFIDENCE_LEVELS,
LSM_REG_SND_MODEL,
LSM_DEREG_SND_MODEL,
LSM_CUSTOM_PARAMS,
/* driver ioctl will parse only so many params */
LSM_PARAMS_MAX,
};
/*
* Data for LSM_ENDPOINT_DETECT_THRESHOLD param_type
* @epd_begin: Begin threshold
@ -75,6 +75,14 @@ struct snd_lsm_gain {
__u16 gain;
};
/*
* Data for LSM_POLLING_ENABLE param_type
* @poll_en: Polling enable or disable
*/
struct snd_lsm_poll_enable {
bool poll_en;
};
struct snd_lsm_sound_model_v2 {
__u8 __user *data;
@ -100,6 +108,7 @@ struct snd_lsm_detection_params {
enum lsm_detection_mode detect_mode;
__u8 num_confidence_levels;
bool detect_failure;
bool poll_enable;
};
/*
@ -122,7 +131,7 @@ struct lsm_params_info {
__u32 param_id;
__u32 param_size;
__u8 __user *param_data;
enum LSM_PARAM_TYPE param_type;
uint32_t param_type;
};
/*
@ -171,5 +180,6 @@ struct snd_lsm_output_format_cfg {
struct snd_lsm_module_params)
#define SNDRV_LSM_OUT_FORMAT_CFG _IOW('U', 0x0C, \
struct snd_lsm_output_format_cfg)
#define SNDRV_LSM_SET_PORT _IO('U', 0x0D)
#endif

View file

@ -3029,7 +3029,7 @@ err_ret:
static int wcd_cpe_set_one_param(void *core_handle,
struct cpe_lsm_session *session, struct lsm_params_info *p_info,
void *data, enum LSM_PARAM_TYPE param_type)
void *data, uint32_t param_type)
{
struct wcd_cpe_core *core = core_handle;
int rc = 0;
@ -3081,13 +3081,13 @@ static int wcd_cpe_set_one_param(void *core_handle,
break;
default:
pr_err("%s: wrong param_type 0x%x\n",
__func__, p_info->param_type);
__func__, param_type);
}
if (rc)
dev_err(core->dev,
"%s: send_param(%d) failed, err %d\n",
__func__, p_info->param_type, rc);
__func__, param_type, rc);
return rc;
}

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013-2016, Linux Foundation. All rights reserved.
* Copyright (c) 2013-2017, Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@ -2297,7 +2297,7 @@ struct lsm_params_info_32 {
u32 param_id;
u32 param_size;
compat_uptr_t param_data;
enum LSM_PARAM_TYPE param_type;
uint32_t param_type;
};
struct snd_lsm_module_params_32 {

View file

@ -1074,7 +1074,7 @@ struct lsm_params_info_32 {
u32 param_id;
u32 param_size;
compat_uptr_t param_data;
enum LSM_PARAM_TYPE param_type;
uint32_t param_type;
};
struct snd_lsm_module_params_32 {

View file

@ -1390,7 +1390,7 @@ static int q6lsm_send_param_gain(
int q6lsm_set_one_param(struct lsm_client *client,
struct lsm_params_info *p_info, void *data,
enum LSM_PARAM_TYPE param_type)
uint32_t param_type)
{
int rc = 0, pkt_sz;
struct lsm_module_param_ids ids;