|
@@ -543,25 +543,6 @@ static u32 pwm_get_backlight(struct intel_connector *connector)
|
|
return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS);
|
|
return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS);
|
|
}
|
|
}
|
|
|
|
|
|
-static u32 intel_panel_get_backlight(struct intel_connector *connector)
|
|
|
|
-{
|
|
|
|
- struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
|
|
|
|
- struct intel_panel *panel = &connector->panel;
|
|
|
|
- u32 val = 0;
|
|
|
|
-
|
|
|
|
- mutex_lock(&dev_priv->backlight_lock);
|
|
|
|
-
|
|
|
|
- if (panel->backlight.enabled) {
|
|
|
|
- val = panel->backlight.get(connector);
|
|
|
|
- val = intel_panel_compute_brightness(connector, val);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- mutex_unlock(&dev_priv->backlight_lock);
|
|
|
|
-
|
|
|
|
- DRM_DEBUG_DRIVER("get backlight PWM = %d\n", val);
|
|
|
|
- return val;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static void lpt_set_backlight(const struct drm_connector_state *conn_state, u32 level)
|
|
static void lpt_set_backlight(const struct drm_connector_state *conn_state, u32 level)
|
|
{
|
|
{
|
|
struct intel_connector *connector = to_intel_connector(conn_state->connector);
|
|
struct intel_connector *connector = to_intel_connector(conn_state->connector);
|
|
@@ -649,31 +630,6 @@ intel_panel_actually_set_backlight(const struct drm_connector_state *conn_state,
|
|
panel->backlight.set(conn_state, level);
|
|
panel->backlight.set(conn_state, level);
|
|
}
|
|
}
|
|
|
|
|
|
-/* set backlight brightness to level in range [0..max], scaling wrt hw min */
|
|
|
|
-static void intel_panel_set_backlight(const struct drm_connector_state *conn_state,
|
|
|
|
- u32 user_level, u32 user_max)
|
|
|
|
-{
|
|
|
|
- struct intel_connector *connector = to_intel_connector(conn_state->connector);
|
|
|
|
- struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
|
|
|
|
- struct intel_panel *panel = &connector->panel;
|
|
|
|
- u32 hw_level;
|
|
|
|
-
|
|
|
|
- if (!panel->backlight.present)
|
|
|
|
- return;
|
|
|
|
-
|
|
|
|
- mutex_lock(&dev_priv->backlight_lock);
|
|
|
|
-
|
|
|
|
- WARN_ON(panel->backlight.max == 0);
|
|
|
|
-
|
|
|
|
- hw_level = scale_user_to_hw(connector, user_level, user_max);
|
|
|
|
- panel->backlight.level = hw_level;
|
|
|
|
-
|
|
|
|
- if (panel->backlight.enabled)
|
|
|
|
- intel_panel_actually_set_backlight(conn_state, hw_level);
|
|
|
|
-
|
|
|
|
- mutex_unlock(&dev_priv->backlight_lock);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
/* set backlight brightness to level in range [0..max], assuming hw min is
|
|
/* set backlight brightness to level in range [0..max], assuming hw min is
|
|
* respected.
|
|
* respected.
|
|
*/
|
|
*/
|
|
@@ -1182,6 +1138,50 @@ void intel_panel_enable_backlight(const struct intel_crtc_state *crtc_state,
|
|
}
|
|
}
|
|
|
|
|
|
#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE)
|
|
#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE)
|
|
|
|
+static u32 intel_panel_get_backlight(struct intel_connector *connector)
|
|
|
|
+{
|
|
|
|
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
|
|
|
|
+ struct intel_panel *panel = &connector->panel;
|
|
|
|
+ u32 val = 0;
|
|
|
|
+
|
|
|
|
+ mutex_lock(&dev_priv->backlight_lock);
|
|
|
|
+
|
|
|
|
+ if (panel->backlight.enabled) {
|
|
|
|
+ val = panel->backlight.get(connector);
|
|
|
|
+ val = intel_panel_compute_brightness(connector, val);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ mutex_unlock(&dev_priv->backlight_lock);
|
|
|
|
+
|
|
|
|
+ DRM_DEBUG_DRIVER("get backlight PWM = %d\n", val);
|
|
|
|
+ return val;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* set backlight brightness to level in range [0..max], scaling wrt hw min */
|
|
|
|
+static void intel_panel_set_backlight(const struct drm_connector_state *conn_state,
|
|
|
|
+ u32 user_level, u32 user_max)
|
|
|
|
+{
|
|
|
|
+ struct intel_connector *connector = to_intel_connector(conn_state->connector);
|
|
|
|
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
|
|
|
|
+ struct intel_panel *panel = &connector->panel;
|
|
|
|
+ u32 hw_level;
|
|
|
|
+
|
|
|
|
+ if (!panel->backlight.present)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ mutex_lock(&dev_priv->backlight_lock);
|
|
|
|
+
|
|
|
|
+ WARN_ON(panel->backlight.max == 0);
|
|
|
|
+
|
|
|
|
+ hw_level = scale_user_to_hw(connector, user_level, user_max);
|
|
|
|
+ panel->backlight.level = hw_level;
|
|
|
|
+
|
|
|
|
+ if (panel->backlight.enabled)
|
|
|
|
+ intel_panel_actually_set_backlight(conn_state, hw_level);
|
|
|
|
+
|
|
|
|
+ mutex_unlock(&dev_priv->backlight_lock);
|
|
|
|
+}
|
|
|
|
+
|
|
static int intel_backlight_device_update_status(struct backlight_device *bd)
|
|
static int intel_backlight_device_update_status(struct backlight_device *bd)
|
|
{
|
|
{
|
|
struct intel_connector *connector = bl_get_data(bd);
|
|
struct intel_connector *connector = bl_get_data(bd);
|