drm/bridge: analogix_dp: introduce connector mode_valid callback to plat driver
authorYakir Yang <ykk@rock-chips.com>
Wed, 13 Apr 2016 04:02:48 +0000 (12:02 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Thu, 14 Apr 2016 06:39:52 +0000 (14:39 +0800)
It's helpful to expand the mode_valid callback to platform driver,
so they could valid the display mode or informations.

Change-Id: Icfd7593bd10c93fc9045acf04a8d0ed6336ffb85
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c
include/drm/bridge/analogix_dp.h

index 7699597070a13d09909e64780faba937a2b13b8c..e04b65d905d3b0099f40ae07c174d45b9e036f24 100644 (file)
@@ -943,6 +943,20 @@ int analogix_dp_get_modes(struct drm_connector *connector)
        return num_modes;
 }
 
+static enum drm_mode_status
+analogix_dp_mode_valid(struct drm_connector *connector,
+                      struct drm_display_mode *mode)
+{
+       struct analogix_dp_device *dp = to_dp(connector);
+       enum drm_mode_status status = MODE_OK;
+
+       if (dp->plat_data->mode_valid)
+               status = dp->plat_data->mode_valid(dp->plat_data, connector,
+                                                  mode);
+
+       return status;
+}
+
 static struct drm_encoder *
 analogix_dp_best_encoder(struct drm_connector *connector)
 {
@@ -954,6 +968,7 @@ analogix_dp_best_encoder(struct drm_connector *connector)
 static const struct drm_connector_helper_funcs analogix_dp_connector_helper_funcs = {
        .get_modes = analogix_dp_get_modes,
        .best_encoder = analogix_dp_best_encoder,
+       .mode_valid = analogix_dp_mode_valid,
 };
 
 enum drm_connector_status
index 25afb31f0389edbb1f9f8a9e3558602df38f816b..da4800aa31ec7b9db04113171345cb2a20cb67ab 100644 (file)
@@ -29,6 +29,10 @@ struct analogix_dp_plat_data {
        int (*attach)(struct analogix_dp_plat_data *, struct drm_bridge *,
                      struct drm_connector *);
        int (*get_modes)(struct analogix_dp_plat_data *);
+
+       enum drm_mode_status (*mode_valid)(struct analogix_dp_plat_data *,
+                                          struct drm_connector *,
+                                          struct drm_display_mode *);
 };
 
 int analogix_dp_resume(struct device *dev);