summaryrefslogtreecommitdiffstats
path: root/drivers/staging/intel_sst/intel_sst_app_interface.c
diff options
context:
space:
mode:
authorVinod Koul <vinod.koul@intel.com>2010-11-19 15:06:31 +0000
committerGreg Kroah-Hartman <gregkh@suse.de>2010-11-19 17:43:47 -0800
commit6f6ffec188b5416642b20ef14034d40cfeb3256e (patch)
treedbea55359345cc4fcf3245177cec1ad5d4736fc3 /drivers/staging/intel_sst/intel_sst_app_interface.c
parent4856ab33eb5c33bdf17a5a1bd8d720bffe5f6110 (diff)
downloadop-kernel-dev-6f6ffec188b5416642b20ef14034d40cfeb3256e.zip
op-kernel-dev-6f6ffec188b5416642b20ef14034d40cfeb3256e.tar.gz
sst: Change the SST driver PCM interface
The PCM interface in SST driver is cmds only, this patch changes the interface to open, close and cmd interface. This allows SST driver to keep easy track of handles open Signed-off-by: Vinod Koul <vinod.koul@intel.com> Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/intel_sst/intel_sst_app_interface.c')
-rw-r--r--drivers/staging/intel_sst/intel_sst_app_interface.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/drivers/staging/intel_sst/intel_sst_app_interface.c b/drivers/staging/intel_sst/intel_sst_app_interface.c
index 0990955..c1ca39e 100644
--- a/drivers/staging/intel_sst/intel_sst_app_interface.c
+++ b/drivers/staging/intel_sst/intel_sst_app_interface.c
@@ -100,11 +100,15 @@ static int intel_sst_check_device(void)
*/
int intel_sst_open(struct inode *i_node, struct file *file_ptr)
{
- int retval = intel_sst_check_device();
- if (retval)
- return retval;
+ unsigned int retval;
mutex_lock(&sst_drv_ctx->stream_lock);
+ retval = intel_sst_check_device();
+ if (retval) {
+ mutex_unlock(&sst_drv_ctx->stream_lock);
+ return retval;
+ }
+
if (sst_drv_ctx->encoded_cnt < MAX_ENC_STREAM) {
struct ioctl_pvt_data *data =
kzalloc(sizeof(struct ioctl_pvt_data), GFP_KERNEL);
@@ -139,12 +143,16 @@ int intel_sst_open(struct inode *i_node, struct file *file_ptr)
*/
int intel_sst_open_cntrl(struct inode *i_node, struct file *file_ptr)
{
- int retval = intel_sst_check_device();
- if (retval)
- return retval;
+ unsigned int retval;
/* audio manager open */
mutex_lock(&sst_drv_ctx->stream_lock);
+ retval = intel_sst_check_device();
+ if (retval) {
+ mutex_unlock(&sst_drv_ctx->stream_lock);
+ return retval;
+ }
+
if (sst_drv_ctx->am_cnt < MAX_AM_HANDLES) {
sst_drv_ctx->am_cnt++;
pr_debug("AM handle opened...\n");
OpenPOWER on IntegriCloud