diff options
author | Terry Lv <r65388@freescale.com> | 2011-01-27 20:54:32 +0800 |
---|---|---|
committer | Alan Tull <alan.tull@freescale.com> | 2011-02-03 16:45:20 -0600 |
commit | b6e36176fb5c07a683ba7fdd135c46f4e507139f (patch) | |
tree | f7f18303daaa74c23058592ec5c24c77689d0636 /drivers | |
parent | 77ab517e1b1a293e767cbced536ec1adb224053b (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')
-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 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; } |