diff options
author | Sachin Kamat <sachin.kamat@linaro.org> | 2012-11-23 03:43:26 -0500 |
---|---|---|
committer | Inki Dae <inki.dae@samsung.com> | 2012-12-05 00:39:22 -0500 |
commit | 37f508614e04cfc4a7a2cc0f286efd5d4bde4d23 (patch) | |
tree | a07b3290947738c124b0c1c6c6b9b7f63c28dc25 | |
parent | df3d90e5f3f09e5bc940250e2a90a7e15343a4b6 (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.c | 59 |
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 | |||
1032 | fail: | ||
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 | ||
1040 | static int __devinit vp_resources_init(struct exynos_drm_hdmi_context *ctx, | 1028 | static 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 | |||
1088 | fail: | ||
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 | ||
1098 | static struct mixer_drv_data exynos5_mxr_drv_data = { | 1071 | static struct mixer_drv_data exynos5_mxr_drv_data = { |