summarylogtreecommitdiffstats
path: root/0004-drm-i915-Pass-down-brightness-values-to-enable-disab.patch
diff options
context:
space:
mode:
authorVasily Khoruzhick2021-01-11 22:10:11 -0800
committerVasily Khoruzhick2021-01-11 22:10:11 -0800
commitea392e3c4019317f897e29fc9404f50205a341f4 (patch)
tree02762ebe39b074894245a10b69fa0e6b99113ca3 /0004-drm-i915-Pass-down-brightness-values-to-enable-disab.patch
parentb09b02546d3f89f0eac5e468c4a58a61006dbb5d (diff)
downloadaur-ea392e3c4019317f897e29fc9404f50205a341f4.tar.gz
Update to 5.10.6
Update patches to v5 version from Lyude
Diffstat (limited to '0004-drm-i915-Pass-down-brightness-values-to-enable-disab.patch')
-rw-r--r--0004-drm-i915-Pass-down-brightness-values-to-enable-disab.patch368
1 files changed, 368 insertions, 0 deletions
diff --git a/0004-drm-i915-Pass-down-brightness-values-to-enable-disab.patch b/0004-drm-i915-Pass-down-brightness-values-to-enable-disab.patch
new file mode 100644
index 000000000000..c2c7dd9b617b
--- /dev/null
+++ b/0004-drm-i915-Pass-down-brightness-values-to-enable-disab.patch
@@ -0,0 +1,368 @@
+From 2fcd9b2dd0fe45c7233dd8a08f33de5996a8ce9f Mon Sep 17 00:00:00 2001
+From: Lyude Paul <lyude@redhat.com>
+Date: Fri, 4 Dec 2020 17:35:57 -0500
+Subject: [PATCH 04/10] drm/i915: Pass down brightness values to enable/disable
+ backlight callbacks
+
+Instead of using intel_panel->backlight.level, have the caller provide us
+with the current panel backlight value. We'll need this for when we
+separate PWM-related backlight callbacks from other means of backlight
+control (like DPCD backlight controls), as the caller of each PWM callback
+will be responsible for converting the current brightness value to it's
+respective PWM level.
+
+Signed-off-by: Lyude Paul <lyude@redhat.com>
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+Link: https://patchwork.freedesktop.org/patch/msgid/20201204223603.249878-4-lyude@redhat.com
+---
+ .../drm/i915/display/intel_display_types.h | 4 +-
+ .../drm/i915/display/intel_dp_aux_backlight.c | 8 +--
+ .../i915/display/intel_dsi_dcs_backlight.c | 7 +-
+ drivers/gpu/drm/i915/display/intel_panel.c | 67 +++++++++----------
+ 4 files changed, 42 insertions(+), 44 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
+index 0e5d158f1691..6dd8f26ec3c9 100644
+--- a/drivers/gpu/drm/i915/display/intel_display_types.h
++++ b/drivers/gpu/drm/i915/display/intel_display_types.h
+@@ -210,9 +210,9 @@ struct intel_panel_bl_funcs {
+ int (*setup)(struct intel_connector *connector, enum pipe pipe);
+ u32 (*get)(struct intel_connector *connector);
+ void (*set)(const struct drm_connector_state *conn_state, u32 level);
+- void (*disable)(const struct drm_connector_state *conn_state);
++ void (*disable)(const struct drm_connector_state *conn_state, u32 level);
+ void (*enable)(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state);
++ const struct drm_connector_state *conn_state, u32 level);
+ u32 (*hz_to_pwm)(struct intel_connector *connector, u32 hz);
+ };
+
+diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+index b2f713e7da6b..a735e0f600ec 100644
+--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
++++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+@@ -174,7 +174,7 @@ static bool intel_dp_aux_set_pwm_freq(struct intel_connector *connector)
+ }
+
+ static void intel_dp_aux_enable_backlight(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state)
++ const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(conn_state->connector);
+ struct intel_dp *intel_dp = intel_attached_dp(connector);
+@@ -225,12 +225,12 @@ static void intel_dp_aux_enable_backlight(const struct intel_crtc_state *crtc_st
+ }
+ }
+
+- intel_dp_aux_set_backlight(conn_state,
+- connector->panel.backlight.level);
++ intel_dp_aux_set_backlight(conn_state, level);
+ set_aux_backlight_enable(intel_dp, true);
+ }
+
+-static void intel_dp_aux_disable_backlight(const struct drm_connector_state *old_conn_state)
++static void intel_dp_aux_disable_backlight(const struct drm_connector_state *old_conn_state,
++ u32 level)
+ {
+ set_aux_backlight_enable(enc_to_intel_dp(to_intel_encoder(old_conn_state->best_encoder)),
+ false);
+diff --git a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c
+index 5c508d51f526..88628764956d 100644
+--- a/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c
++++ b/drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.c
+@@ -77,7 +77,7 @@ static void dcs_set_backlight(const struct drm_connector_state *conn_state, u32
+ }
+ }
+
+-static void dcs_disable_backlight(const struct drm_connector_state *conn_state)
++static void dcs_disable_backlight(const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_dsi *intel_dsi = enc_to_intel_dsi(to_intel_encoder(conn_state->best_encoder));
+ struct mipi_dsi_device *dsi_device;
+@@ -111,10 +111,9 @@ static void dcs_disable_backlight(const struct drm_connector_state *conn_state)
+ }
+
+ static void dcs_enable_backlight(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state)
++ const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_dsi *intel_dsi = enc_to_intel_dsi(to_intel_encoder(conn_state->best_encoder));
+- struct intel_panel *panel = &to_intel_connector(conn_state->connector)->panel;
+ struct mipi_dsi_device *dsi_device;
+ enum port port;
+
+@@ -142,7 +141,7 @@ static void dcs_enable_backlight(const struct intel_crtc_state *crtc_state,
+ &cabc, sizeof(cabc));
+ }
+
+- dcs_set_backlight(conn_state, panel->backlight.level);
++ dcs_set_backlight(conn_state, level);
+ }
+
+ static int dcs_setup_backlight(struct intel_connector *connector,
+diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
+index da8f7c12ae22..67f81ae995c4 100644
+--- a/drivers/gpu/drm/i915/display/intel_panel.c
++++ b/drivers/gpu/drm/i915/display/intel_panel.c
+@@ -726,13 +726,13 @@ void intel_panel_set_backlight_acpi(const struct drm_connector_state *conn_state
+ mutex_unlock(&dev_priv->backlight_lock);
+ }
+
+-static void lpt_disable_backlight(const struct drm_connector_state *old_conn_state)
++static void lpt_disable_backlight(const struct drm_connector_state *old_conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(old_conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+ u32 tmp;
+
+- intel_panel_actually_set_backlight(old_conn_state, 0);
++ intel_panel_actually_set_backlight(old_conn_state, level);
+
+ /*
+ * Although we don't support or enable CPU PWM with LPT/SPT based
+@@ -754,13 +754,13 @@ static void lpt_disable_backlight(const struct drm_connector_state *old_conn_sta
+ intel_de_write(dev_priv, BLC_PWM_PCH_CTL1, tmp & ~BLM_PCH_PWM_ENABLE);
+ }
+
+-static void pch_disable_backlight(const struct drm_connector_state *old_conn_state)
++static void pch_disable_backlight(const struct drm_connector_state *old_conn_state, u32 val)
+ {
+ struct intel_connector *connector = to_intel_connector(old_conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+ u32 tmp;
+
+- intel_panel_actually_set_backlight(old_conn_state, 0);
++ intel_panel_actually_set_backlight(old_conn_state, val);
+
+ tmp = intel_de_read(dev_priv, BLC_PWM_CPU_CTL2);
+ intel_de_write(dev_priv, BLC_PWM_CPU_CTL2, tmp & ~BLM_PWM_ENABLE);
+@@ -769,44 +769,44 @@ static void pch_disable_backlight(const struct drm_connector_state *old_conn_sta
+ intel_de_write(dev_priv, BLC_PWM_PCH_CTL1, tmp & ~BLM_PCH_PWM_ENABLE);
+ }
+
+-static void i9xx_disable_backlight(const struct drm_connector_state *old_conn_state)
++static void i9xx_disable_backlight(const struct drm_connector_state *old_conn_state, u32 val)
+ {
+- intel_panel_actually_set_backlight(old_conn_state, 0);
++ intel_panel_actually_set_backlight(old_conn_state, val);
+ }
+
+-static void i965_disable_backlight(const struct drm_connector_state *old_conn_state)
++static void i965_disable_backlight(const struct drm_connector_state *old_conn_state, u32 val)
+ {
+ struct drm_i915_private *dev_priv = to_i915(old_conn_state->connector->dev);
+ u32 tmp;
+
+- intel_panel_actually_set_backlight(old_conn_state, 0);
++ intel_panel_actually_set_backlight(old_conn_state, val);
+
+ tmp = intel_de_read(dev_priv, BLC_PWM_CTL2);
+ intel_de_write(dev_priv, BLC_PWM_CTL2, tmp & ~BLM_PWM_ENABLE);
+ }
+
+-static void vlv_disable_backlight(const struct drm_connector_state *old_conn_state)
++static void vlv_disable_backlight(const struct drm_connector_state *old_conn_state, u32 val)
+ {
+ struct intel_connector *connector = to_intel_connector(old_conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+ enum pipe pipe = to_intel_crtc(old_conn_state->crtc)->pipe;
+ u32 tmp;
+
+- intel_panel_actually_set_backlight(old_conn_state, 0);
++ intel_panel_actually_set_backlight(old_conn_state, val);
+
+ tmp = intel_de_read(dev_priv, VLV_BLC_PWM_CTL2(pipe));
+ intel_de_write(dev_priv, VLV_BLC_PWM_CTL2(pipe),
+ tmp & ~BLM_PWM_ENABLE);
+ }
+
+-static void bxt_disable_backlight(const struct drm_connector_state *old_conn_state)
++static void bxt_disable_backlight(const struct drm_connector_state *old_conn_state, u32 val)
+ {
+ struct intel_connector *connector = to_intel_connector(old_conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+ struct intel_panel *panel = &connector->panel;
+- u32 tmp, val;
++ u32 tmp;
+
+- intel_panel_actually_set_backlight(old_conn_state, 0);
++ intel_panel_actually_set_backlight(old_conn_state, val);
+
+ tmp = intel_de_read(dev_priv,
+ BXT_BLC_PWM_CTL(panel->backlight.controller));
+@@ -820,14 +820,14 @@ static void bxt_disable_backlight(const struct drm_connector_state *old_conn_sta
+ }
+ }
+
+-static void cnp_disable_backlight(const struct drm_connector_state *old_conn_state)
++static void cnp_disable_backlight(const struct drm_connector_state *old_conn_state, u32 val)
+ {
+ struct intel_connector *connector = to_intel_connector(old_conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+ struct intel_panel *panel = &connector->panel;
+ u32 tmp;
+
+- intel_panel_actually_set_backlight(old_conn_state, 0);
++ intel_panel_actually_set_backlight(old_conn_state, val);
+
+ tmp = intel_de_read(dev_priv,
+ BXT_BLC_PWM_CTL(panel->backlight.controller));
+@@ -835,7 +835,7 @@ static void cnp_disable_backlight(const struct drm_connector_state *old_conn_sta
+ tmp & ~BXT_BLC_PWM_ENABLE);
+ }
+
+-static void ext_pwm_disable_backlight(const struct drm_connector_state *old_conn_state)
++static void ext_pwm_disable_backlight(const struct drm_connector_state *old_conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(old_conn_state->connector);
+ struct intel_panel *panel = &connector->panel;
+@@ -870,13 +870,13 @@ void intel_panel_disable_backlight(const struct drm_connector_state *old_conn_st
+ if (panel->backlight.device)
+ panel->backlight.device->props.power = FB_BLANK_POWERDOWN;
+ panel->backlight.enabled = false;
+- panel->backlight.funcs->disable(old_conn_state);
++ panel->backlight.funcs->disable(old_conn_state, 0);
+
+ mutex_unlock(&dev_priv->backlight_lock);
+ }
+
+ static void lpt_enable_backlight(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state)
++ const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+@@ -923,11 +923,11 @@ static void lpt_enable_backlight(const struct intel_crtc_state *crtc_state,
+ pch_ctl1 | BLM_PCH_PWM_ENABLE);
+
+ /* This won't stick until the above enable. */
+- intel_panel_actually_set_backlight(conn_state, panel->backlight.level);
++ intel_panel_actually_set_backlight(conn_state, level);
+ }
+
+ static void pch_enable_backlight(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state)
++ const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+@@ -958,7 +958,7 @@ static void pch_enable_backlight(const struct intel_crtc_state *crtc_state,
+ intel_de_write(dev_priv, BLC_PWM_CPU_CTL2, cpu_ctl2 | BLM_PWM_ENABLE);
+
+ /* This won't stick until the above enable. */
+- intel_panel_actually_set_backlight(conn_state, panel->backlight.level);
++ intel_panel_actually_set_backlight(conn_state, level);
+
+ pch_ctl2 = panel->backlight.max << 16;
+ intel_de_write(dev_priv, BLC_PWM_PCH_CTL2, pch_ctl2);
+@@ -974,7 +974,7 @@ static void pch_enable_backlight(const struct intel_crtc_state *crtc_state,
+ }
+
+ static void i9xx_enable_backlight(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state)
++ const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+@@ -1001,7 +1001,7 @@ static void i9xx_enable_backlight(const struct intel_crtc_state *crtc_state,
+ intel_de_posting_read(dev_priv, BLC_PWM_CTL);
+
+ /* XXX: combine this into above write? */
+- intel_panel_actually_set_backlight(conn_state, panel->backlight.level);
++ intel_panel_actually_set_backlight(conn_state, level);
+
+ /*
+ * Needed to enable backlight on some 855gm models. BLC_HIST_CTL is
+@@ -1013,7 +1013,7 @@ static void i9xx_enable_backlight(const struct intel_crtc_state *crtc_state,
+ }
+
+ static void i965_enable_backlight(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state)
++ const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+@@ -1044,11 +1044,11 @@ static void i965_enable_backlight(const struct intel_crtc_state *crtc_state,
+ intel_de_posting_read(dev_priv, BLC_PWM_CTL2);
+ intel_de_write(dev_priv, BLC_PWM_CTL2, ctl2 | BLM_PWM_ENABLE);
+
+- intel_panel_actually_set_backlight(conn_state, panel->backlight.level);
++ intel_panel_actually_set_backlight(conn_state, level);
+ }
+
+ static void vlv_enable_backlight(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state)
++ const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+@@ -1067,7 +1067,7 @@ static void vlv_enable_backlight(const struct intel_crtc_state *crtc_state,
+ intel_de_write(dev_priv, VLV_BLC_PWM_CTL(pipe), ctl);
+
+ /* XXX: combine this into above write? */
+- intel_panel_actually_set_backlight(conn_state, panel->backlight.level);
++ intel_panel_actually_set_backlight(conn_state, level);
+
+ ctl2 = 0;
+ if (panel->backlight.active_low_pwm)
+@@ -1079,7 +1079,7 @@ static void vlv_enable_backlight(const struct intel_crtc_state *crtc_state,
+ }
+
+ static void bxt_enable_backlight(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state)
++ const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+@@ -1118,7 +1118,7 @@ static void bxt_enable_backlight(const struct intel_crtc_state *crtc_state,
+ BXT_BLC_PWM_FREQ(panel->backlight.controller),
+ panel->backlight.max);
+
+- intel_panel_actually_set_backlight(conn_state, panel->backlight.level);
++ intel_panel_actually_set_backlight(conn_state, level);
+
+ pwm_ctl = 0;
+ if (panel->backlight.active_low_pwm)
+@@ -1133,7 +1133,7 @@ static void bxt_enable_backlight(const struct intel_crtc_state *crtc_state,
+ }
+
+ static void cnp_enable_backlight(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state)
++ const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(conn_state->connector);
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+@@ -1154,7 +1154,7 @@ static void cnp_enable_backlight(const struct intel_crtc_state *crtc_state,
+ BXT_BLC_PWM_FREQ(panel->backlight.controller),
+ panel->backlight.max);
+
+- intel_panel_actually_set_backlight(conn_state, panel->backlight.level);
++ intel_panel_actually_set_backlight(conn_state, level);
+
+ pwm_ctl = 0;
+ if (panel->backlight.active_low_pwm)
+@@ -1169,11 +1169,10 @@ static void cnp_enable_backlight(const struct intel_crtc_state *crtc_state,
+ }
+
+ static void ext_pwm_enable_backlight(const struct intel_crtc_state *crtc_state,
+- const struct drm_connector_state *conn_state)
++ const struct drm_connector_state *conn_state, u32 level)
+ {
+ struct intel_connector *connector = to_intel_connector(conn_state->connector);
+ struct intel_panel *panel = &connector->panel;
+- int level = panel->backlight.level;
+
+ level = intel_panel_compute_brightness(connector, level);
+ pwm_set_relative_duty_cycle(&panel->backlight.pwm_state, level, 100);
+@@ -1198,7 +1197,7 @@ static void __intel_panel_enable_backlight(const struct intel_crtc_state *crtc_s
+ panel->backlight.device->props.max_brightness);
+ }
+
+- panel->backlight.funcs->enable(crtc_state, conn_state);
++ panel->backlight.funcs->enable(crtc_state, conn_state, panel->backlight.level);
+ panel->backlight.enabled = true;
+ if (panel->backlight.device)
+ panel->backlight.device->props.power = FB_BLANK_UNBLANK;
+--
+2.29.2
+