diff options
author | Fabio Estevam <fabio.estevam@freescale.com> | 2012-05-25 16:27:20 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-05-28 10:50:20 -0400 |
commit | 41c73b6e89c69cbe36fae5b24da04d6fb52c3b11 (patch) | |
tree | 5e38559c0908472692784eac66df9a218a2b13ea /sound | |
parent | 766812e6d5e2e23be1e212cf84902d5e834dd865 (diff) |
ASoC: imx-ssi: Use clk_prepare_enable/clk_disable_unprepare
Fix the following kernel crash:
------------[ cut here ]------------
WARNING: at drivers/clk/clk.c:508 __clk_enable+0x9c/0xa8()
Modules linked in:
Backtrace:
[<80011ef4>] (dump_backtrace+0x0/0x10c) from [<803fd48c>] (dump_stack+0x18/0x1c)
r7:00000009 r6:000001fc r5:803002ac r4:00000000
[<803fd474>] (dump_stack+0x0/0x1c) from [<8002003c>] (warn_slowpath_common+0x54/0x6c)
[<8001ffe8>] (warn_slowpath_common+0x0/0x6c) from [<80020078>] (warn_slowpath_null+0x24/0x2c)
r9:00000090 r8:8600e2c0 r7:8605c808 r6:8605c800 r5:8605d780
r4:8600e2c0
[<80020054>] (warn_slowpath_null+0x0/0x2c) from [<803002ac>] (__clk_enable+0x9c/0xa8)
[<80300210>] (__clk_enable+0x0/0xa8) from [<803002d0>] (clk_enable+0x18/0x30)
r5:8605d780 r4:80000013
[<803002b8>] (clk_enable+0x0/0x30) from [<803247c4>] (imx_ssi_probe+0xa0/0x4f4)
r5:8605d780 r4:86174180
[<80324724>] (imx_ssi_probe+0x0/0x4f4) from [<8022b0fc>] (platform_drv_probe+0x20/0x24)
[<8022b0dc>] (platform_drv_probe+0x0/0x24) from [<80229c40>] (driver_probe_device+0x80/0x1f0)
[<80229bc0>] (driver_probe_device+0x0/0x1f0) from [<80229e44>] (__driver_attach+0x94/0x98)
r9:00000090 r8:805b7800 r7:00000000 r6:8605c83c r5:805b1b44
r4:8605c808
[<80229db0>] (__driver_attach+0x0/0x98) from [<8022856c>] (bus_for_each_dev+0x68/0x94)
r7:00000000 r6:80229db0 r5:86033eb0 r4:805b1b44
[<80228504>] (bus_for_each_dev+0x0/0x94) from [<80229aa0>] (driver_attach+0x20/0x28)
r7:00000000 r6:86174100 r5:8059f6d0 r4:805b1b44
[<80229a80>] (driver_attach+0x0/0x28) from [<80228d50>] (bus_add_driver+0x18c/0x268)
[<80228bc4>] (bus_add_driver+0x0/0x268) from [<8022a474>] (driver_register+0x80/0x134)
[<8022a3f4>] (driver_register+0x0/0x134) from [<8022b4a4>] (platform_driver_register+0x4c/0x60)
r7:00000000 r6:805b7800 r5:00000018 r4:86032000
[<8022b458>] (platform_driver_register+0x0/0x60) from [<80556890>] (imx_ssi_driver_init+0x14/0x1c)
[<8055687c>] (imx_ssi_driver_init+0x0/0x1c) from [<8000868c>] (do_one_initcall+0x40/0x194)
[<8000864c>] (do_one_initcall+0x0/0x194) from [<8052f3b0>] (kernel_init+0x114/0x1f0)
[<8052f29c>] (kernel_init+0x0/0x1f0) from [<8002445c>] (do_exit+0x0/0x788)
---[ end trace d4aa739205917dbb ]---
asoc: mc13783-hifi <-> imx-ssi.0 mapping ok
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/fsl/imx-ssi.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sound/soc/fsl/imx-ssi.c b/sound/soc/fsl/imx-ssi.c index cf3ed0362c9c..28dd76c7cb1c 100644 --- a/sound/soc/fsl/imx-ssi.c +++ b/sound/soc/fsl/imx-ssi.c | |||
@@ -543,7 +543,7 @@ static int imx_ssi_probe(struct platform_device *pdev) | |||
543 | ret); | 543 | ret); |
544 | goto failed_clk; | 544 | goto failed_clk; |
545 | } | 545 | } |
546 | clk_enable(ssi->clk); | 546 | clk_prepare_enable(ssi->clk); |
547 | 547 | ||
548 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 548 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
549 | if (!res) { | 549 | if (!res) { |
@@ -641,7 +641,7 @@ failed_ac97: | |||
641 | failed_ioremap: | 641 | failed_ioremap: |
642 | release_mem_region(res->start, resource_size(res)); | 642 | release_mem_region(res->start, resource_size(res)); |
643 | failed_get_resource: | 643 | failed_get_resource: |
644 | clk_disable(ssi->clk); | 644 | clk_disable_unprepare(ssi->clk); |
645 | clk_put(ssi->clk); | 645 | clk_put(ssi->clk); |
646 | failed_clk: | 646 | failed_clk: |
647 | kfree(ssi); | 647 | kfree(ssi); |
@@ -664,7 +664,7 @@ static int __devexit imx_ssi_remove(struct platform_device *pdev) | |||
664 | 664 | ||
665 | iounmap(ssi->base); | 665 | iounmap(ssi->base); |
666 | release_mem_region(res->start, resource_size(res)); | 666 | release_mem_region(res->start, resource_size(res)); |
667 | clk_disable(ssi->clk); | 667 | clk_disable_unprepare(ssi->clk); |
668 | clk_put(ssi->clk); | 668 | clk_put(ssi->clk); |
669 | kfree(ssi); | 669 | kfree(ssi); |
670 | 670 | ||