Hi
Am 26.03.19 um 17:47 schrieb Ville Syrjälä:
+static int connector_helper_get_modes(struct drm_connector *connector) +{
- struct fbdevdrm_modeset *modeset;
- struct list_head *pos;
- int ret, num_modes = 0;
- modeset = fbdevdrm_modeset_of_connector(connector);
- ret = update_display_info(&connector->display_info, modeset->fb_info);
- if (ret)
return 0;
- /* update connector properties from video modes */
- connector->interlace_allowed = 0;
- connector->doublescan_allowed = 0;
- connector->stereo_allowed = 0;
- if (!num_modes && modeset->fb_info->mode) {
ret = drm_mode_probed_add_from_fb_videomode(
connector, modeset->fb_info->mode, modeset->fb_info);
if (!ret)
++num_modes;
- }
- if (!num_modes) {
/* DRM backporting notes: we go through all modes in the
* fb_info's mode list and convert each to a DRM modes. If
* you convert an fbdev driver to DRM, replace this code
* with an actual hardware query. This will usually involve
* reading the monitor EDID via DDC.
*/
list_for_each(pos, &modeset->fb_info->modelist) {
fbdev has a modelist?
Yes, and its content is surprisingly random! Some drivers fill it with 'real' values coming from DDC probing, some drivers fill it with modes that have worked before, and some drivers fill it with... something.
Best regards Thomas
I guess it does. But not exposed to
userspace, which is probably the reason I never realized this.