Commit a54569b1 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-intel-fixes-2022-08-26' of...

Merge tag 'drm-intel-fixes-2022-08-26' of git://anongit.freedesktop.org/drm/drm-intel

 into drm-fixes

- GVT fixes including fix for a CommetLake regression in mmio table
  and misc doc and typo fixes
- Fix CCS handling (Matt)
- Fix for guc requests after reset (Daniele)
- Display DSI related fixes (Jani)
- Display backlight related fixes (Arun, Jouni)

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/YwjCTDFm7clXPgEu@intel.com
parents b90cb105 6067c82c
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -2070,7 +2070,14 @@ void icl_dsi_init(struct drm_i915_private *dev_priv)
	else
	else
		intel_dsi->ports = BIT(port);
		intel_dsi->ports = BIT(port);


	if (drm_WARN_ON(&dev_priv->drm, intel_connector->panel.vbt.dsi.bl_ports & ~intel_dsi->ports))
		intel_connector->panel.vbt.dsi.bl_ports &= intel_dsi->ports;

	intel_dsi->dcs_backlight_ports = intel_connector->panel.vbt.dsi.bl_ports;
	intel_dsi->dcs_backlight_ports = intel_connector->panel.vbt.dsi.bl_ports;

	if (drm_WARN_ON(&dev_priv->drm, intel_connector->panel.vbt.dsi.cabc_ports & ~intel_dsi->ports))
		intel_connector->panel.vbt.dsi.cabc_ports &= intel_dsi->ports;

	intel_dsi->dcs_cabc_ports = intel_connector->panel.vbt.dsi.cabc_ports;
	intel_dsi->dcs_cabc_ports = intel_connector->panel.vbt.dsi.cabc_ports;


	for_each_dsi_port(port, intel_dsi->ports) {
	for_each_dsi_port(port, intel_dsi->ports) {
+20 −17
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@
#include "intel_dsi_dcs_backlight.h"
#include "intel_dsi_dcs_backlight.h"
#include "intel_panel.h"
#include "intel_panel.h"
#include "intel_pci_config.h"
#include "intel_pci_config.h"
#include "intel_pps.h"


/**
/**
 * scale - scale values from one range to another
 * scale - scale values from one range to another
@@ -971,9 +972,9 @@ int intel_backlight_device_register(struct intel_connector *connector)
	if (!name)
	if (!name)
		return -ENOMEM;
		return -ENOMEM;


	bd = backlight_device_register(name, connector->base.kdev, connector,
	bd = backlight_device_get_by_name(name);
				       &intel_backlight_device_ops, &props);
	if (bd) {

		put_device(&bd->dev);
		/*
		/*
		 * Using the same name independent of the drm device or connector
		 * Using the same name independent of the drm device or connector
		 * prevents registration of multiple backlight devices in the
		 * prevents registration of multiple backlight devices in the
@@ -981,16 +982,14 @@ int intel_backlight_device_register(struct intel_connector *connector)
		 * compatibility. Use unique names for subsequent backlight devices as a
		 * compatibility. Use unique names for subsequent backlight devices as a
		 * fallback when the default name already exists.
		 * fallback when the default name already exists.
		 */
		 */
	if (IS_ERR(bd) && PTR_ERR(bd) == -EEXIST) {
		kfree(name);
		kfree(name);
		name = kasprintf(GFP_KERNEL, "card%d-%s-backlight",
		name = kasprintf(GFP_KERNEL, "card%d-%s-backlight",
				 i915->drm.primary->index, connector->base.name);
				 i915->drm.primary->index, connector->base.name);
		if (!name)
		if (!name)
			return -ENOMEM;
			return -ENOMEM;

	}
	bd = backlight_device_register(name, connector->base.kdev, connector,
	bd = backlight_device_register(name, connector->base.kdev, connector,
				       &intel_backlight_device_ops, &props);
				       &intel_backlight_device_ops, &props);
	}


	if (IS_ERR(bd)) {
	if (IS_ERR(bd)) {
		drm_err(&i915->drm,
		drm_err(&i915->drm,
@@ -1773,10 +1772,14 @@ void intel_backlight_init_funcs(struct intel_panel *panel)
		panel->backlight.pwm_funcs = &i9xx_pwm_funcs;
		panel->backlight.pwm_funcs = &i9xx_pwm_funcs;
	}
	}


	if (connector->base.connector_type == DRM_MODE_CONNECTOR_eDP &&
	if (connector->base.connector_type == DRM_MODE_CONNECTOR_eDP) {
	    intel_dp_aux_init_backlight_funcs(connector) == 0)
		if (intel_dp_aux_init_backlight_funcs(connector) == 0)
			return;
			return;


		if (!(dev_priv->quirks & QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK))
			connector->panel.backlight.power = intel_pps_backlight_power;
	}

	/* We're using a standard PWM backlight interface */
	/* We're using a standard PWM backlight interface */
	panel->backlight.funcs = &pwm_bl_funcs;
	panel->backlight.funcs = &pwm_bl_funcs;
}
}
+6 −4
Original line number Original line Diff line number Diff line
@@ -1596,6 +1596,8 @@ static void parse_dsi_backlight_ports(struct drm_i915_private *i915,
				      struct intel_panel *panel,
				      struct intel_panel *panel,
				      enum port port)
				      enum port port)
{
{
	enum port port_bc = DISPLAY_VER(i915) >= 11 ? PORT_B : PORT_C;

	if (!panel->vbt.dsi.config->dual_link || i915->vbt.version < 197) {
	if (!panel->vbt.dsi.config->dual_link || i915->vbt.version < 197) {
		panel->vbt.dsi.bl_ports = BIT(port);
		panel->vbt.dsi.bl_ports = BIT(port);
		if (panel->vbt.dsi.config->cabc_supported)
		if (panel->vbt.dsi.config->cabc_supported)
@@ -1609,11 +1611,11 @@ static void parse_dsi_backlight_ports(struct drm_i915_private *i915,
		panel->vbt.dsi.bl_ports = BIT(PORT_A);
		panel->vbt.dsi.bl_ports = BIT(PORT_A);
		break;
		break;
	case DL_DCS_PORT_C:
	case DL_DCS_PORT_C:
		panel->vbt.dsi.bl_ports = BIT(PORT_C);
		panel->vbt.dsi.bl_ports = BIT(port_bc);
		break;
		break;
	default:
	default:
	case DL_DCS_PORT_A_AND_C:
	case DL_DCS_PORT_A_AND_C:
		panel->vbt.dsi.bl_ports = BIT(PORT_A) | BIT(PORT_C);
		panel->vbt.dsi.bl_ports = BIT(PORT_A) | BIT(port_bc);
		break;
		break;
	}
	}


@@ -1625,12 +1627,12 @@ static void parse_dsi_backlight_ports(struct drm_i915_private *i915,
		panel->vbt.dsi.cabc_ports = BIT(PORT_A);
		panel->vbt.dsi.cabc_ports = BIT(PORT_A);
		break;
		break;
	case DL_DCS_PORT_C:
	case DL_DCS_PORT_C:
		panel->vbt.dsi.cabc_ports = BIT(PORT_C);
		panel->vbt.dsi.cabc_ports = BIT(port_bc);
		break;
		break;
	default:
	default:
	case DL_DCS_PORT_A_AND_C:
	case DL_DCS_PORT_A_AND_C:
		panel->vbt.dsi.cabc_ports =
		panel->vbt.dsi.cabc_ports =
					BIT(PORT_A) | BIT(PORT_C);
					BIT(PORT_A) | BIT(port_bc);
		break;
		break;
	}
	}
}
}
+0 −2
Original line number Original line Diff line number Diff line
@@ -5293,8 +5293,6 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,


	intel_panel_init(intel_connector);
	intel_panel_init(intel_connector);


	if (!(dev_priv->quirks & QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK))
		intel_connector->panel.backlight.power = intel_pps_backlight_power;
	intel_backlight_setup(intel_connector, pipe);
	intel_backlight_setup(intel_connector, pipe);


	intel_edp_add_properties(intel_dp);
	intel_edp_add_properties(intel_dp);
+7 −0
Original line number Original line Diff line number Diff line
@@ -1933,7 +1933,14 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
	else
	else
		intel_dsi->ports = BIT(port);
		intel_dsi->ports = BIT(port);


	if (drm_WARN_ON(&dev_priv->drm, intel_connector->panel.vbt.dsi.bl_ports & ~intel_dsi->ports))
		intel_connector->panel.vbt.dsi.bl_ports &= intel_dsi->ports;

	intel_dsi->dcs_backlight_ports = intel_connector->panel.vbt.dsi.bl_ports;
	intel_dsi->dcs_backlight_ports = intel_connector->panel.vbt.dsi.bl_ports;

	if (drm_WARN_ON(&dev_priv->drm, intel_connector->panel.vbt.dsi.cabc_ports & ~intel_dsi->ports))
		intel_connector->panel.vbt.dsi.cabc_ports &= intel_dsi->ports;

	intel_dsi->dcs_cabc_ports = intel_connector->panel.vbt.dsi.cabc_ports;
	intel_dsi->dcs_cabc_ports = intel_connector->panel.vbt.dsi.cabc_ports;


	/* Create a DSI host (and a device) for each port. */
	/* Create a DSI host (and a device) for each port. */
Loading