[PATCH 2/2] debug

José Roberto de Souza jose.souza at intel.com
Tue Jul 20 19:44:16 UTC 2021


---
 .../drm/i915/display/intel_dp_aux_backlight.c | 11 +++++
 .../i915/display/intel_dsi_dcs_backlight.c    |  5 +++
 drivers/gpu/drm/i915/display/intel_panel.c    | 40 +++++++++++++++----
 drivers/gpu/drm/i915/display/vlv_dsi.c        | 29 ++++++++++++++
 4 files changed, 78 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index 996d24872ae8c..a168e8274e1e6 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -313,6 +313,12 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
 	u16 current_level;
 	u8 current_mode;
 	int ret;
+	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
+
+	if (!panel->vbt_backlight_info) {
+		drm_info(&i915->drm, "intel_dp_aux_vesa_setup_backlight !panel->vbt_backlight_info\n");
+		return -1;
+	}
 
 	ret = drm_edp_backlight_init(&intel_dp->aux,
 				     &panel->backlight.edp.vesa.info,
@@ -385,6 +391,11 @@ int intel_dp_aux_init_backlight_funcs(struct intel_connector *connector)
 	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
 	bool try_intel_interface = false, try_vesa_interface = false;
 
+	if (!panel->vbt_backlight_info) {
+		drm_info(dev, "intel_dp_aux_init_backlight_funcs !vbt_backlight_info\n");
+		return -1;
+	}
+
 	/* Check the VBT and user's module parameters to figure out which
 	 * interfaces to probe
 	 */
diff --git a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c
index 018900255fef3..d0d030da78615 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c
@@ -169,6 +169,11 @@ int intel_dsi_dcs_init_backlight_funcs(struct intel_connector *intel_connector)
 	struct intel_encoder *encoder = intel_attached_encoder(intel_connector);
 	struct intel_panel *panel = &intel_connector->panel;
 
+	if (!panel->vbt_backlight_info) {
+		drm_info(dev, "intel_dsi_dcs_init_backlight_funcs !vbt_backlight_info\n");
+		return -1;
+	}
+
 	if (panel->vbt_backlight_info->type != INTEL_BACKLIGHT_DSI_DCS)
 		return -ENODEV;
 
diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
index 466a6adc594f3..3acd8508439da 100644
--- a/drivers/gpu/drm/i915/display/intel_panel.c
+++ b/drivers/gpu/drm/i915/display/intel_panel.c
@@ -1598,7 +1598,13 @@ static u32 vlv_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
 static u16 get_vbt_pwm_freq(struct drm_i915_private *dev_priv,
 			    struct intel_panel *panel)
 {
-	u16 pwm_freq_hz = panel->vbt_backlight_info->pwm_freq_hz;
+	u16 pwm_freq_hz = 0;
+
+	if (!panel->vbt_backlight_info) {
+		drm_info(&dev_priv->drm, "get_vbt_pwm_freq !vbt_backlight_info\n");
+	} else {
+		pwm_freq_hz = panel->vbt_backlight_info->pwm_freq_hz;
+	}
 
 	if (pwm_freq_hz) {
 		drm_dbg_kms(&dev_priv->drm,
@@ -1644,7 +1650,14 @@ static u32 get_backlight_min_vbt(struct intel_connector *connector)
 {
 	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
 	struct intel_panel *panel = &connector->panel;
-	int min;
+	int min, vbt_min;
+
+	if (!panel->vbt_backlight_info) {
+		drm_info(&dev_priv->drm, "get_backlight_min_vbt !vbt_backlight_info\n");
+		vbt_min = 0;
+	} else {
+		vbt_min = panel->vbt_backlight_info->min_brightness;
+	}
 
 	drm_WARN_ON(&dev_priv->drm, panel->backlight.pwm_level_max == 0);
 
@@ -1655,11 +1668,11 @@ static u32 get_backlight_min_vbt(struct intel_connector *connector)
 	 * against this by letting the minimum be at most (arbitrarily chosen)
 	 * 25% of the max.
 	 */
-	min = clamp_t(int, panel->vbt_backlight_info->min_brightness, 0, 64);
-	if (min != panel->vbt_backlight_info->min_brightness) {
+	min = clamp_t(int, vbt_min, 0, 64);
+	if (min != vbt_min) {
 		drm_dbg_kms(&dev_priv->drm,
 			    "clamping VBT min backlight %d/255 to %d/255\n",
-			    panel->vbt_backlight_info->min_brightness, min);
+			    vbt_min, min);
 	}
 
 	/* vbt value is a coefficient in range [0..255] */
@@ -1848,7 +1861,12 @@ bxt_setup_backlight(struct intel_connector *connector, enum pipe unused)
 	struct intel_panel *panel = &connector->panel;
 	u32 pwm_ctl, val;
 
-	panel->backlight.controller = panel->vbt_backlight_info->controller;
+	if (!panel->vbt_backlight_info) {
+		drm_info(&dev_priv->drm, "bxt_setup_backlight !vbt_backlight_info");
+		panel->backlight.controller = 0;
+	} else {
+		panel->backlight.controller = panel->vbt_backlight_info->controller;
+	}
 
 	pwm_ctl = intel_de_read(dev_priv,
 				BXT_BLC_PWM_CTL(panel->backlight.controller));
@@ -2040,7 +2058,11 @@ int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe)
 	struct intel_panel *panel = &intel_connector->panel;
 	int ret;
 
-	if (!panel->vbt_backlight_info->present) {
+	if (!panel->vbt_backlight_info) {
+		drm_info(&dev_priv->drm, "intel_panel_setup_backlight !vbt_backlight_info");
+	}
+
+	if (!panel->vbt_backlight_info || !panel->vbt_backlight_info->present) {
 		if (dev_priv->quirks & QUIRK_BACKLIGHT_PRESENT) {
 			drm_dbg_kms(&dev_priv->drm,
 				    "no backlight present per VBT, but present per quirk\n");
@@ -2234,8 +2256,12 @@ int intel_panel_init(struct intel_connector *intel_connector,
 		     struct drm_display_mode *downclock_mode)
 {
 	struct intel_panel *panel = &intel_connector->panel;
+	struct drm_i915_private *dev_priv = to_i915(intel_connector->base.dev);
 
 	panel->vbt_backlight_info = intel_bios_backlight_info(intel_connector->encoder);
+	if (!panel->vbt_backlight_info) {
+		drm_info(&dev_priv->drm, "intel_panel_init !vbt_backlight_info");
+	}
 	intel_panel_init_backlight_funcs(panel);
 
 	panel->fixed_mode = fixed_mode;
diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c
index ec61d09352718..9b01c4f68a87a 100644
--- a/drivers/gpu/drm/i915/display/vlv_dsi.c
+++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
@@ -1844,6 +1844,8 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
 	if (!intel_bios_is_dsi_present(dev_priv, &port))
 		return;
 
+	drm_dbg_kms(&dev_priv->drm, "1\n");
+
 	if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv))
 		dev_priv->mipi_mmio_base = BXT_MIPI_BASE;
 	else
@@ -1865,6 +1867,8 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
 
 	connector = &intel_connector->base;
 
+	drm_dbg_kms(&dev_priv->drm, "2\n");
+
 	drm_encoder_init(dev, encoder, &intel_dsi_funcs, DRM_MODE_ENCODER_DSI,
 			 "DSI %c", port_name(port));
 
@@ -1907,6 +1911,8 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
 	intel_dsi->dcs_backlight_ports = dev_priv->vbt.dsi.bl_ports;
 	intel_dsi->dcs_cabc_ports = dev_priv->vbt.dsi.cabc_ports;
 
+	drm_dbg_kms(&dev_priv->drm, "2\n");
+
 	/* Create a DSI host (and a device) for each port. */
 	for_each_dsi_port(port, intel_dsi->ports) {
 		struct intel_dsi_host *host;
@@ -1919,11 +1925,15 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
 		intel_dsi->dsi_hosts[port] = host;
 	}
 
+	drm_dbg_kms(&dev_priv->drm, "3\n");
+
 	if (!intel_dsi_vbt_init(intel_dsi, MIPI_DSI_GENERIC_PANEL_ID)) {
 		drm_dbg_kms(&dev_priv->drm, "no device found\n");
 		goto err;
 	}
 
+	drm_dbg_kms(&dev_priv->drm, "4\n");
+
 	/* Use clock read-back from current hw-state for fastboot */
 	current_mode = intel_encoder_current_mode(intel_encoder);
 	if (current_mode) {
@@ -1938,35 +1948,54 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
 		kfree(current_mode);
 	}
 
+	drm_dbg_kms(&dev_priv->drm, "5\n");
+
 	vlv_dphy_param_init(intel_dsi);
 
+	drm_dbg_kms(&dev_priv->drm, "6\n");
+
 	intel_dsi_vbt_gpio_init(intel_dsi,
 				intel_dsi_get_hw_state(intel_encoder, &pipe));
 
+	drm_dbg_kms(&dev_priv->drm, "7\n");
+
 	drm_connector_init(dev, connector, &intel_dsi_connector_funcs,
 			   DRM_MODE_CONNECTOR_DSI);
 
+	drm_dbg_kms(&dev_priv->drm, "8\n");
+
 	drm_connector_helper_add(connector, &intel_dsi_connector_helper_funcs);
 
+	drm_dbg_kms(&dev_priv->drm, "9\n");
+
 	connector->display_info.subpixel_order = SubPixelHorizontalRGB; /*XXX*/
 	connector->interlace_allowed = false;
 	connector->doublescan_allowed = false;
 
 	intel_connector_attach_encoder(intel_connector, intel_encoder);
 
+	drm_dbg_kms(&dev_priv->drm, "10\n");
+
 	mutex_lock(&dev->mode_config.mutex);
 	fixed_mode = intel_panel_vbt_fixed_mode(intel_connector);
 	mutex_unlock(&dev->mode_config.mutex);
 
+	drm_dbg_kms(&dev_priv->drm, "11\n");
+
 	if (!fixed_mode) {
 		drm_dbg_kms(&dev_priv->drm, "no fixed mode\n");
 		goto err_cleanup_connector;
 	}
 
+	drm_dbg_kms(&dev_priv->drm, "12\n");
+
 	intel_panel_init(intel_connector, fixed_mode, NULL);
+	drm_dbg_kms(&dev_priv->drm, "13\n");
 	intel_panel_setup_backlight(connector, INVALID_PIPE);
+	drm_dbg_kms(&dev_priv->drm, "14\n");
 
 	vlv_dsi_add_properties(intel_connector);
+	drm_dbg_kms(&dev_priv->drm, "15\n");
 
 	return;
 
-- 
2.32.0



More information about the Intel-gfx-trybot mailing list