Commit 5ccf2027 authored by Lee Shawn C's avatar Lee Shawn C Committed by Jani Nikula
Browse files

drm/i915: Check backlight type while doing eDP backlight initializaiton



If LFP backlight type setting from VBT was "VESA eDP AUX Interface".
Driver should check panel capability and try to initialize aux backlight.
No matter i915_modparams.enable_dpcd_backlight was enabled or not.

v2: access dev_priv->vbt.backlight.type directly and remove unused function.
v3: 1. Modify i915.enable_dpcd_backlight type from bool to int and give default
       value as 0 (disable).
    2. Add a judgement to check LFP backlight type was aux interface or not.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Jose Roberto de Souza <jose.souza@intel.com>
Cc: Cooper Chiou <cooper.chiou@intel.com>

Signed-off-by: default avatarLee Shawn C <shawn.c.lee@intel.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/1561045456-12171-1-git-send-email-shawn.c.lee@intel.com
parent 93d7a3b4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ enum intel_backlight_type {
	INTEL_BACKLIGHT_DISPLAY_DDI,
	INTEL_BACKLIGHT_DSI_DCS,
	INTEL_BACKLIGHT_PANEL_DRIVER_INTERFACE,
	INTEL_BACKLIGHT_VESA_EDP_AUX_INTERFACE,
};

struct edp_power_seq {
+4 −1
Original line number Diff line number Diff line
@@ -264,8 +264,11 @@ intel_dp_aux_display_control_capable(struct intel_connector *connector)
int intel_dp_aux_init_backlight_funcs(struct intel_connector *intel_connector)
{
	struct intel_panel *panel = &intel_connector->panel;
	struct drm_i915_private *dev_priv = to_i915(intel_connector->base.dev);

	if (!i915_modparams.enable_dpcd_backlight)
	if (i915_modparams.enable_dpcd_backlight == 0 ||
	    (i915_modparams.enable_dpcd_backlight == -1 &&
	    dev_priv->vbt.backlight.type != INTEL_BACKLIGHT_VESA_EDP_AUX_INTERFACE))
		return -ENODEV;

	if (!intel_dp_aux_display_control_capable(intel_connector))
+3 −2
Original line number Diff line number Diff line
@@ -169,8 +169,9 @@ i915_param_named_unsafe(inject_load_failure, uint, 0400,
	"Force an error after a number of failure check points (0:disabled (default), N:force failure at the Nth failure check point)");
#endif

i915_param_named(enable_dpcd_backlight, bool, 0600,
	"Enable support for DPCD backlight control (default:false)");
i915_param_named(enable_dpcd_backlight, int, 0600,
	"Enable support for DPCD backlight control"
	"(-1=use per-VBT LFP backlight type setting, 0=disabled [default], 1=enabled)");

#if IS_ENABLED(CONFIG_DRM_I915_GVT)
i915_param_named(enable_gvt, bool, 0400,
+1 −1
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ struct drm_printer;
	param(int, reset, 2) \
	param(unsigned int, inject_load_failure, 0) \
	param(int, fastboot, -1) \
	param(int, enable_dpcd_backlight, 0) \
	param(char *, force_probe, CONFIG_DRM_I915_FORCE_PROBE) \
	/* leave bools at the end to not create holes */ \
	param(bool, alpha_support, IS_ENABLED(CONFIG_DRM_I915_ALPHA_SUPPORT)) \
@@ -76,7 +77,6 @@ struct drm_printer;
	param(bool, verbose_state_checks, true) \
	param(bool, nuclear_pageflip, false) \
	param(bool, enable_dp_mst, true) \
	param(bool, enable_dpcd_backlight, false) \
	param(bool, enable_gvt, false)

#define MEMBER(T, member, ...) T member;