drivers/gpu/drm/via/via_analog.c | 40 +-------------------------------- drivers/gpu/drm/via/via_display.c | 45 ++++++++++++++++++++++++++++++++++++++ drivers/gpu/drm/via/via_display.h | 5 ++++ 3 files changed, 52 insertions(+), 38 deletions(-)
New commits: commit cc4296b4bb93119c3d0ec402b0cbfcd73b048d28 Author: James Simmons <jsimm...@infradead.org> Date: Tue Mar 26 10:08:18 2013 -0400 Several pieces of code in the upcoming DVI handling is also shared with VGA handling so factor it out to be shared. diff --git a/drivers/gpu/drm/via/via_analog.c b/drivers/gpu/drm/via/via_analog.c index 221502d..e7e18ce 100644 --- a/drivers/gpu/drm/via/via_analog.c +++ b/drivers/gpu/drm/via/via_analog.c @@ -97,52 +97,16 @@ via_analog_detect(struct drm_connector *connector, bool force) return ret; } -static int -via_analog_set_property(struct drm_connector *connector, - struct drm_property *property, - uint64_t value) -{ - struct drm_device *dev = connector->dev; - - if (property == dev->mode_config.dpms_property && connector->encoder) - via_dac_dpms(connector->encoder, (uint32_t)(value & 0xf)); - return 0; -} - static const struct drm_connector_funcs via_analog_connector_funcs = { .dpms = drm_helper_connector_dpms, .detect = via_analog_detect, .fill_modes = drm_helper_probe_single_connector_modes, - .set_property = via_analog_set_property, + .set_property = via_connector_set_property, .destroy = via_connector_destroy, }; -/* This function test if the drm_display_modes generated by a display - * monitor that is connected is supported by the graphics card. - */ -static int -via_analog_mode_valid(struct drm_connector *connector, - struct drm_display_mode *mode) -{ - if ((mode->flags & DRM_MODE_FLAG_INTERLACE) && - !connector->interlace_allowed) - return MODE_NO_INTERLACE; - - if ((mode->flags & DRM_MODE_FLAG_DBLSCAN) && - !connector->doublescan_allowed) - return MODE_NO_DBLESCAN; - - /* Check Clock Range */ - if (mode->clock > 400000) - return MODE_CLOCK_HIGH; - if (mode->clock < 25000) - return MODE_CLOCK_LOW; - - return MODE_OK; -} - static const struct drm_connector_helper_funcs via_analog_connector_helper_funcs = { - .mode_valid = via_analog_mode_valid, + .mode_valid = via_connector_mode_valid, .get_modes = via_get_edid_modes, .best_encoder = via_best_encoder, }; diff --git a/drivers/gpu/drm/via/via_display.c b/drivers/gpu/drm/via/via_display.c index 9f9cda8..99046d9 100644 --- a/drivers/gpu/drm/via/via_display.c +++ b/drivers/gpu/drm/via/via_display.c @@ -28,6 +28,9 @@ #include "via_drv.h" +/* + * Shared encoder routines. + */ void via_encoder_commit(struct drm_encoder *encoder) { @@ -278,6 +281,9 @@ via_best_encoder(struct drm_connector *connector) return encoder; } +/* + * Shared connector routines. + */ int via_get_edid_modes(struct drm_connector *connector) { @@ -287,6 +293,45 @@ via_get_edid_modes(struct drm_connector *connector) return drm_add_edid_modes(connector, edid); } +int +via_connector_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + if ((mode->flags & DRM_MODE_FLAG_INTERLACE) && + !connector->interlace_allowed) + return MODE_NO_INTERLACE; + + if ((mode->flags & DRM_MODE_FLAG_DBLSCAN) && + !connector->doublescan_allowed) + return MODE_NO_DBLESCAN; + + /* Check Clock Range */ + if (mode->clock > 400000) + return MODE_CLOCK_HIGH; + + if (mode->clock < 25000) + return MODE_CLOCK_LOW; + + return MODE_OK; +} + +int +via_connector_set_property(struct drm_connector *connector, + struct drm_property *property, uint64_t value) +{ + struct drm_encoder *encoder = connector->encoder; + struct drm_encoder_helper_funcs *encoder_funcs; + struct drm_device *dev = connector->dev; + + if (encoder) { + encoder_funcs = encoder->helper_private; + + if (property == dev->mode_config.dpms_property) + encoder_funcs->dpms(encoder, (uint32_t)(value & 0xf)); + } + return 0; +} + void via_connector_destroy(struct drm_connector *connector) { diff --git a/drivers/gpu/drm/via/via_display.h b/drivers/gpu/drm/via/via_display.h index 148f69a..02408a5 100644 --- a/drivers/gpu/drm/via/via_display.h +++ b/drivers/gpu/drm/via/via_display.h @@ -153,6 +153,11 @@ extern void via_encoder_disable(struct drm_encoder *encoder); extern void via_encoder_commit(struct drm_encoder *encoder); /* connectors */ +extern int via_connector_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t value); +extern int via_connector_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode); extern void via_connector_destroy(struct drm_connector *connector); extern int via_get_edid_modes(struct drm_connector *connector); _______________________________________________ Openchrome-devel mailing list Openchrome-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/openchrome-devel