mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-21 04:53:46 -04:00
drm/dp: Modify drm_edp_probe_state
Modify drm_edp_probe_state to read current level from DP_EDP_PANEL_TARGET_LUMINANCE_VALUE. We divide it by 1000 since the value in this register is in millinits. --v2 -Add comment on the unit sent back [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-7-suraj.kandpal@intel.com
This commit is contained in:
@@ -4193,7 +4193,7 @@ drm_edp_backlight_probe_state(struct drm_dp_aux *aux, struct drm_edp_backlight_i
|
||||
u8 *current_mode)
|
||||
{
|
||||
int ret;
|
||||
u8 buf[2];
|
||||
u8 buf[3];
|
||||
u8 mode_reg;
|
||||
|
||||
ret = drm_dp_dpcd_read_byte(aux, DP_EDP_BACKLIGHT_MODE_SET_REGISTER, &mode_reg);
|
||||
@@ -4210,17 +4210,37 @@ drm_edp_backlight_probe_state(struct drm_dp_aux *aux, struct drm_edp_backlight_i
|
||||
if (*current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
|
||||
int size = 1 + bl->lsb_reg_used;
|
||||
|
||||
ret = drm_dp_dpcd_read_data(aux, DP_EDP_BACKLIGHT_BRIGHTNESS_MSB, buf, size);
|
||||
if (ret < 0) {
|
||||
drm_dbg_kms(aux->drm_dev, "%s: Failed to read backlight level: %d\n",
|
||||
aux->name, ret);
|
||||
return ret;
|
||||
if (bl->luminance_set) {
|
||||
ret = drm_dp_dpcd_read_data(aux, DP_EDP_PANEL_TARGET_LUMINANCE_VALUE,
|
||||
buf, sizeof(buf));
|
||||
if (ret < 0) {
|
||||
drm_dbg_kms(aux->drm_dev,
|
||||
"%s: Failed to read backlight level: %d\n",
|
||||
aux->name, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (bl->lsb_reg_used)
|
||||
return (buf[0] << 8) | buf[1];
|
||||
else
|
||||
return buf[0];
|
||||
/*
|
||||
* Incase luminance is set we want to send the value back in nits but since
|
||||
* DP_EDP_PANEL_TARGET_LUMINANCE stores values in millinits we need to divide
|
||||
* by 1000.
|
||||
*/
|
||||
return (buf[0] | buf[1] << 8 | buf[2] << 16) / 1000;
|
||||
} else {
|
||||
ret = drm_dp_dpcd_read_data(aux, DP_EDP_BACKLIGHT_BRIGHTNESS_MSB,
|
||||
buf, size);
|
||||
if (ret < 0) {
|
||||
drm_dbg_kms(aux->drm_dev,
|
||||
"%s: Failed to read backlight level: %d\n",
|
||||
aux->name, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (bl->lsb_reg_used)
|
||||
return (buf[0] << 8) | buf[1];
|
||||
else
|
||||
return buf[0];
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user