···3333#include "drm_crtc.h"3434#include "drm_crtc_helper.h"35353636-/*3737- * Detailed mode info for 800x600@60Hz3838- */3939-static struct drm_display_mode std_modes[] = {4040- { DRM_MODE("800x600", DRM_MODE_TYPE_DEFAULT, 40000, 800, 840,4141- 968, 1056, 0, 600, 601, 605, 628, 0,4242- DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) },4343-};4444-4536static void drm_mode_validate_flag(struct drm_connector *connector,4637 int flags)4738{···124133 mode);125134 }126135127127-128136 drm_mode_prune_invalid(dev, &connector->modes, true);129137130138 if (list_empty(&connector->modes))···158168 return count;159169}160170EXPORT_SYMBOL(drm_helper_probe_connector_modes);161161-162162-static void drm_helper_add_std_modes(struct drm_device *dev,163163- struct drm_connector *connector)164164-{165165- struct drm_display_mode *mode, *t;166166- int i;167167-168168- for (i = 0; i < ARRAY_SIZE(std_modes); i++) {169169- struct drm_display_mode *stdmode;170170-171171- /*172172- * When no valid EDID modes are available we end up173173- * here and bailed in the past, now we add some standard174174- * modes and move on.175175- */176176- stdmode = drm_mode_duplicate(dev, &std_modes[i]);177177- drm_mode_probed_add(connector, stdmode);178178- drm_mode_list_concat(&connector->probed_modes,179179- &connector->modes);180180-181181- DRM_DEBUG_KMS("Adding mode %s to %s\n", stdmode->name,182182- drm_get_connector_name(connector));183183- }184184- drm_mode_sort(&connector->modes);185185-186186- DRM_DEBUG_KMS("Added std modes on %s\n",187187- drm_get_connector_name(connector));188188- list_for_each_entry_safe(mode, t, &connector->modes, head) {189189- mode->vrefresh = drm_mode_vrefresh(mode);190190-191191- drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);192192- drm_mode_debug_printmodeline(mode);193193- }194194-}195171196172/**197173 * drm_helper_encoder_in_use - check if a given encoder is in use···938982 */939983bool drm_helper_initial_config(struct drm_device *dev)940984{941941- struct drm_connector *connector;942985 int count = 0;943986944987 count = drm_helper_probe_connector_modes(dev,···945990 dev->mode_config.max_height);946991947992 /*948948- * None of the available connectors had any modes, so add some949949- * and try to light them up anyway993993+ * we shouldn't end up with no modes here.950994 */951951- if (!count) {952952- DRM_ERROR("connectors have no modes, using standard modes\n");953953- list_for_each_entry(connector,954954- &dev->mode_config.connector_list,955955- head)956956- drm_helper_add_std_modes(dev, connector);957957- }995995+ WARN(!count, "Connected connector with 0 modes\n");958996959997 drm_setup_crtcs(dev);960998