mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	drm/i915/backlight: Use drm helper to initialize edp backlight
Now that drm_edp_backlight init has been modified to take into account the setup of lumininace based brightness manipulation we can just use that. --v2 -Fix commit message [Arun] Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com> Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com> Link: https://lore.kernel.org/r/20250620063445.3603086-12-suraj.kandpal@intel.com
This commit is contained in:
		
							parent
							
								
									ba02bf8e86
								
							
						
					
					
						commit
						e13af5166a
					
				
					 1 changed files with 49 additions and 51 deletions
				
			
		| 
						 | 
				
			
			@ -584,9 +584,37 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
 | 
			
		|||
	u8 current_mode;
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	if (panel->backlight.edp.vesa.luminance_control_support) {
 | 
			
		||||
	ret = drm_edp_backlight_init(&intel_dp->aux, &panel->backlight.edp.vesa.info,
 | 
			
		||||
				     luminance_range->max_luminance,
 | 
			
		||||
				     panel->vbt.backlight.pwm_freq_hz,
 | 
			
		||||
				     intel_dp->edp_dpcd, ¤t_level, ¤t_mode,
 | 
			
		||||
				     false);
 | 
			
		||||
	if (ret < 0)
 | 
			
		||||
		return ret;
 | 
			
		||||
 | 
			
		||||
	drm_dbg_kms(display->drm,
 | 
			
		||||
		    "[CONNECTOR:%d:%s] AUX VESA backlight enable is controlled through %s\n",
 | 
			
		||||
		    connector->base.base.id, connector->base.name,
 | 
			
		||||
		    dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_enable));
 | 
			
		||||
	drm_dbg_kms(display->drm,
 | 
			
		||||
		    "[CONNECTOR:%d:%s] AUX VESA backlight level is controlled through %s\n",
 | 
			
		||||
		    connector->base.base.id, connector->base.name,
 | 
			
		||||
		    dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_set));
 | 
			
		||||
 | 
			
		||||
	if (!panel->backlight.edp.vesa.info.aux_set ||
 | 
			
		||||
	    !panel->backlight.edp.vesa.info.aux_enable) {
 | 
			
		||||
		ret = panel->backlight.pwm_funcs->setup(connector, pipe);
 | 
			
		||||
		if (ret < 0) {
 | 
			
		||||
			drm_err(display->drm,
 | 
			
		||||
				"[CONNECTOR:%d:%s] Failed to setup PWM backlight controls for eDP backlight: %d\n",
 | 
			
		||||
				connector->base.base.id, connector->base.name, ret);
 | 
			
		||||
			return ret;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (panel->backlight.edp.vesa.info.luminance_set) {
 | 
			
		||||
		if (luminance_range->max_luminance) {
 | 
			
		||||
			panel->backlight.max = luminance_range->max_luminance;
 | 
			
		||||
			panel->backlight.max = panel->backlight.edp.vesa.info.max;
 | 
			
		||||
			panel->backlight.min = luminance_range->min_luminance;
 | 
			
		||||
		} else {
 | 
			
		||||
			panel->backlight.max = 512;
 | 
			
		||||
| 
						 | 
				
			
			@ -597,56 +625,26 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
 | 
			
		|||
		drm_dbg_kms(display->drm,
 | 
			
		||||
			    "[CONNECTOR:%d:%s] AUX VESA Nits backlight level is controlled through DPCD\n",
 | 
			
		||||
			    connector->base.base.id, connector->base.name);
 | 
			
		||||
	} else {
 | 
			
		||||
		ret = drm_edp_backlight_init(&intel_dp->aux, &panel->backlight.edp.vesa.info,
 | 
			
		||||
					     luminance_range->max_luminance,
 | 
			
		||||
					     panel->vbt.backlight.pwm_freq_hz,
 | 
			
		||||
					     intel_dp->edp_dpcd, ¤t_level, ¤t_mode,
 | 
			
		||||
					     false);
 | 
			
		||||
		if (ret < 0)
 | 
			
		||||
			return ret;
 | 
			
		||||
 | 
			
		||||
		drm_dbg_kms(display->drm,
 | 
			
		||||
			    "[CONNECTOR:%d:%s] AUX VESA backlight enable is controlled through %s\n",
 | 
			
		||||
			    connector->base.base.id, connector->base.name,
 | 
			
		||||
			    dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_enable));
 | 
			
		||||
		drm_dbg_kms(display->drm,
 | 
			
		||||
			    "[CONNECTOR:%d:%s] AUX VESA backlight level is controlled through %s\n",
 | 
			
		||||
			    connector->base.base.id, connector->base.name,
 | 
			
		||||
			    dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_set));
 | 
			
		||||
 | 
			
		||||
		if (!panel->backlight.edp.vesa.info.aux_set ||
 | 
			
		||||
		    !panel->backlight.edp.vesa.info.aux_enable) {
 | 
			
		||||
			ret = panel->backlight.pwm_funcs->setup(connector, pipe);
 | 
			
		||||
			if (ret < 0) {
 | 
			
		||||
				drm_err(display->drm,
 | 
			
		||||
					"[CONNECTOR:%d:%s] Failed to setup PWM backlight controls for eDP backlight: %d\n",
 | 
			
		||||
					connector->base.base.id, connector->base.name, ret);
 | 
			
		||||
				return ret;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (panel->backlight.edp.vesa.info.aux_set) {
 | 
			
		||||
			panel->backlight.max = panel->backlight.edp.vesa.info.max;
 | 
			
		||||
			panel->backlight.min = 0;
 | 
			
		||||
			if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
 | 
			
		||||
				panel->backlight.level = current_level;
 | 
			
		||||
				panel->backlight.enabled = panel->backlight.level != 0;
 | 
			
		||||
			} else {
 | 
			
		||||
				panel->backlight.level = panel->backlight.max;
 | 
			
		||||
				panel->backlight.enabled = false;
 | 
			
		||||
			}
 | 
			
		||||
	} else if (panel->backlight.edp.vesa.info.aux_set) {
 | 
			
		||||
		panel->backlight.max = panel->backlight.edp.vesa.info.max;
 | 
			
		||||
		panel->backlight.min = 0;
 | 
			
		||||
		if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
 | 
			
		||||
			panel->backlight.level = current_level;
 | 
			
		||||
			panel->backlight.enabled = panel->backlight.level != 0;
 | 
			
		||||
		} else {
 | 
			
		||||
			panel->backlight.max = panel->backlight.pwm_level_max;
 | 
			
		||||
			panel->backlight.min = panel->backlight.pwm_level_min;
 | 
			
		||||
			if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_PWM) {
 | 
			
		||||
				panel->backlight.level =
 | 
			
		||||
					panel->backlight.pwm_funcs->get(connector, pipe);
 | 
			
		||||
				panel->backlight.enabled = panel->backlight.pwm_enabled;
 | 
			
		||||
			} else {
 | 
			
		||||
				panel->backlight.level = panel->backlight.max;
 | 
			
		||||
				panel->backlight.enabled = false;
 | 
			
		||||
			}
 | 
			
		||||
			panel->backlight.level = panel->backlight.max;
 | 
			
		||||
			panel->backlight.enabled = false;
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		panel->backlight.max = panel->backlight.pwm_level_max;
 | 
			
		||||
		panel->backlight.min = panel->backlight.pwm_level_min;
 | 
			
		||||
		if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_PWM) {
 | 
			
		||||
			panel->backlight.level =
 | 
			
		||||
				panel->backlight.pwm_funcs->get(connector, pipe);
 | 
			
		||||
			panel->backlight.enabled = panel->backlight.pwm_enabled;
 | 
			
		||||
		} else {
 | 
			
		||||
			panel->backlight.level = panel->backlight.max;
 | 
			
		||||
			panel->backlight.enabled = false;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue