From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915/dsi: Use a fuzzy check for burst mode clock check Date: Tue, 4 Jun 2019 20:29:36 +0300 Message-ID: <20190604172936.GH5942@intel.com> References: <20190524174028.21659-1-hdegoede@redhat.com> <20190524174028.21659-2-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Return-path: Content-Disposition: inline In-Reply-To: <20190524174028.21659-2-hdegoede@redhat.com> Sender: stable-owner@vger.kernel.org To: Hans de Goede Cc: Daniel Vetter , Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , intel-gfx , dri-devel@lists.freedesktop.org, stable@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org On Fri, May 24, 2019 at 07:40:28PM +0200, Hans de Goede wrote: > Prior to this commit we fail to init the DSI panel on the GPD MicroPC: > https://www.indiegogo.com/projects/gpd-micropc-6-inch-handheld-industry-laptop#/ > > The problem is intel_dsi_vbt_init() failing with the following error: > *ERROR* Burst mode freq is less than computed > > The pclk in the VBT panel modeline is 70000, together with 24 bpp and > 4 lines this results in a bitrate value of 70000 * 24 / 4 = 420000. > But the target_burst_mode_freq in the VBT is 418000. > > This commit works around this problem by adding an intel_fuzzy_clock_check > when target_burst_mode_freq < bitrate and setting target_burst_mode_freq to > bitrate when that checks succeeds, fixing the panel not working. > > Cc: stable@vger.kernel.org > Signed-off-by: Hans de Goede > --- > drivers/gpu/drm/i915/intel_dsi_vbt.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_dsi_vbt.c b/drivers/gpu/drm/i915/intel_dsi_vbt.c > index 022bf59418df..a2a9b9d0eeaa 100644 > --- a/drivers/gpu/drm/i915/intel_dsi_vbt.c > +++ b/drivers/gpu/drm/i915/intel_dsi_vbt.c > @@ -895,6 +895,17 @@ bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id) > if (mipi_config->target_burst_mode_freq) { > u32 bitrate = intel_dsi_bitrate(intel_dsi); > > + /* > + * Sometimes the VBT contains a slightly lower clock, > + * then the bitrate we have calculated, in this case > + * just replace it with the calculated bitrate. > + */ > + if (mipi_config->target_burst_mode_freq < bitrate && > + intel_fuzzy_clock_check( > + mipi_config->target_burst_mode_freq, > + bitrate)) > + mipi_config->target_burst_mode_freq = bitrate; Maybe should squash these patches together to make the stable backport less painful? Anyways, seems OK to me. Reviewed-by: Ville Syrjälä > + > if (mipi_config->target_burst_mode_freq < bitrate) { > DRM_ERROR("Burst mode freq is less than computed\n"); > return false; > -- > 2.21.0 -- Ville Syrjälä Intel