@@ -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
@@ -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);
It's helpful to expand the mode_valid callback to platform driver, so they could valid the display mode or information. Signed-off-by: Yakir Yang <ykk@rock-chips.com> --- drivers/gpu/drm/bridge/analogix/analogix_dp_core.c | 15 +++++++++++++++ include/drm/bridge/analogix_dp.h | 4 ++++ 2 files changed, 19 insertions(+)