aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrzej Hajda <a.hajda@samsung.com>2014-04-02 06:29:46 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-04-22 05:18:12 -0400
commitf9b0e251dfbf2c4da642ec9210db29a7ac63b81a (patch)
tree9344941cc3a0e578dcfe88da49b016e3ff90c44b
parent0967e6a5070e336507ce52f09f7297413b966981 (diff)
drm: make mode_valid callback optional
Many drm connectors do not need mode validation. The patch makes this callback optional and removes dumb implementations. v2: Rebase: - imx move to a shared (but still dummy) ->mode_valid implementation. - probe helpers have been extracted to drm_probe_helper.c Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> (v1) Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--Documentation/DocBook/drm.tmpl6
-rw-r--r--drivers/gpu/drm/ast/ast_mode.c7
-rw-r--r--drivers/gpu/drm/bridge/ptn3460.c7
-rw-r--r--drivers/gpu/drm/cirrus/cirrus_mode.c8
-rw-r--r--drivers/gpu/drm/drm_probe_helper.c2
-rw-r--r--drivers/gpu/drm/exynos/exynos_dp_core.c7
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_dpi.c7
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_vidi.c7
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_lvdscon.c7
-rw-r--r--drivers/gpu/drm/rcar-du/rcar_du_vgacon.c7
-rw-r--r--drivers/gpu/drm/shmobile/shmob_drm_crtc.c7
-rw-r--r--drivers/staging/imx-drm/imx-drm-core.c7
-rw-r--r--drivers/staging/imx-drm/imx-drm.h2
-rw-r--r--drivers/staging/imx-drm/imx-hdmi.c1
-rw-r--r--drivers/staging/imx-drm/imx-ldb.c1
-rw-r--r--drivers/staging/imx-drm/imx-tve.c4
-rw-r--r--drivers/staging/imx-drm/parallel-display.c1
-rw-r--r--include/drm/drm_crtc_helper.h2
18 files changed, 5 insertions, 85 deletions
diff --git a/Documentation/DocBook/drm.tmpl b/Documentation/DocBook/drm.tmpl
index 677a02553ec0..c72e146e58d3 100644
--- a/Documentation/DocBook/drm.tmpl
+++ b/Documentation/DocBook/drm.tmpl
@@ -1903,8 +1903,8 @@ void intel_crt_init(struct drm_device *dev)
1903 <para> 1903 <para>
1904 The function filters out modes larger than 1904 The function filters out modes larger than
1905 <parameter>max_width</parameter> and <parameter>max_height</parameter> 1905 <parameter>max_width</parameter> and <parameter>max_height</parameter>
1906 if specified. It then calls the connector 1906 if specified. It then calls the optional connector
1907 <methodname>mode_valid</methodname> helper operation for each mode in 1907 <methodname>mode_valid</methodname> helper operation for each mode in
1908 the probed list to check whether the mode is valid for the connector. 1908 the probed list to check whether the mode is valid for the connector.
1909 </para> 1909 </para>
1910 </listitem> 1910 </listitem>
@@ -2265,7 +2265,7 @@ void intel_crt_init(struct drm_device *dev)
2265 <para> 2265 <para>
2266 Verify whether a mode is valid for the connector. Return MODE_OK for 2266 Verify whether a mode is valid for the connector. Return MODE_OK for
2267 supported modes and one of the enum drm_mode_status values (MODE_*) 2267 supported modes and one of the enum drm_mode_status values (MODE_*)
2268 for unsupported modes. This operation is mandatory. 2268 for unsupported modes. This operation is optional.
2269 </para> 2269 </para>
2270 <para> 2270 <para>
2271 As the mode rejection reason is currently not used beside for 2271 As the mode rejection reason is currently not used beside for
diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
index a4afdc8bb578..e599d64a2620 100644
--- a/drivers/gpu/drm/ast/ast_mode.c
+++ b/drivers/gpu/drm/ast/ast_mode.c
@@ -743,12 +743,6 @@ static int ast_get_modes(struct drm_connector *connector)
743 return 0; 743 return 0;
744} 744}
745 745
746static int ast_mode_valid(struct drm_connector *connector,
747 struct drm_display_mode *mode)
748{
749 return MODE_OK;
750}
751
752static void ast_connector_destroy(struct drm_connector *connector) 746static void ast_connector_destroy(struct drm_connector *connector)
753{ 747{
754 struct ast_connector *ast_connector = to_ast_connector(connector); 748 struct ast_connector *ast_connector = to_ast_connector(connector);
@@ -765,7 +759,6 @@ ast_connector_detect(struct drm_connector *connector, bool force)
765} 759}
766 760
767static const struct drm_connector_helper_funcs ast_connector_helper_funcs = { 761static const struct drm_connector_helper_funcs ast_connector_helper_funcs = {
768 .mode_valid = ast_mode_valid,
769 .get_modes = ast_get_modes, 762 .get_modes = ast_get_modes,
770 .best_encoder = ast_best_single_encoder, 763 .best_encoder = ast_best_single_encoder,
771}; 764};
diff --git a/drivers/gpu/drm/bridge/ptn3460.c b/drivers/gpu/drm/bridge/ptn3460.c
index b171901a3553..98fd17ae4916 100644
--- a/drivers/gpu/drm/bridge/ptn3460.c
+++ b/drivers/gpu/drm/bridge/ptn3460.c
@@ -225,12 +225,6 @@ out:
225 return num_modes; 225 return num_modes;
226} 226}
227 227
228static int ptn3460_mode_valid(struct drm_connector *connector,
229 struct drm_display_mode *mode)
230{
231 return MODE_OK;
232}
233
234struct drm_encoder *ptn3460_best_encoder(struct drm_connector *connector) 228struct drm_encoder *ptn3460_best_encoder(struct drm_connector *connector)
235{ 229{
236 struct ptn3460_bridge *ptn_bridge; 230 struct ptn3460_bridge *ptn_bridge;
@@ -242,7 +236,6 @@ struct drm_encoder *ptn3460_best_encoder(struct drm_connector *connector)
242 236
243struct drm_connector_helper_funcs ptn3460_connector_helper_funcs = { 237struct drm_connector_helper_funcs ptn3460_connector_helper_funcs = {
244 .get_modes = ptn3460_get_modes, 238 .get_modes = ptn3460_get_modes,
245 .mode_valid = ptn3460_mode_valid,
246 .best_encoder = ptn3460_best_encoder, 239 .best_encoder = ptn3460_best_encoder,
247}; 240};
248 241
diff --git a/drivers/gpu/drm/cirrus/cirrus_mode.c b/drivers/gpu/drm/cirrus/cirrus_mode.c
index f59433b7610c..49332c5fe35b 100644
--- a/drivers/gpu/drm/cirrus/cirrus_mode.c
+++ b/drivers/gpu/drm/cirrus/cirrus_mode.c
@@ -505,13 +505,6 @@ static int cirrus_vga_get_modes(struct drm_connector *connector)
505 return count; 505 return count;
506} 506}
507 507
508static int cirrus_vga_mode_valid(struct drm_connector *connector,
509 struct drm_display_mode *mode)
510{
511 /* Any mode we've added is valid */
512 return MODE_OK;
513}
514
515static struct drm_encoder *cirrus_connector_best_encoder(struct drm_connector 508static struct drm_encoder *cirrus_connector_best_encoder(struct drm_connector
516 *connector) 509 *connector)
517{ 510{
@@ -546,7 +539,6 @@ static void cirrus_connector_destroy(struct drm_connector *connector)
546 539
547struct drm_connector_helper_funcs cirrus_vga_connector_helper_funcs = { 540struct drm_connector_helper_funcs cirrus_vga_connector_helper_funcs = {
548 .get_modes = cirrus_vga_get_modes, 541 .get_modes = cirrus_vga_get_modes,
549 .mode_valid = cirrus_vga_mode_valid,
550 .best_encoder = cirrus_connector_best_encoder, 542 .best_encoder = cirrus_connector_best_encoder,
551}; 543};
552 544
diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
index e70f54d4a581..d06340985a72 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
@@ -169,7 +169,7 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector,
169 drm_mode_validate_flag(connector, mode_flags); 169 drm_mode_validate_flag(connector, mode_flags);
170 170
171 list_for_each_entry(mode, &connector->modes, head) { 171 list_for_each_entry(mode, &connector->modes, head) {
172 if (mode->status == MODE_OK) 172 if (mode->status == MODE_OK && connector_funcs->mode_valid)
173 mode->status = connector_funcs->mode_valid(connector, 173 mode->status = connector_funcs->mode_valid(connector,
174 mode); 174 mode);
175 } 175 }
diff --git a/drivers/gpu/drm/exynos/exynos_dp_core.c b/drivers/gpu/drm/exynos/exynos_dp_core.c
index aed533bbfd31..bb74472b4e4b 100644
--- a/drivers/gpu/drm/exynos/exynos_dp_core.c
+++ b/drivers/gpu/drm/exynos/exynos_dp_core.c
@@ -949,12 +949,6 @@ static int exynos_dp_get_modes(struct drm_connector *connector)
949 return 1; 949 return 1;
950} 950}
951 951
952static int exynos_dp_mode_valid(struct drm_connector *connector,
953 struct drm_display_mode *mode)
954{
955 return MODE_OK;
956}
957
958static struct drm_encoder *exynos_dp_best_encoder( 952static struct drm_encoder *exynos_dp_best_encoder(
959 struct drm_connector *connector) 953 struct drm_connector *connector)
960{ 954{
@@ -965,7 +959,6 @@ static struct drm_encoder *exynos_dp_best_encoder(
965 959
966static struct drm_connector_helper_funcs exynos_dp_connector_helper_funcs = { 960static struct drm_connector_helper_funcs exynos_dp_connector_helper_funcs = {
967 .get_modes = exynos_dp_get_modes, 961 .get_modes = exynos_dp_get_modes,
968 .mode_valid = exynos_dp_mode_valid,
969 .best_encoder = exynos_dp_best_encoder, 962 .best_encoder = exynos_dp_best_encoder,
970}; 963};
971 964
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dpi.c b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
index 2b09c7c0bfcc..82e52c71bccc 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dpi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dpi.c
@@ -94,12 +94,6 @@ static int exynos_dpi_get_modes(struct drm_connector *connector)
94 return 0; 94 return 0;
95}