diff options
Diffstat (limited to 'drivers/media/platform/davinci/dm644x_ccdc.c')
-rw-r--r-- | drivers/media/platform/davinci/dm644x_ccdc.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/media/platform/davinci/dm644x_ccdc.c b/drivers/media/platform/davinci/dm644x_ccdc.c index ee7942b1996e..0215ab6ebc90 100644 --- a/drivers/media/platform/davinci/dm644x_ccdc.c +++ b/drivers/media/platform/davinci/dm644x_ccdc.c | |||
@@ -994,7 +994,7 @@ static int __devinit dm644x_ccdc_probe(struct platform_device *pdev) | |||
994 | status = PTR_ERR(ccdc_cfg.mclk); | 994 | status = PTR_ERR(ccdc_cfg.mclk); |
995 | goto fail_nomap; | 995 | goto fail_nomap; |
996 | } | 996 | } |
997 | if (clk_enable(ccdc_cfg.mclk)) { | 997 | if (clk_prepare_enable(ccdc_cfg.mclk)) { |
998 | status = -ENODEV; | 998 | status = -ENODEV; |
999 | goto fail_mclk; | 999 | goto fail_mclk; |
1000 | } | 1000 | } |
@@ -1005,7 +1005,7 @@ static int __devinit dm644x_ccdc_probe(struct platform_device *pdev) | |||
1005 | status = PTR_ERR(ccdc_cfg.sclk); | 1005 | status = PTR_ERR(ccdc_cfg.sclk); |
1006 | goto fail_mclk; | 1006 | goto fail_mclk; |
1007 | } | 1007 | } |
1008 | if (clk_enable(ccdc_cfg.sclk)) { | 1008 | if (clk_prepare_enable(ccdc_cfg.sclk)) { |
1009 | status = -ENODEV; | 1009 | status = -ENODEV; |
1010 | goto fail_sclk; | 1010 | goto fail_sclk; |
1011 | } | 1011 | } |
@@ -1013,8 +1013,10 @@ static int __devinit dm644x_ccdc_probe(struct platform_device *pdev) | |||
1013 | printk(KERN_NOTICE "%s is registered with vpfe.\n", ccdc_hw_dev.name); | 1013 | printk(KERN_NOTICE "%s is registered with vpfe.\n", ccdc_hw_dev.name); |
1014 | return 0; | 1014 | return 0; |
1015 | fail_sclk: | 1015 | fail_sclk: |
1016 | clk_disable_unprepare(ccdc_cfg.sclk); | ||
1016 | clk_put(ccdc_cfg.sclk); | 1017 | clk_put(ccdc_cfg.sclk); |
1017 | fail_mclk: | 1018 | fail_mclk: |
1019 | clk_disable_unprepare(ccdc_cfg.mclk); | ||
1018 | clk_put(ccdc_cfg.mclk); | 1020 | clk_put(ccdc_cfg.mclk); |
1019 | fail_nomap: | 1021 | fail_nomap: |
1020 | iounmap(ccdc_cfg.base_addr); | 1022 | iounmap(ccdc_cfg.base_addr); |
@@ -1029,6 +1031,8 @@ static int dm644x_ccdc_remove(struct platform_device *pdev) | |||
1029 | { | 1031 | { |
1030 | struct resource *res; | 1032 | struct resource *res; |
1031 | 1033 | ||
1034 | clk_disable_unprepare(ccdc_cfg.mclk); | ||
1035 | clk_disable_unprepare(ccdc_cfg.sclk); | ||
1032 | clk_put(ccdc_cfg.mclk); | 1036 | clk_put(ccdc_cfg.mclk); |
1033 | clk_put(ccdc_cfg.sclk); | 1037 | clk_put(ccdc_cfg.sclk); |
1034 | iounmap(ccdc_cfg.base_addr); | 1038 | iounmap(ccdc_cfg.base_addr); |
@@ -1046,8 +1050,8 @@ static int dm644x_ccdc_suspend(struct device *dev) | |||
1046 | /* Disable CCDC */ | 1050 | /* Disable CCDC */ |
1047 | ccdc_enable(0); | 1051 | ccdc_enable(0); |
1048 | /* Disable both master and slave clock */ | 1052 | /* Disable both master and slave clock */ |
1049 | clk_disable(ccdc_cfg.mclk); | 1053 | clk_disable_unprepare(ccdc_cfg.mclk); |
1050 | clk_disable(ccdc_cfg.sclk); | 1054 | clk_disable_unprepare(ccdc_cfg.sclk); |
1051 | 1055 | ||
1052 | return 0; | 1056 | return 0; |
1053 | } | 1057 | } |
@@ -1055,8 +1059,8 @@ static int dm644x_ccdc_suspend(struct device *dev) | |||
1055 | static int dm644x_ccdc_resume(struct device *dev) | 1059 | static int dm644x_ccdc_resume(struct device *dev) |
1056 | { | 1060 | { |
1057 | /* Enable both master and slave clock */ | 1061 | /* Enable both master and slave clock */ |
1058 | clk_enable(ccdc_cfg.mclk); | 1062 | clk_prepare_enable(ccdc_cfg.mclk); |
1059 | clk_enable(ccdc_cfg.sclk); | 1063 | clk_prepare_enable(ccdc_cfg.sclk); |
1060 | /* Restore CCDC context */ | 1064 | /* Restore CCDC context */ |
1061 | ccdc_restore_context(); | 1065 | ccdc_restore_context(); |
1062 | 1066 | ||