Commit 9535c6a4 authored by Suraj Kandpal's avatar Suraj Kandpal
Browse files

drm/i915/backlight: Use proper interface based on eDP version



eDP is supposed to use VESA interface when using revision 1.5 and above,
use Intel interface for backlight control otherwise. Add check to
use correct interface.

Signed-off-by: default avatarSuraj Kandpal <suraj.kandpal@intel.com>
Tested-by: default avatarBen Kao <ben.kao@intel.com>
Reviewed-by: default avatarArun R Murthy <arun.r.murthy@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250206063253.2827017-4-suraj.kandpal@intel.com
parent 9ee18556
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -604,6 +604,7 @@ static const struct intel_panel_bl_funcs intel_dp_vesa_bl_funcs = {
int intel_dp_aux_init_backlight_funcs(struct intel_connector *connector)
{
	struct intel_display *display = to_intel_display(connector);
	struct intel_dp *intel_dp = intel_attached_dp(connector);
	struct drm_device *dev = connector->base.dev;
	struct intel_panel *panel = &connector->panel;
	bool try_intel_interface = false, try_vesa_interface = false;
@@ -640,6 +641,10 @@ int intel_dp_aux_init_backlight_funcs(struct intel_connector *connector)
		break;
	}

	/* For eDP 1.5 and above we are supposed to use VESA interface for brightness control */
	if (intel_dp->edp_dpcd[0] >= DP_EDP_15)
		try_vesa_interface = true;

	/*
	 * Since Intel has their own backlight control interface, the majority of machines out there
	 * using DPCD backlight controls with Intel GPUs will be using this interface as opposed to
@@ -653,7 +658,8 @@ int intel_dp_aux_init_backlight_funcs(struct intel_connector *connector)
	 * backlight interface at all. This means that the only sensible way for us to detect both
	 * interfaces is to probe for Intel's first, and VESA's second.
	 */
	if (try_intel_interface && intel_dp_aux_supports_hdr_backlight(connector)) {
	if (try_intel_interface && intel_dp_aux_supports_hdr_backlight(connector) &&
	    intel_dp->edp_dpcd[0] <= DP_EDP_14b) {
		drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Using Intel proprietary eDP backlight controls\n",
			    connector->base.base.id, connector->base.name);
		panel->backlight.funcs = &intel_dp_hdr_bl_funcs;