diff options
author | Terry Lv <r65388@freescale.com> | 2011-01-27 20:54:32 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-07-20 13:10:39 +0800 |
commit | 2ca09709338826d79de2d079a6e53e69d6db3118 (patch) | |
tree | 4bcb7503f641df35ce8f3e212064a923d0261671 /drivers/char | |
parent | fc95b9b512dcdfab7cf4db3f34573d00121645ae (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.c | 7 |
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; } |