diff options
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_mixer.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c index 8a43ee17039e..e312fb1dafdd 100644 --- a/drivers/gpu/drm/exynos/exynos_mixer.c +++ b/drivers/gpu/drm/exynos/exynos_mixer.c | |||
@@ -73,6 +73,11 @@ struct mixer_resources { | |||
73 | struct clk *sclk_dac; | 73 | struct clk *sclk_dac; |
74 | }; | 74 | }; |
75 | 75 | ||
76 | enum mixer_version_id { | ||
77 | MXR_VER_0_0_0_16, | ||
78 | MXR_VER_16_0_33_0, | ||
79 | }; | ||
80 | |||
76 | struct mixer_context { | 81 | struct mixer_context { |
77 | struct device *dev; | 82 | struct device *dev; |
78 | int pipe; | 83 | int pipe; |
@@ -83,6 +88,11 @@ struct mixer_context { | |||
83 | struct mutex mixer_mutex; | 88 | struct mutex mixer_mutex; |
84 | struct mixer_resources mixer_res; | 89 | struct mixer_resources mixer_res; |
85 | struct hdmi_win_data win_data[MIXER_WIN_NR]; | 90 | struct hdmi_win_data win_data[MIXER_WIN_NR]; |
91 | enum mixer_version_id mxr_ver; | ||
92 | }; | ||
93 | |||
94 | struct mixer_drv_data { | ||
95 | enum mixer_version_id version; | ||
86 | }; | 96 | }; |
87 | 97 | ||
88 | static const u8 filter_y_horiz_tap8[] = { | 98 | static const u8 filter_y_horiz_tap8[] = { |
@@ -1023,11 +1033,25 @@ fail: | |||
1023 | return ret; | 1033 | return ret; |
1024 | } | 1034 | } |
1025 | 1035 | ||
1036 | static struct mixer_drv_data exynos4_mxr_drv_data = { | ||
1037 | .version = MXR_VER_0_0_0_16, | ||
1038 | }; | ||
1039 | |||
1040 | static struct platform_device_id mixer_driver_types[] = { | ||
1041 | { | ||
1042 | .name = "s5p-mixer", | ||
1043 | .driver_data = (unsigned long)&exynos4_mxr_drv_data, | ||
1044 | }, { | ||
1045 | /* end node */ | ||
1046 | } | ||
1047 | }; | ||
1048 | |||
1026 | static int __devinit mixer_probe(struct platform_device *pdev) | 1049 | static int __devinit mixer_probe(struct platform_device *pdev) |
1027 | { | 1050 | { |
1028 | struct device *dev = &pdev->dev; | 1051 | struct device *dev = &pdev->dev; |
1029 | struct exynos_drm_hdmi_context *drm_hdmi_ctx; | 1052 | struct exynos_drm_hdmi_context *drm_hdmi_ctx; |
1030 | struct mixer_context *ctx; | 1053 | struct mixer_context *ctx; |
1054 | struct mixer_drv_data *drv; | ||
1031 | int ret; | 1055 | int ret; |
1032 | 1056 | ||
1033 | dev_info(dev, "probe start\n"); | 1057 | dev_info(dev, "probe start\n"); |
@@ -1047,8 +1071,11 @@ static int __devinit mixer_probe(struct platform_device *pdev) | |||
1047 | 1071 | ||
1048 | mutex_init(&ctx->mixer_mutex); | 1072 | mutex_init(&ctx->mixer_mutex); |
1049 | 1073 | ||
1074 | drv = (struct mixer_drv_data *)platform_get_device_id( | ||
1075 | pdev)->driver_data; | ||
1050 | ctx->dev = &pdev->dev; | 1076 | ctx->dev = &pdev->dev; |
1051 | drm_hdmi_ctx->ctx = (void *)ctx; | 1077 | drm_hdmi_ctx->ctx = (void *)ctx; |
1078 | ctx->mxr_ver = drv->version; | ||
1052 | 1079 | ||
1053 | platform_set_drvdata(pdev, drm_hdmi_ctx); | 1080 | platform_set_drvdata(pdev, drm_hdmi_ctx); |
1054 | 1081 | ||
@@ -1101,4 +1128,5 @@ struct platform_driver mixer_driver = { | |||
1101 | }, | 1128 | }, |
1102 | .probe = mixer_probe, | 1129 | .probe = mixer_probe, |
1103 | .remove = __devexit_p(mixer_remove), | 1130 | .remove = __devexit_p(mixer_remove), |
1131 | .id_table = mixer_driver_types, | ||
1104 | }; | 1132 | }; |