summaryrefslogtreecommitdiff
path: root/drivers/char
diff options
context:
space:
mode:
authorTerry Lv <r65388@freescale.com>2011-01-27 20:54:32 +0800
committerJason Liu <r64343@freescale.com>2012-07-20 13:10:39 +0800
commit2ca09709338826d79de2d079a6e53e69d6db3118 (patch)
tree4bcb7503f641df35ce8f3e212064a923d0261671 /drivers/char
parentfc95b9b512dcdfab7cf4db3f34573d00121645ae (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>
Diffstat (limited to 'drivers/char')
-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 fc42afca2dc4..ea5929536ac2 100644
--- a/drivers/char/mxc_iim.c
+++ b/drivers/char/mxc_iim.c
@@ -507,9 +507,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__);
@@ -529,7 +526,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;
}
@@ -598,6 +594,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));
@@ -614,6 +612,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;
}