enum drm_edid_internal_quirk {
        /* First detailed mode wrong, use largest 60Hz mode */
-       EDID_QUIRK_PREFER_LARGE_60,
+       EDID_QUIRK_PREFER_LARGE_60 = DRM_EDID_QUIRK_NUM,
        /* Reported 135MHz pixel clock is too high, needs adjustment */
        EDID_QUIRK_135_CLOCK_TOO_HIGH,
        /* Prefer the largest mode at 75 Hz */
        return connector->display_info.quirks & BIT(quirk);
 }
 
+bool drm_edid_has_quirk(struct drm_connector *connector, enum drm_edid_quirk quirk)
+{
+       return connector->display_info.quirks & BIT(quirk);
+}
+EXPORT_SYMBOL(drm_edid_has_quirk);
+
 #define MODE_SIZE(m) ((m)->hdisplay * (m)->vdisplay)
 #define MODE_REFRESH_DIFF(c,t) (abs((c) - (t)))
 
 
        int vics_len;
 
        /**
-        * @quirks: EDID based quirks. Internal to EDID parsing.
+        * @quirks: EDID based quirks. DRM core and drivers can query the
+        * @drm_edid_quirk quirks using drm_edid_has_quirk(), the rest of
+        * the quirks also tracked here are internal to EDID parsing.
         */
        u32 quirks;
 
 
 #define DRM_EDID_CVT_FLAGS_STANDARD_BLANKING (1 << 3)
 #define DRM_EDID_CVT_FLAGS_REDUCED_BLANKING  (1 << 4)
 
+enum drm_edid_quirk {
+       DRM_EDID_QUIRK_NUM,
+};
+
 struct detailed_data_monitor_range {
        u8 min_vfreq;
        u8 max_vfreq;
 u32 drm_edid_get_panel_id(const struct drm_edid *drm_edid);
 bool drm_edid_match(const struct drm_edid *drm_edid,
                    const struct drm_edid_ident *ident);
+bool drm_edid_has_quirk(struct drm_connector *connector, enum drm_edid_quirk quirk);
 
 #endif /* __DRM_EDID_H__ */