Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] s5p-mfc: Added support for clk_prepare

Signed-off-by: Kamil Debski <k.debski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Kamil Debski and committed by
Mauro Carvalho Chehab
eb732518 11a37c70

+22 -2
+22 -2
drivers/media/video/s5p-mfc/s5p_mfc_pm.c
··· 41 41 pm->clock_gate = clk_get(&dev->plat_dev->dev, MFC_GATE_CLK_NAME); 42 42 if (IS_ERR(pm->clock_gate)) { 43 43 mfc_err("Failed to get clock-gating control\n"); 44 - ret = -ENOENT; 44 + ret = PTR_ERR(pm->clock_gate); 45 45 goto err_g_ip_clk; 46 46 } 47 + 48 + ret = clk_prepare(pm->clock_gate); 49 + if (ret) { 50 + mfc_err("Failed to preapre clock-gating control\n"); 51 + goto err_p_ip_clk; 52 + } 53 + 47 54 pm->clock = clk_get(&dev->plat_dev->dev, MFC_CLKNAME); 48 55 if (IS_ERR(pm->clock)) { 49 56 mfc_err("Failed to get MFC clock\n"); 50 - ret = -ENOENT; 57 + ret = PTR_ERR(pm->clock); 51 58 goto err_g_ip_clk_2; 52 59 } 60 + 61 + ret = clk_prepare(pm->clock); 62 + if (ret) { 63 + mfc_err("Failed to prepare MFC clock\n"); 64 + goto err_p_ip_clk_2; 65 + } 66 + 53 67 atomic_set(&pm->power, 0); 54 68 #ifdef CONFIG_PM_RUNTIME 55 69 pm->device = &dev->plat_dev->dev; ··· 73 59 atomic_set(&clk_ref, 0); 74 60 #endif 75 61 return 0; 62 + err_p_ip_clk_2: 63 + clk_put(pm->clock); 76 64 err_g_ip_clk_2: 65 + clk_unprepare(pm->clock_gate); 66 + err_p_ip_clk: 77 67 clk_put(pm->clock_gate); 78 68 err_g_ip_clk: 79 69 return ret; ··· 85 67 86 68 void s5p_mfc_final_pm(struct s5p_mfc_dev *dev) 87 69 { 70 + clk_unprepare(pm->clock_gate); 88 71 clk_put(pm->clock_gate); 72 + clk_unprepare(pm->clock); 89 73 clk_put(pm->clock); 90 74 #ifdef CONFIG_PM_RUNTIME 91 75 pm_runtime_disable(pm->device);