Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 249425
b: refs/heads/master
c: 2784a80
h: refs/heads/master
i:
  249423: f968eb5
v: v3
  • Loading branch information
Vinod Koul authored and Greg Kroah-Hartman committed May 10, 2011
1 parent 72d0b34 commit 90cbce9
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5572a44829f241e642e6c4ac120bf5e4d6295d8f
refs/heads/master: 2784a80c97c73cfa1ca80543d7e4dd096637e1af
37 changes: 37 additions & 0 deletions trunk/drivers/staging/intel_sst/intel_sst_app_interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -961,6 +961,34 @@ long intel_sst_ioctl_dsp(unsigned int cmd, unsigned long arg)
return retval;
}


int sst_ioctl_tuning_params(unsigned long arg)
{
struct snd_sst_tuning_params params;
struct ipc_post *msg;

if (copy_from_user(&params, (void __user *)arg, sizeof(params)))
return -EFAULT;
if (params.size > SST_MAILBOX_SIZE)
return -ENOMEM;
pr_debug("Parameter %d, Stream %d, Size %d\n", params.type,
params.str_id, params.size);
if (sst_create_large_msg(&msg))
return -ENOMEM;

sst_fill_header(&msg->header, IPC_IA_TUNING_PARAMS, 1, params.str_id);
msg->header.part.data = sizeof(u32) + sizeof(params) + params.size;
memcpy(msg->mailbox_data, &msg->header.full, sizeof(u32));
memcpy(msg->mailbox_data + sizeof(u32), &params, sizeof(params));
if (copy_from_user(msg->mailbox_data + sizeof(params),
(void __user *)(unsigned long)params.addr,
params.size)) {
kfree(msg->mailbox_data);
kfree(msg);
return -EFAULT;
}
return sst_send_algo_ipc(&msg);
}
/**
* intel_sst_ioctl - receives the device ioctl's
* @file_ptr:pointer to file
Expand Down Expand Up @@ -1412,6 +1440,15 @@ long intel_sst_ioctl(struct file *file_ptr, unsigned int cmd, unsigned long arg)
}
retval = intel_sst_ioctl_dsp(cmd, arg);
break;

case _IOC_NR(SNDRV_SST_TUNING_PARAMS):
if (minor != AM_MODULE) {
retval = -EBADRQC;
break;
}
retval = sst_ioctl_tuning_params(arg);
break;

default:
retval = -EINVAL;
}
Expand Down
4 changes: 2 additions & 2 deletions trunk/drivers/staging/intel_sst/intel_sst_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
* Common private declarations for SST
*/

#define SST_DRIVER_VERSION "1.2.14"
#define SST_VERSION_NUM 0x1214
#define SST_DRIVER_VERSION "1.2.15"
#define SST_VERSION_NUM 0x1215

/* driver names */
#define SST_DRV_NAME "intel_sst_driver"
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/staging/intel_sst/intel_sst_fw_ipc.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@
#define IPC_IA_DECODE_FRAMES 0x18

#define IPC_IA_ALG_PARAMS 0x1A
#define IPC_IA_TUNING_PARAMS 0x1B

/* I2L Stream config/control msgs */
#define IPC_IA_ALLOC_STREAM 0x20 /* Allocate a stream ID */
Expand Down
8 changes: 8 additions & 0 deletions trunk/drivers/staging/intel_sst/intel_sst_ioctl.h
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,13 @@ struct snd_sst_dbufs {
struct snd_sst_buffs *obufs;
};

struct snd_sst_tuning_params {
__u8 type;
__u8 str_id;
__u8 size;
__u8 rsvd;
__aligned_u64 addr;
} __attribute__ ((packed));
/*IOCTL defined here */
/*SST MMF IOCTLS only */
#define SNDRV_SST_STREAM_SET_PARAMS _IOR('L', 0x00, \
Expand Down Expand Up @@ -428,5 +435,6 @@ struct snd_sst_dbufs {
/*DSP Ioctls on /dev/intel_sst_ctrl only*/
#define SNDRV_SST_SET_ALGO _IOW('L', 0x30, struct snd_ppp_params *)
#define SNDRV_SST_GET_ALGO _IOWR('L', 0x31, struct snd_ppp_params *)
#define SNDRV_SST_TUNING_PARAMS _IOW('L', 0x32, struct snd_sst_tuning_params *)

#endif /* __INTEL_SST_IOCTL_H__ */
18 changes: 18 additions & 0 deletions trunk/drivers/staging/intel_sst/intel_sst_ipc.c
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,24 @@ void sst_process_reply(struct work_struct *work)
}
break;
}

case IPC_IA_TUNING_PARAMS: {
pr_debug("sst:IPC_TUNING_PARAMS resp: %x\n", msg->header.full);
pr_debug("data value %x\n", msg->header.part.data);
if (msg->header.part.large) {
pr_debug("alg set failed\n");
sst_drv_ctx->ppp_params_blk.ret_code =
-msg->header.part.data;
} else {
pr_debug("alg set success\n");
sst_drv_ctx->ppp_params_blk.ret_code = 0;
}
if (sst_drv_ctx->ppp_params_blk.on == true) {
sst_drv_ctx->ppp_params_blk.condition = true;
wake_up(&sst_drv_ctx->wait_queue);
}
}

case IPC_IA_GET_FW_INFO: {
struct snd_sst_fw_info *fw_info =
(struct snd_sst_fw_info *)msg->mailbox;
Expand Down

0 comments on commit 90cbce9

Please sign in to comment.