summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerry Lv <r65388@freescale.com>2011-01-27 20:54:32 +0800
committerAlan Tull <alan.tull@freescale.com>2011-01-27 10:33:10 -0600
commitb27e4536cffbb0ca8b46a179faa334382c138988 (patch)
tree462bfb13b1060d85c747e15a9d6a056da5b1e863
parent239429f41fca44153445c6ae16830470dfd32bbc (diff)
ENGR00138547: mxc_iim: can't release twice in mxc_iim
When open mxc_iim twice, mxc_iim can't be close twice. Signed-off-by: Terry Lv <r65388@freescale.com>
-rw-r--r--drivers/char/mxc_iim.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/char/mxc_iim.c b/drivers/char/mxc_iim.c
index 6370cc21c90f..bfb16c45380c 100644
--- a/drivers/char/mxc_iim.c
+++ b/drivers/char/mxc_iim.c
@@ -506,9 +506,6 @@ static int mxc_iim_open(struct inode *inode, struct file *filp)
}
clk_enable(iim_data->clk);
- iim_data->virt_base =
- (u32)ioremap(iim_data->reg_base, iim_data->reg_size);
-
mxc_iim_disable_irq();
dev_dbg(iim_data->dev, "<= %s\n", __func__);
@@ -528,7 +525,6 @@ static int mxc_iim_release(struct inode *inode, struct file *filp)
{
clk_disable(iim_data->clk);
clk_put(iim_data->clk);
- iounmap((void *)iim_data->virt_base);
return 0;
}
@@ -597,6 +593,8 @@ static __devinit int mxc_iim_probe(struct platform_device *pdev)
iim_data->reg_end = res->end;
iim_data->reg_size =
iim_data->reg_end - iim_data->reg_base + 1;
+ iim_data->virt_base =
+ (u32)ioremap(iim_data->reg_base, iim_data->reg_size);
mutex_init(&(iim_data->mutex));
spin_lock_init(&(iim_data->lock));
@@ -613,6 +611,7 @@ static __devinit int mxc_iim_probe(struct platform_device *pdev)
static int __devexit mxc_iim_remove(struct platform_device *pdev)
{
free_irq(iim_data->irq, iim_data);
+ iounmap((void *)iim_data->virt_base);
misc_deregister(&mxc_iim_miscdev);
return 0;
}