ASoC: msm: qdsp6: set correct SET_PARAM payload size

QDSP6 AFE module produces error message whenever afe
loopback gain control command is issued. The reason is that
loopback gain control function sets wrong payload size.
Make change to set appropriate payload size for a given
SET_PARAM command

Change-Id: Ida2bf76baf56c35e89fe29f887f5b43af8bceabe
Signed-off-by: Patrick Lai <plai@codeaurora.org>
This commit is contained in:
Patrick Lai
2012-07-04 20:48:24 -07:00
committed by Stephen Boyd
parent 5b4713798b
commit c24665621d
2 changed files with 18 additions and 11 deletions

View File

@@ -402,11 +402,15 @@ struct afe_param_loopback_cfg {
#define AFE_MODULE_ID_PORT_INFO 0x00010200
/* Module ID for the loopback-related parameters. */
#define AFE_MODULE_LOOPBACK 0x00010205
struct afe_param_payload {
struct afe_param_payload_base {
u32 module_id;
u32 param_id;
u16 param_size;
u16 reserved;
} __packed;
struct afe_param_payload {
struct afe_param_payload_base base;
union {
struct afe_param_sidetone_gain sidetone_gain;
struct afe_param_sampling_rate sampling_rate;

View File

@@ -799,13 +799,14 @@ int afe_loopback_cfg(u16 enable, u16 dst_port, u16 src_port, u16 mode)
lp_cfg.hdr.opcode = AFE_PORT_CMD_SET_PARAM;
lp_cfg.port_id = src_port;
lp_cfg.payload_size = sizeof(struct afe_param_payload);
lp_cfg.payload_size = sizeof(struct afe_param_payload_base) +
sizeof(struct afe_param_loopback_cfg);
lp_cfg.payload_address = 0;
lp_cfg.payload.module_id = AFE_MODULE_LOOPBACK;
lp_cfg.payload.param_id = AFE_PARAM_ID_LOOPBACK_CONFIG;
lp_cfg.payload.param_size = sizeof(struct afe_param_loopback_cfg);
lp_cfg.payload.reserved = 0;
lp_cfg.payload.base.module_id = AFE_MODULE_LOOPBACK;
lp_cfg.payload.base.param_id = AFE_PARAM_ID_LOOPBACK_CONFIG;
lp_cfg.payload.base.param_size = sizeof(struct afe_param_loopback_cfg);
lp_cfg.payload.base.reserved = 0;
lp_cfg.payload.param.loopback_cfg.loopback_cfg_minor_version =
AFE_API_VERSION_LOOPBACK_CONFIG;
@@ -879,13 +880,15 @@ int afe_loopback_gain(u16 port_id, u16 volume)
set_param.hdr.opcode = AFE_PORT_CMD_SET_PARAM;
set_param.port_id = port_id;
set_param.payload_size = sizeof(struct afe_param_payload);
set_param.payload_size = sizeof(struct afe_param_payload_base) +
sizeof(struct afe_param_loopback_gain);
set_param.payload_address = 0;
set_param.payload.module_id = AFE_MODULE_ID_PORT_INFO;
set_param.payload.param_id = AFE_PARAM_ID_LOOPBACK_GAIN;
set_param.payload.param_size = sizeof(struct afe_param_loopback_gain);
set_param.payload.reserved = 0;
set_param.payload.base.module_id = AFE_MODULE_ID_PORT_INFO;
set_param.payload.base.param_id = AFE_PARAM_ID_LOOPBACK_GAIN;
set_param.payload.base.param_size =
sizeof(struct afe_param_loopback_gain);
set_param.payload.base.reserved = 0;
set_param.payload.param.loopback_gain.gain = volume;
set_param.payload.param.loopback_gain.reserved = 0;