static int udl_get_modes(struct drm_connector *connector) { struct udl_device *udl = connector->dev->dev_private; struct edid *edid; int ret; edid = (struct edid *)udl_get_edid(udl); if (!edid) { drm_mode_connector_update_edid_property(connector, NULL); return 0; } /* * We only read the main block, but if the monitor reports extension * blocks then the drm edid code expects them to be present, so patch * the extension count to 0. */ edid->checksum += edid->extensions; edid->extensions = 0; drm_mode_connector_update_edid_property(connector, edid); ret = drm_add_edid_modes(connector, edid); kfree(edid); return ret; }
static int udl_get_modes(struct drm_connector *connector) { struct udl_device *udl = connector->dev->dev_private; struct edid *edid; int ret; edid = (struct edid *)udl_get_edid(udl); drm_mode_connector_update_edid_property(connector, edid); ret = drm_add_edid_modes(connector, edid); kfree(edid); return ret; }