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;
 | 
						u8 current_mode;
 | 
				
			||||||
	int ret;
 | 
						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) {
 | 
							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;
 | 
								panel->backlight.min = luminance_range->min_luminance;
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			panel->backlight.max = 512;
 | 
								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,
 | 
							drm_dbg_kms(display->drm,
 | 
				
			||||||
			    "[CONNECTOR:%d:%s] AUX VESA Nits backlight level is controlled through DPCD\n",
 | 
								    "[CONNECTOR:%d:%s] AUX VESA Nits backlight level is controlled through DPCD\n",
 | 
				
			||||||
			    connector->base.base.id, connector->base.name);
 | 
								    connector->base.base.id, connector->base.name);
 | 
				
			||||||
	} else {
 | 
						} else if (panel->backlight.edp.vesa.info.aux_set) {
 | 
				
			||||||
		ret = drm_edp_backlight_init(&intel_dp->aux, &panel->backlight.edp.vesa.info,
 | 
							panel->backlight.max = panel->backlight.edp.vesa.info.max;
 | 
				
			||||||
					     luminance_range->max_luminance,
 | 
							panel->backlight.min = 0;
 | 
				
			||||||
					     panel->vbt.backlight.pwm_freq_hz,
 | 
							if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
 | 
				
			||||||
					     intel_dp->edp_dpcd, ¤t_level, ¤t_mode,
 | 
								panel->backlight.level = current_level;
 | 
				
			||||||
					     false);
 | 
								panel->backlight.enabled = panel->backlight.level != 0;
 | 
				
			||||||
		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 {
 | 
							} else {
 | 
				
			||||||
			panel->backlight.max = panel->backlight.pwm_level_max;
 | 
								panel->backlight.level = panel->backlight.max;
 | 
				
			||||||
			panel->backlight.min = panel->backlight.pwm_level_min;
 | 
								panel->backlight.enabled = false;
 | 
				
			||||||
			if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_PWM) {
 | 
							}
 | 
				
			||||||
				panel->backlight.level =
 | 
						} else {
 | 
				
			||||||
					panel->backlight.pwm_funcs->get(connector, pipe);
 | 
							panel->backlight.max = panel->backlight.pwm_level_max;
 | 
				
			||||||
				panel->backlight.enabled = panel->backlight.pwm_enabled;
 | 
							panel->backlight.min = panel->backlight.pwm_level_min;
 | 
				
			||||||
			} else {
 | 
							if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_PWM) {
 | 
				
			||||||
				panel->backlight.level = panel->backlight.max;
 | 
								panel->backlight.level =
 | 
				
			||||||
				panel->backlight.enabled = false;
 | 
									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