From: Stanislav Vorobiov Date: Mon, 17 Jun 2013 15:29:48 +0000 (+0400) Subject: VIGS: Support custom resolutions X-Git-Tag: submit/tizen_common/20140905.094502~153 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=23855501db58e55da87c02a5d836b1ccec4c0a40;p=sdk%2Femulator%2Femulator-kernel.git VIGS: Support custom resolutions Change-Id: I779f469eb5ef9c82dbc06493cdb3a448c1c30a51 --- diff --git a/drivers/gpu/drm/vigs/vigs_output.c b/drivers/gpu/drm/vigs/vigs_output.c index 7b11e6fdbef7..28984813bf5c 100644 --- a/drivers/gpu/drm/vigs/vigs_output.c +++ b/drivers/gpu/drm/vigs/vigs_output.c @@ -88,29 +88,26 @@ static int vigs_connector_get_modes(struct drm_connector *connector) { struct vigs_output *vigs_output = connector_to_vigs_output(connector); struct drm_device *drm_dev = vigs_output->connector.dev; - int i; - struct - { - int w; - int h; - } modes[] = - { - { 480, 800 }, - { 720, 1280 }, - }; + char *option = NULL; DRM_DEBUG_KMS("enter\n"); - for (i = 0; i < ARRAY_SIZE(modes); i++) { - struct drm_display_mode *mode = - drm_cvt_mode(drm_dev, - modes[i].w, - modes[i].h, - 60, false, false, false); - drm_mode_probed_add(connector, mode); + if (fb_get_options(drm_get_connector_name(connector), &option) == 0) { + struct drm_cmdline_mode cmdline_mode; + + if (drm_mode_parse_command_line_for_connector(option, + connector, + &cmdline_mode)) { + struct drm_display_mode *preferred_mode = + drm_mode_create_from_cmdline_mode(drm_dev, + &cmdline_mode); + preferred_mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER; + drm_mode_probed_add(connector, preferred_mode); + return 1; + } } - return (i - 1); + return 0; } static int vigs_connector_mode_valid(struct drm_connector *connector,