summaryrefslogtreecommitdiff
path: root/drivers/staging/intel_sst/intel_sst.c
diff options
context:
space:
mode:
authorVinod Koul <vinod.koul@intel.com>2010-11-22 10:33:51 (GMT)
committerGreg Kroah-Hartman <gregkh@suse.de>2010-11-29 19:14:05 (GMT)
commit62877913ba55b3f2e5ac34dbc1a2975868ea8d25 (patch)
tree8bb9c3deb363846100b952e79de861399a21bb77 /drivers/staging/intel_sst/intel_sst.c
parent79a35ad57300f78c7250eeeca57b602e06ff402a (diff)
downloadlinux-fsl-qoriq-62877913ba55b3f2e5ac34dbc1a2975868ea8d25.tar.xz
Staging: sst: add ioctls for post processing algorithm interface
This patch adds two new ioctls to intel_sst_ctrl device. This i/f can be used by application to send algorithm parameters Signed-off-by: Vinod Koul <vinod.koul@intel.com> [This will need further discussion in the context of the final ALSA interface but is fine for staging, ie anyone who relies on it should expect changes Also fixed a missing kmalloc fail check] 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.c')
-rw-r--r--drivers/staging/intel_sst/intel_sst.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/staging/intel_sst/intel_sst.c b/drivers/staging/intel_sst/intel_sst.c
index bd92549..ce4a9f7 100644
--- a/drivers/staging/intel_sst/intel_sst.c
+++ b/drivers/staging/intel_sst/intel_sst.c
@@ -306,19 +306,19 @@ static int __devinit intel_sst_probe(struct pci_dev *pci,
goto do_unmap_dram;
pr_debug("Registered IRQ 0x%x\n", pci->irq);
+ /*Register LPE Control as misc driver*/
+ ret = misc_register(&lpe_ctrl);
+ if (ret) {
+ pr_err("couldn't register control device\n");
+ goto do_free_irq;
+ }
+
if (sst_drv_ctx->pci_id == SST_MRST_PCI_ID) {
ret = misc_register(&lpe_dev);
if (ret) {
- pr_err("couldn't register LPE device\n");
- goto do_free_irq;
- }
-
- /*Register LPE Control as misc driver*/
- ret = misc_register(&lpe_ctrl);
- if (ret) {
- pr_err("couldn't register misc driver\n");
- goto do_free_irq;
- }
+ pr_err("couldn't register misc driver\n");
+ goto do_free_misc;
+ }
}
sst_drv_ctx->lpe_stalled = 0;
pm_runtime_set_active(&pci->dev);
@@ -327,6 +327,8 @@ static int __devinit intel_sst_probe(struct pci_dev *pci,
pr_debug("...successfully done!!!\n");
return ret;
+do_free_misc:
+ misc_deregister(&lpe_ctrl);
do_free_irq:
free_irq(pci->irq, sst_drv_ctx);
do_unmap_dram:
@@ -371,10 +373,9 @@ static void __devexit intel_sst_remove(struct pci_dev *pci)
mutex_lock(&sst_drv_ctx->sst_lock);
sst_drv_ctx->sst_state = SST_UN_INIT;
mutex_unlock(&sst_drv_ctx->sst_lock);
- if (sst_drv_ctx->pci_id == SST_MRST_PCI_ID) {
+ misc_deregister(&lpe_ctrl);
+ if (sst_drv_ctx->pci_id == SST_MRST_PCI_ID)
misc_deregister(&lpe_dev);
- misc_deregister(&lpe_ctrl);
- }
free_irq(pci->irq, sst_drv_ctx);
iounmap(sst_drv_ctx->dram);
iounmap(sst_drv_ctx->iram);