aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSachin Kamat <sachin.kamat@linaro.org>2012-11-23 03:43:26 -0500
committerInki Dae <inki.dae@samsung.com>2012-12-05 00:39:22 -0500
commit37f508614e04cfc4a7a2cc0f286efd5d4bde4d23 (patch)
treea07b3290947738c124b0c1c6c6b9b7f63c28dc25
parentdf3d90e5f3f09e5bc940250e2a90a7e15343a4b6 (diff)
drm/exynos: Use devm_clk_get in exynos_mixer.c
devm_clk_get is device managed and makes error handling and exit code simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
-rw-r--r--drivers/gpu/drm/exynos/exynos_mixer.c59
1 files changed, 16 insertions, 43 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
index 50100cfddf4e..40a6e1906fbb 100644
--- a/drivers/gpu/drm/exynos/exynos_mixer.c
+++ b/drivers/gpu/drm/exynos/exynos_mixer.c
@@ -984,57 +984,45 @@ static int __devinit mixer_resources_init(struct exynos_drm_hdmi_context *ctx,
984 984
985 spin_lock_init(&mixer_res->reg_slock); 985 spin_lock_init(&mixer_res->reg_slock);
986 986
987 mixer_res->mixer = clk_get(dev, "mixer"); 987 mixer_res->mixer = devm_clk_get(dev, "mixer");
988 if (IS_ERR_OR_NULL(mixer_res->mixer)) { 988 if (IS_ERR_OR_NULL(mixer_res->mixer)) {
989 dev_err(dev, "failed to get clock 'mixer'\n"); 989 dev_err(dev, "failed to get clock 'mixer'\n");
990 ret = -ENODEV; 990 return -ENODEV;
991 goto fail;
992 } 991 }
993 992
994 mixer_res->sclk_hdmi = clk_get(dev, "sclk_hdmi"); 993 mixer_res->sclk_hdmi = devm_clk_get(dev, "sclk_hdmi");
995 if (IS_ERR_OR_NULL(mixer_res->sclk_hdmi)) { 994 if (IS_ERR_OR_NULL(mixer_res->sclk_hdmi)) {
996 dev_err(dev, "failed to get clock 'sclk_hdmi'\n"); 995 dev_err(dev, "failed to get clock 'sclk_hdmi'\n");
997 ret = -ENODEV; 996 return -ENODEV;
998 goto fail;
999 } 997 }
1000 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 998 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1001 if (res == NULL) { 999 if (res == NULL) {
1002 dev_err(dev, "get memory resource failed.\n"); 1000 dev_err(dev, "get memory resource failed.\n");
1003 ret = -ENXIO; 1001 return -ENXIO;
1004 goto fail;
1005 } 1002 }
1006 1003
1007 mixer_res->mixer_regs = devm_ioremap(&pdev->dev, res->start, 1004 mixer_res->mixer_regs = devm_ioremap(&pdev->dev, res->start,
1008 resource_size(res)); 1005 resource_size(res));
1009 if (mixer_res->mixer_regs == NULL) { 1006 if (mixer_res->mixer_regs == NULL) {
1010 dev_err(dev, "register mapping failed.\n"); 1007 dev_err(dev, "register mapping failed.\n");
1011 ret = -ENXIO; 1008 return -ENXIO;
1012 goto fail;
1013 } 1009 }
1014 1010
1015 res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); 1011 res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
1016 if (res == NULL) { 1012 if (res == NULL) {
1017 dev_err(dev, "get interrupt resource failed.\n"); 1013 dev_err(dev, "get interrupt resource failed.\n");
1018 ret = -ENXIO; 1014 return -ENXIO;
1019 goto fail;
1020 } 1015 }
1021 1016
1022 ret = devm_request_irq(&pdev->dev, res->start, mixer_irq_handler, 1017 ret = devm_request_irq(&pdev->dev, res->start, mixer_irq_handler,
1023 0, "drm_mixer", ctx); 1018 0, "drm_mixer", ctx);
1024 if (ret) { 1019 if (ret) {
1025 dev_err(dev, "request interrupt failed.\n"); 1020 dev_err(dev, "request interrupt failed.\n");
1026 goto fail; 1021 return ret;
1027 } 1022 }
1028 mixer_res->irq = res->start; 1023 mixer_res->irq = res->start;
1029 1024
1030 return 0; 1025 return 0;
1031
1032fail:
1033 if (!IS_ERR_OR_NULL(mixer_res->sclk_hdmi))
1034 clk_put(mixer_res->sclk_hdmi);
1035 if (!IS_ERR_OR_NULL(mixer_res->mixer))
1036 clk_put(mixer_res->mixer);
1037 return ret;
1038} 1026}
1039 1027
1040static int __devinit vp_resources_init(struct exynos_drm_hdmi_context *ctx, 1028static int __devinit vp_resources_init(struct exynos_drm_hdmi_context *ctx,
@@ -1044,25 +1032,21 @@ static int __devinit vp_resources_init(struct exynos_drm_hdmi_context *ctx,
1044 struct device *dev = &pdev->dev; 1032 struct device *dev = &pdev->dev;
1045 struct mixer_resources *mixer_res = &mixer_ctx->mixer_res; 1033 struct mixer_resources *mixer_res = &mixer_ctx->mixer_res;
1046 struct resource *res; 1034 struct resource *res;
1047 int ret;
1048 1035
1049 mixer_res->vp = clk_get(dev, "vp"); 1036 mixer_res->vp = devm_clk_get(dev, "vp");
1050 if (IS_ERR_OR_NULL(mixer_res->vp)) { 1037 if (IS_ERR_OR_NULL(mixer_res->vp)) {
1051 dev_err(dev, "failed to get clock 'vp'\n"); 1038 dev_err(dev, "failed to get clock 'vp'\n");
1052 ret = -ENODEV; 1039 return -ENODEV;
1053 goto fail;
1054 } 1040 }
1055 mixer_res->sclk_mixer = clk_get(dev, "sclk_mixer"); 1041 mixer_res->sclk_mixer = devm_clk_get(dev, "sclk_mixer");
1056 if (IS_ERR_OR_NULL(mixer_res->sclk_mixer)) { 1042 if (IS_ERR_OR_NULL(mixer_res->sclk_mixer)) {
1057 dev_err(dev, "failed to get clock 'sclk_mixer'\n"); 1043 dev_err(dev, "failed to get clock 'sclk_mixer'\n");
1058 ret = -ENODEV; 1044 return -ENODEV;
1059 goto fail;
1060 } 1045 }
1061 mixer_res->sclk_dac = clk_get(dev, "sclk_dac"); 1046 mixer_res->sclk_dac = devm_clk_get(dev, "sclk_dac");
1062 if (IS_ERR_OR_NULL(mixer_res->sclk_dac)) { 1047 if (IS_ERR_OR_NULL(mixer_res->sclk_dac)) {
1063 dev_err(dev, "failed to get clock 'sclk_dac'\n"); 1048 dev_err(dev, "failed to get clock 'sclk_dac'\n");
1064 ret = -ENODEV; 1049 return -ENODEV;
1065 goto fail;
1066 } 1050 }
1067 1051
1068 if (mixer_res->sclk_hdmi) 1052 if (mixer_res->sclk_hdmi)
@@ -1071,28 +1055,17 @@ static int __devinit vp_resources_init(struct exynos_drm_hdmi_context *ctx,
1071 res = platform_get_resource(pdev, IORESOURCE_MEM, 1); 1055 res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
1072 if (res == NULL) { 1056 if (res == NULL) {
1073 dev_err(dev, "get memory resource failed.\n"); 1057 dev_err(dev, "get memory resource failed.\n");
1074 ret = -ENXIO; 1058 return -ENXIO;
1075 goto fail;
1076 } 1059 }
1077 1060
1078 mixer_res->vp_regs = devm_ioremap(&pdev->dev, res->start, 1061 mixer_res->vp_regs = devm_ioremap(&pdev->dev, res->start,
1079 resource_size(res)); 1062 resource_size(res));
1080 if (mixer_res->vp_regs == NULL) { 1063 if (mixer_res->vp_regs == NULL) {
1081 dev_err(dev, "register mapping failed.\n"); 1064 dev_err(dev, "register mapping failed.\n");
1082 ret = -ENXIO; 1065 return -ENXIO;
1083 goto fail;
1084 } 1066 }
1085 1067
1086 return 0; 1068 return 0;
1087
1088fail:
1089 if (!IS_ERR_OR_NULL(mixer_res->sclk_dac))
1090 clk_put(mixer_res->sclk_dac);
1091 if (!IS_ERR_OR_NULL(mixer_res->sclk_mixer))
1092 clk_put(mixer_res->sclk_mixer);
1093 if (!IS_ERR_OR_NULL(mixer_res->vp))
1094 clk_put(mixer_res->vp);
1095 return ret;
1096} 1069}
1097 1070
1098static struct mixer_drv_data exynos5_mxr_drv_data = { 1071static struct mixer_drv_data exynos5_mxr_drv_data = {