serial: imx: Fix serial clock unbalance
Since commit
0c375501 (serial: imx: enable the clocks for console), the
imx_startup() function calls clk_prepare_enable conditionally, so we
need to call clk_disable_unprepare inside imx_shutdown() under the same
condition to avoid unbalanced clock calls.
This avoids the following warning:
------------[ cut here ]------------
WARNING: CPU: 0 PID: 70 at drivers/clk/clk.c:780 __clk_disable+0x68/0x84()
Modules linked in:
CPU: 0 PID: 70 Comm: mountall Not tainted 3.10.0-rc4-next-
20130607+ #435
Backtrace:
[<
800116a4>] (dump_backtrace+0x0/0x10c) from [<
80011844>] (show_stack+0x18/0x1c)
r6:
8069f4e8 r5:
0000030c r4:
00000000 r3:
00000000
[<
8001182c>] (show_stack+0x0/0x1c) from [<
8053bce0>] (dump_stack+0x78/0x94)
[<
8053bc68>] (dump_stack+0x0/0x94) from [<
80023df8>] (warn_slowpath_common+0x6c/0x8c)
r4:
00000000 r3:
00000000
[<
80023d8c>] (warn_slowpath_common+0x0/0x8c) from [<
80023e3c>] (warn_slowpath_null+0x24/0x2c)
r8:
bf2ed008 r7:
bfaa9810 r6:
000f0013 r5:
bf824b80 r4:
bf824b80
[<
80023e18>] (warn_slowpath_null+0x0/0x2c) from [<
8041af84>] (__clk_disable+0x68/0x84)
[<
8041af1c>] (__clk_disable+0x0/0x84) from [<
8041b098>] (clk_disable+0x20/0x2c)
r4:
600f0013 r3:
00000001
[<
8041b078>] (clk_disable+0x0/0x2c) from [<
802c93e8>] (imx_shutdown+0xbc/0xec)
r5:
bf824b80 r4:
bfaa9810
[<
802c932c>] (imx_shutdown+0x0/0xec) from [<
802c63a0>] (uart_port_shutdown+0x34/0x40)
r5:
bf86f860 r4:
bfaa9810
[<
802c636c>] (uart_port_shutdown+0x0/0x40) from [<
802c68c0>] (uart_shutdown+0x98/0xc4)
r4:
bf86f800 r3:
00000000
[<
802c6828>] (uart_shutdown+0x0/0xc4) from [<
802c7514>] (uart_close+0x5c/0x198)
r7:
bfaa9810 r6:
bf274400 r5:
bf86f86c r4:
bf86f800
[<
802c74b8>] (uart_close+0x0/0x198) from [<
802ac648>] (tty_release+0xf8/0x500)
[<
802ac550>] (tty_release+0x0/0x500) from [<
800c5a30>] (__fput+0x9c/0x208)
[<
800c5994>] (__fput+0x0/0x208) from [<
800c5bac>] (____fput+0x10/0x14)
[<
800c5b9c>] (____fput+0x0/0x14) from [<
80040234>] (task_work_run+0xb4/0xec)
[<
80040180>] (task_work_run+0x0/0xec) from [<
80029238>] (do_exit+0x2b0/0x920)
r8:
8000e144 r7:
000000f8 r6:
bf306300 r5:
00000000 r4:
bfac1180
[<
80028f88>] (do_exit+0x0/0x920) from [<
80029a4c>] (do_group_exit+0x50/0xd4)
r7:
000000f8
[<
800299fc>] (do_group_exit+0x0/0xd4) from [<
80029ae8>] (__wake_up_parent+0x0/0x28)
r7:
000000f8 r6:
00000001 r5:
0006f7ae r4:
0006f79a
[<
80029ad0>] (SyS_exit_group+0x0/0x18) from [<
8000dfc0>] (ret_fast_syscall+0x0/0x30)
---[ end trace
16d080eb7efea4e9 ]---
Reported-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Tested-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Huang Shijie <b32955@freescale.com>