const struct drm_display_mode *mode,
                                 struct drm_display_mode *adjusted_mode)
 {
+       struct rcar_lvds *lvds = bridge_to_rcar_lvds(bridge);
+       int min_freq;
+
        /*
         * The internal LVDS encoder has a restricted clock frequency operating
-        * range (31MHz to 148.5MHz). Clamp the clock accordingly.
+        * range, from 5MHz to 148.5MHz on D3 and E3, and from 31MHz to
+        * 148.5MHz on all other platforms. Clamp the clock accordingly.
         */
-       adjusted_mode->clock = clamp(adjusted_mode->clock, 31000, 148500);
+       min_freq = lvds->info->quirks & RCAR_LVDS_QUIRK_EXT_PLL ? 5000 : 31000;
+       adjusted_mode->clock = clamp(adjusted_mode->clock, min_freq, 148500);
 
        return true;
 }