i2c: exynos5: Remove incorrect clk_disable_unprepare
clk_disable_unprepare in remove causes an imbalance and hence gives
the below crash on module remove. While at it also remove some
duplicate code from probe.
/ $ rmmod i2c-exynos5
[ 6.996374] ------------[ cut here ]------------
[ 6.999523] WARNING: CPU: 2 PID: 1137 at drivers/clk/clk.c:842 clk_disable+0x18/0x24()
[ 7.007403] Modules linked in: i2c_exynos5(-)
[ 7.011747] CPU: 2 PID: 1137 Comm: rmmod Not tainted 3.12.0-next-
20131105-00083-g16f4799-dirty #21
[ 7.020696] [<
c0014e0c>] (unwind_backtrace+0x0/0xf4) from [<
c0011784>] (show_stack+0x10/0x14)
[ 7.029190] [<
c0011784>] (show_stack+0x10/0x14) from [<
c037acd4>] (dump_stack+0x7c/0xb0)
[ 7.037255] [<
c037acd4>] (dump_stack+0x7c/0xb0) from [<
c001e0ac>] (warn_slowpath_common+0x6c/0x88)
[ 7.046190] [<
c001e0ac>] (warn_slowpath_common+0x6c/0x88) from [<
c001e164>] (warn_slowpath_null+0x1c/0x24)
[ 7.055818] [<
c001e164>] (warn_slowpath_null+0x1c/0x24) from [<
c02dcde4>] (clk_disable+0x18/0x24)
[ 7.064670] [<
c02dcde4>] (clk_disable+0x18/0x24) from [<
bf0002d4>] (exynos5_i2c_remove+0x1c/0x34 [i2c_exynos5])
[ 7.074736] [<
bf0002d4>] (exynos5_i2c_remove+0x1c/0x34 [i2c_exynos5]) from [<
c02274a8>] (__device_release_driver+0x58/0xb0)
[ 7.085836] [<
c02274a8>] (__device_release_driver+0x58/0xb0) from [<
c0227b88>] (driver_detach+0xac/0xb0)
[ 7.095291] [<
c0227b88>] (driver_detach+0xac/0xb0) from [<
c02271c0>] (bus_remove_driver+0x4c/0xa0)
[ 7.104227] [<
c02271c0>] (bus_remove_driver+0x4c/0xa0) from [<
c00725dc>] (SyS_delete_module+0x124/0x194)
[ 7.113682] [<
c00725dc>] (SyS_delete_module+0x124/0x194) from [<
c000e2e0>] (ret_fast_syscall+0x0/0x30)
[ 7.122957] ---[ end trace
23bb6e4e0bf52196 ]---
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Acked-by: Naveen Krishna Chatradhi <ch.naveen@samsung.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>