From: Alpha Lin Date: Sun, 4 Jan 2015 08:12:13 +0000 (+0800) Subject: RK3036: fix vpu probe failed problem. X-Git-Tag: firefly_0821_release~4349 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=686ec54a7ede93d905ef6e1e0c905718e6880b24;p=firefly-linux-kernel-4.4.55.git RK3036: fix vpu probe failed problem. no power domain on rk3036, but trying to enable the power domain in previous driver code. remove the power domain enable in this revision on rk3036 platform. Signed-off-by: Alpha Lin --- diff --git a/arch/arm/mach-rockchip/vcodec_service.c b/arch/arm/mach-rockchip/vcodec_service.c index e271f60ffc67..293e08ccc8c2 100644 --- a/arch/arm/mach-rockchip/vcodec_service.c +++ b/arch/arm/mach-rockchip/vcodec_service.c @@ -547,49 +547,48 @@ static void vcodec_exit_mode(struct vpu_service_info *pservice) static int vpu_get_clk(struct vpu_service_info *pservice) { #if VCODEC_CLOCK_ENABLE - do { - switch (pservice->dev_id) { - case VCODEC_DEVICE_ID_HEVC: - pservice->clk_cabac = devm_clk_get(pservice->dev, "clk_cabac"); - if (IS_ERR(pservice->clk_cabac)) { - dev_err(pservice->dev, "failed on clk_get clk_cabac\n"); - break; - } - - pservice->pd_video = devm_clk_get(pservice->dev, "pd_hevc"); - if (IS_ERR(pservice->pd_video)) { - dev_err(pservice->dev, "failed on clk_get pd_hevc\n"); - break; - } - case VCODEC_DEVICE_ID_COMBO: - pservice->clk_core = devm_clk_get(pservice->dev, "clk_core"); - if (IS_ERR(pservice->clk_core)) { - dev_err(pservice->dev, "failed on clk_get clk_core\n"); - break; - } - case VCODEC_DEVICE_ID_VPU: - pservice->aclk_vcodec = devm_clk_get(pservice->dev, "aclk_vcodec"); - if (IS_ERR(pservice->aclk_vcodec)) { - dev_err(pservice->dev, "failed on clk_get aclk_vcodec\n"); - break; - } + switch (pservice->dev_id) { + case VCODEC_DEVICE_ID_HEVC: + pservice->clk_cabac = devm_clk_get(pservice->dev, "clk_cabac"); + if (IS_ERR(pservice->clk_cabac)) { + dev_err(pservice->dev, "failed on clk_get clk_cabac\n"); + return -1; + } - pservice->hclk_vcodec = devm_clk_get(pservice->dev, "hclk_vcodec"); - if (IS_ERR(pservice->hclk_vcodec)) { - dev_err(pservice->dev, "failed on clk_get hclk_vcodec\n"); - break; - } - if (pservice->pd_video == NULL) - pservice->pd_video = devm_clk_get(pservice->dev, "pd_video"); - break; - default: - ; + pservice->pd_video = devm_clk_get(pservice->dev, "pd_hevc"); + if (IS_ERR(pservice->pd_video)) { + dev_err(pservice->dev, "failed on clk_get pd_hevc\n"); + return -1; + } + case VCODEC_DEVICE_ID_COMBO: + pservice->clk_core = devm_clk_get(pservice->dev, "clk_core"); + if (IS_ERR(pservice->clk_core)) { + dev_err(pservice->dev, "failed on clk_get clk_core\n"); + return -1; + } + case VCODEC_DEVICE_ID_VPU: + pservice->aclk_vcodec = devm_clk_get(pservice->dev, "aclk_vcodec"); + if (IS_ERR(pservice->aclk_vcodec)) { + dev_err(pservice->dev, "failed on clk_get aclk_vcodec\n"); + return -1; } - return 0; - } while (0); + pservice->hclk_vcodec = devm_clk_get(pservice->dev, "hclk_vcodec"); + if (IS_ERR(pservice->hclk_vcodec)) { + dev_err(pservice->dev, "failed on clk_get hclk_vcodec\n"); + return -1; + } + if (pservice->pd_video == NULL) { + pservice->pd_video = devm_clk_get(pservice->dev, "pd_video"); + if (IS_ERR(pservice->pd_video)) + pservice->pd_video = NULL; + } + break; + default: + ; + } - return -1; + return 0; #else return 0; #endif