Lines Matching +full:period +full:- +full:scale
1 // SPDX-License-Identifier: MIT
28 * scale - scale values from one range to another
38 static u32 scale(u32 source_val, in scale() function
52 target_val = mul_u32_u32(source_val - source_min, in scale()
53 target_max - target_min); in scale()
54 target_val = DIV_ROUND_CLOSEST_ULL(target_val, source_max - source_min); in scale()
61 * Scale user_level in range [0..user_max] to [0..hw_max], clamping the result
67 struct intel_panel *panel = &connector->panel; in clamp_user_to_hw()
70 hw_level = scale(user_level, 0, user_max, 0, panel->backlight.max); in clamp_user_to_hw()
71 hw_level = clamp(hw_level, panel->backlight.min, panel->backlight.max); in clamp_user_to_hw()
76 /* Scale hw_level in range [hw_min..hw_max] to [0..user_max]. */
80 struct intel_panel *panel = &connector->panel; in scale_hw_to_user()
82 return scale(hw_level, panel->backlight.min, panel->backlight.max, in scale_hw_to_user()
89 struct intel_panel *panel = &connector->panel; in intel_backlight_invert_pwm_level()
91 drm_WARN_ON(display->drm, panel->backlight.pwm_level_max == 0); in intel_backlight_invert_pwm_level()
93 if (display->params.invert_brightness < 0) in intel_backlight_invert_pwm_level()
96 if (display->params.invert_brightness > 0 || in intel_backlight_invert_pwm_level()
98 return panel->backlight.pwm_level_max - val + panel->backlight.pwm_level_min; in intel_backlight_invert_pwm_level()
106 struct intel_connector *connector = to_intel_connector(conn_state->connector); in intel_backlight_set_pwm_level()
107 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_backlight_set_pwm_level()
108 struct intel_panel *panel = &connector->panel; in intel_backlight_set_pwm_level()
110 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] set backlight PWM = %d\n", in intel_backlight_set_pwm_level()
111 connector->base.base.id, connector->base.name, val); in intel_backlight_set_pwm_level()
112 panel->backlight.pwm_funcs->set(conn_state, val); in intel_backlight_set_pwm_level()
117 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_backlight_level_to_pwm()
118 struct intel_panel *panel = &connector->panel; in intel_backlight_level_to_pwm()
120 drm_WARN_ON_ONCE(&i915->drm, in intel_backlight_level_to_pwm()
121 panel->backlight.max == 0 || panel->backlight.pwm_level_max == 0); in intel_backlight_level_to_pwm()
123 val = scale(val, panel->backlight.min, panel->backlight.max, in intel_backlight_level_to_pwm()
124 panel->backlight.pwm_level_min, panel->backlight.pwm_level_max); in intel_backlight_level_to_pwm()
132 struct intel_panel *panel = &connector->panel; in intel_backlight_level_from_pwm()
134 drm_WARN_ON_ONCE(display->drm, in intel_backlight_level_from_pwm()
135 panel->backlight.max == 0 || panel->backlight.pwm_level_max == 0); in intel_backlight_level_from_pwm()
137 if (display->params.invert_brightness > 0 || in intel_backlight_level_from_pwm()
138 (display->params.invert_brightness == 0 && in intel_backlight_level_from_pwm()
140 val = panel->backlight.pwm_level_max - (val - panel->backlight.pwm_level_min); in intel_backlight_level_from_pwm()
142 return scale(val, panel->backlight.pwm_level_min, panel->backlight.pwm_level_max, in intel_backlight_level_from_pwm()
143 panel->backlight.min, panel->backlight.max); in intel_backlight_level_from_pwm()
148 struct drm_i915_private *i915 = to_i915(connector->base.dev); in lpt_get_backlight()
155 struct drm_i915_private *i915 = to_i915(connector->base.dev); in pch_get_backlight()
162 struct drm_i915_private *i915 = to_i915(connector->base.dev); in i9xx_get_backlight()
163 struct intel_panel *panel = &connector->panel; in i9xx_get_backlight()
170 if (panel->backlight.combination_mode) { in i9xx_get_backlight()
173 pci_read_config_byte(to_pci_dev(i915->drm.dev), LBPC, &lbpc); in i9xx_get_backlight()
182 struct drm_i915_private *i915 = to_i915(connector->base.dev); in vlv_get_backlight()
184 if (drm_WARN_ON(&i915->drm, pipe != PIPE_A && pipe != PIPE_B)) in vlv_get_backlight()
192 struct drm_i915_private *i915 = to_i915(connector->base.dev); in bxt_get_backlight()
193 struct intel_panel *panel = &connector->panel; in bxt_get_backlight()
195 return intel_de_read(i915, BXT_BLC_PWM_DUTY(panel->backlight.controller)); in bxt_get_backlight()
200 struct intel_panel *panel = &connector->panel; in ext_pwm_get_backlight()
203 pwm_get_state(panel->backlight.pwm, &state); in ext_pwm_get_backlight()
209 struct intel_connector *connector = to_intel_connector(conn_state->connector); in lpt_set_backlight()
210 struct drm_i915_private *i915 = to_i915(connector->base.dev); in lpt_set_backlight()
219 struct intel_connector *connector = to_intel_connector(conn_state->connector); in pch_set_backlight()
220 struct drm_i915_private *i915 = to_i915(connector->base.dev); in pch_set_backlight()
229 struct intel_connector *connector = to_intel_connector(conn_state->connector); in i9xx_set_backlight()
230 struct drm_i915_private *i915 = to_i915(connector->base.dev); in i9xx_set_backlight()
231 struct intel_panel *panel = &connector->panel; in i9xx_set_backlight()
234 drm_WARN_ON(&i915->drm, panel->backlight.pwm_level_max == 0); in i9xx_set_backlight()
236 if (panel->backlight.combination_mode) { in i9xx_set_backlight()
239 lbpc = level * 0xfe / panel->backlight.pwm_level_max + 1; in i9xx_set_backlight()
241 pci_write_config_byte(to_pci_dev(i915->drm.dev), LBPC, lbpc); in i9xx_set_backlight()
257 struct intel_connector *connector = to_intel_connector(conn_state->connector); in vlv_set_backlight()
258 struct drm_i915_private *i915 = to_i915(connector->base.dev); in vlv_set_backlight()
259 enum pipe pipe = to_intel_crtc(conn_state->crtc)->pipe; in vlv_set_backlight()
268 struct intel_connector *connector = to_intel_connector(conn_state->connector); in bxt_set_backlight()
269 struct drm_i915_private *i915 = to_i915(connector->base.dev); in bxt_set_backlight()
270 struct intel_panel *panel = &connector->panel; in bxt_set_backlight()
272 intel_de_write(i915, BXT_BLC_PWM_DUTY(panel->backlight.controller), level); in bxt_set_backlight()
277 struct intel_panel *panel = &to_intel_connector(conn_state->connector)->panel; in ext_pwm_set_backlight()
279 pwm_set_relative_duty_cycle(&panel->backlight.pwm_state, level, 100); in ext_pwm_set_backlight()
280 pwm_apply_might_sleep(panel->backlight.pwm, &panel->backlight.pwm_state); in ext_pwm_set_backlight()
286 struct intel_connector *connector = to_intel_connector(conn_state->connector); in intel_panel_actually_set_backlight()
287 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_panel_actually_set_backlight()
288 struct intel_panel *panel = &connector->panel; in intel_panel_actually_set_backlight()
290 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] set backlight level = %d\n", in intel_panel_actually_set_backlight()
291 connector->base.base.id, connector->base.name, level); in intel_panel_actually_set_backlight()
293 panel->backlight.funcs->set(conn_state, level); in intel_panel_actually_set_backlight()
302 struct intel_connector *connector = to_intel_connector(conn_state->connector); in intel_backlight_set_acpi()
303 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_backlight_set_acpi()
304 struct intel_panel *panel = &connector->panel; in intel_backlight_set_acpi()
313 if (!panel->backlight.present || !conn_state->crtc) in intel_backlight_set_acpi()
316 mutex_lock(&i915->display.backlight.lock); in intel_backlight_set_acpi()
318 drm_WARN_ON(&i915->drm, panel->backlight.max == 0); in intel_backlight_set_acpi()
321 panel->backlight.level = hw_level; in intel_backlight_set_acpi()
323 if (panel->backlight.device) in intel_backlight_set_acpi()
324 panel->backlight.device->props.brightness = in intel_backlight_set_acpi()
326 panel->backlight.level, in intel_backlight_set_acpi()
327 panel->backlight.device->props.max_brightness); in intel_backlight_set_acpi()
329 if (panel->backlight.enabled) in intel_backlight_set_acpi()
332 mutex_unlock(&i915->display.backlight.lock); in intel_backlight_set_acpi()
337 struct intel_connector *connector = to_intel_connector(old_conn_state->connector); in lpt_disable_backlight()
338 struct drm_i915_private *i915 = to_i915(connector->base.dev); in lpt_disable_backlight()
353 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] CPU backlight was enabled, disabling\n", in lpt_disable_backlight()
354 connector->base.base.id, connector->base.name); in lpt_disable_backlight()
363 struct intel_connector *connector = to_intel_connector(old_conn_state->connector); in pch_disable_backlight()
364 struct drm_i915_private *i915 = to_i915(connector->base.dev); in pch_disable_backlight()
380 struct drm_i915_private *i915 = to_i915(old_conn_state->connector->dev); in i965_disable_backlight()
389 struct intel_connector *connector = to_intel_connector(old_conn_state->connector); in vlv_disable_backlight()
390 struct drm_i915_private *i915 = to_i915(connector->base.dev); in vlv_disable_backlight()
391 enum pipe pipe = to_intel_crtc(old_conn_state->crtc)->pipe; in vlv_disable_backlight()
400 struct intel_connector *connector = to_intel_connector(old_conn_state->connector); in bxt_disable_backlight()
401 struct drm_i915_private *i915 = to_i915(connector->base.dev); in bxt_disable_backlight()
402 struct intel_panel *panel = &connector->panel; in bxt_disable_backlight()
406 intel_de_rmw(i915, BXT_BLC_PWM_CTL(panel->backlight.controller), in bxt_disable_backlight()
409 if (panel->backlight.controller == 1) in bxt_disable_backlight()
415 struct intel_connector *connector = to_intel_connector(old_conn_state->connector); in cnp_disable_backlight()
416 struct drm_i915_private *i915 = to_i915(connector->base.dev); in cnp_disable_backlight()
417 struct intel_panel *panel = &connector->panel; in cnp_disable_backlight()
421 intel_de_rmw(i915, BXT_BLC_PWM_CTL(panel->backlight.controller), in cnp_disable_backlight()
427 struct intel_connector *connector = to_intel_connector(old_conn_state->connector); in ext_pwm_disable_backlight()
428 struct intel_panel *panel = &connector->panel; in ext_pwm_disable_backlight()
432 panel->backlight.pwm_state.enabled = false; in ext_pwm_disable_backlight()
433 pwm_apply_might_sleep(panel->backlight.pwm, &panel->backlight.pwm_state); in ext_pwm_disable_backlight()
438 struct intel_connector *connector = to_intel_connector(old_conn_state->connector); in intel_backlight_disable()
439 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_backlight_disable()
440 struct intel_panel *panel = &connector->panel; in intel_backlight_disable()
442 if (!panel->backlight.present) in intel_backlight_disable()
451 if (i915->drm.switch_power_state == DRM_SWITCH_POWER_CHANGING) { in intel_backlight_disable()
452 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] Skipping backlight disable on vga switch\n", in intel_backlight_disable()
453 connector->base.base.id, connector->base.name); in intel_backlight_disable()
457 mutex_lock(&i915->display.backlight.lock); in intel_backlight_disable()
459 if (panel->backlight.device) in intel_backlight_disable()
460 panel->backlight.device->props.power = BACKLIGHT_POWER_OFF; in intel_backlight_disable()
461 panel->backlight.enabled = false; in intel_backlight_disable()
462 panel->backlight.funcs->disable(old_conn_state, 0); in intel_backlight_disable()
464 mutex_unlock(&i915->display.backlight.lock); in intel_backlight_disable()
470 struct intel_connector *connector = to_intel_connector(conn_state->connector); in lpt_enable_backlight()
471 struct drm_i915_private *i915 = to_i915(connector->base.dev); in lpt_enable_backlight()
472 struct intel_panel *panel = &connector->panel; in lpt_enable_backlight()
477 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] PCH backlight already enabled\n", in lpt_enable_backlight()
478 connector->base.base.id, connector->base.name); in lpt_enable_backlight()
485 panel->backlight.alternate_pwm_increment ? in lpt_enable_backlight()
489 panel->backlight.alternate_pwm_increment ? in lpt_enable_backlight()
492 pch_ctl2 = panel->backlight.pwm_level_max << 16; in lpt_enable_backlight()
496 if (panel->backlight.active_low_pwm) in lpt_enable_backlight()
514 struct intel_connector *connector = to_intel_connector(conn_state->connector); in pch_enable_backlight()
515 struct drm_i915_private *i915 = to_i915(connector->base.dev); in pch_enable_backlight()
516 struct intel_panel *panel = &connector->panel; in pch_enable_backlight()
517 enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; in pch_enable_backlight()
522 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] CPU backlight already enabled\n", in pch_enable_backlight()
523 connector->base.base.id, connector->base.name); in pch_enable_backlight()
530 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] PCH backlight already enabled\n", in pch_enable_backlight()
531 connector->base.base.id, connector->base.name); in pch_enable_backlight()
547 pch_ctl2 = panel->backlight.pwm_level_max << 16; in pch_enable_backlight()
551 if (panel->backlight.active_low_pwm) in pch_enable_backlight()
562 struct intel_connector *connector = to_intel_connector(conn_state->connector); in i9xx_enable_backlight()
563 struct drm_i915_private *i915 = to_i915(connector->base.dev); in i9xx_enable_backlight()
564 struct intel_panel *panel = &connector->panel; in i9xx_enable_backlight()
569 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] backlight already enabled\n", in i9xx_enable_backlight()
570 connector->base.base.id, connector->base.name); in i9xx_enable_backlight()
574 freq = panel->backlight.pwm_level_max; in i9xx_enable_backlight()
575 if (panel->backlight.combination_mode) in i9xx_enable_backlight()
579 if (panel->backlight.combination_mode) in i9xx_enable_backlight()
581 if (IS_PINEVIEW(i915) && panel->backlight.active_low_pwm) in i9xx_enable_backlight()
602 struct intel_connector *connector = to_intel_connector(conn_state->connector); in i965_enable_backlight()
603 struct drm_i915_private *i915 = to_i915(connector->base.dev); in i965_enable_backlight()
604 struct intel_panel *panel = &connector->panel; in i965_enable_backlight()
605 enum pipe pipe = to_intel_crtc(conn_state->crtc)->pipe; in i965_enable_backlight()
610 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] backlight already enabled\n", in i965_enable_backlight()
611 connector->base.base.id, connector->base.name); in i965_enable_backlight()
616 freq = panel->backlight.pwm_level_max; in i965_enable_backlight()
617 if (panel->backlight.combination_mode) in i965_enable_backlight()
624 if (panel->backlight.combination_mode) in i965_enable_backlight()
626 if (panel->backlight.active_low_pwm) in i965_enable_backlight()
638 struct intel_connector *connector = to_intel_connector(conn_state->connector); in vlv_enable_backlight()
639 struct drm_i915_private *i915 = to_i915(connector->base.dev); in vlv_enable_backlight()
640 struct intel_panel *panel = &connector->panel; in vlv_enable_backlight()
641 enum pipe pipe = to_intel_crtc(crtc_state->uapi.crtc)->pipe; in vlv_enable_backlight()
646 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] backlight already enabled\n", in vlv_enable_backlight()
647 connector->base.base.id, connector->base.name); in vlv_enable_backlight()
652 ctl = panel->backlight.pwm_level_max << 16; in vlv_enable_backlight()
659 if (panel->backlight.active_low_pwm) in vlv_enable_backlight()
669 struct intel_connector *connector = to_intel_connector(conn_state->connector); in bxt_enable_backlight()
670 struct drm_i915_private *i915 = to_i915(connector->base.dev); in bxt_enable_backlight()
671 struct intel_panel *panel = &connector->panel; in bxt_enable_backlight()
672 enum pipe pipe = to_intel_crtc(crtc_state->uapi.crtc)->pipe; in bxt_enable_backlight()
676 if (panel->backlight.controller == 1) { in bxt_enable_backlight()
679 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] utility pin already enabled\n", in bxt_enable_backlight()
680 connector->base.base.id, connector->base.name); in bxt_enable_backlight()
686 if (panel->backlight.util_pin_active_low) in bxt_enable_backlight()
692 pwm_ctl = intel_de_read(i915, BXT_BLC_PWM_CTL(panel->backlight.controller)); in bxt_enable_backlight()
694 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] backlight already enabled\n", in bxt_enable_backlight()
695 connector->base.base.id, connector->base.name); in bxt_enable_backlight()
697 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller), in bxt_enable_backlight()
701 intel_de_write(i915, BXT_BLC_PWM_FREQ(panel->backlight.controller), in bxt_enable_backlight()
702 panel->backlight.pwm_level_max); in bxt_enable_backlight()
707 if (panel->backlight.active_low_pwm) in bxt_enable_backlight()
710 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller), pwm_ctl); in bxt_enable_backlight()
711 intel_de_posting_read(i915, BXT_BLC_PWM_CTL(panel->backlight.controller)); in bxt_enable_backlight()
712 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller), in bxt_enable_backlight()
719 struct intel_connector *connector = to_intel_connector(conn_state->connector); in cnp_enable_backlight()
720 struct drm_i915_private *i915 = to_i915(connector->base.dev); in cnp_enable_backlight()
721 struct intel_panel *panel = &connector->panel; in cnp_enable_backlight()
724 pwm_ctl = intel_de_read(i915, BXT_BLC_PWM_CTL(panel->backlight.controller)); in cnp_enable_backlight()
726 drm_dbg_kms(&i915->drm, "backlight already enabled\n"); in cnp_enable_backlight()
728 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller), in cnp_enable_backlight()
732 intel_de_write(i915, BXT_BLC_PWM_FREQ(panel->backlight.controller), in cnp_enable_backlight()
733 panel->backlight.pwm_level_max); in cnp_enable_backlight()
738 if (panel->backlight.active_low_pwm) in cnp_enable_backlight()
741 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller), pwm_ctl); in cnp_enable_backlight()
742 intel_de_posting_read(i915, BXT_BLC_PWM_CTL(panel->backlight.controller)); in cnp_enable_backlight()
743 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller), in cnp_enable_backlight()
750 struct intel_connector *connector = to_intel_connector(conn_state->connector); in ext_pwm_enable_backlight()
751 struct intel_panel *panel = &connector->panel; in ext_pwm_enable_backlight()
753 pwm_set_relative_duty_cycle(&panel->backlight.pwm_state, level, 100); in ext_pwm_enable_backlight()
754 panel->backlight.pwm_state.enabled = true; in ext_pwm_enable_backlight()
755 pwm_apply_might_sleep(panel->backlight.pwm, &panel->backlight.pwm_state); in ext_pwm_enable_backlight()
761 struct intel_connector *connector = to_intel_connector(conn_state->connector); in __intel_backlight_enable()
762 struct intel_panel *panel = &connector->panel; in __intel_backlight_enable()
764 WARN_ON(panel->backlight.max == 0); in __intel_backlight_enable()
766 if (panel->backlight.level < panel->backlight.min) { in __intel_backlight_enable()
767 panel->backlight.level = panel->backlight.min; in __intel_backlight_enable()
768 if (panel->backlight.device) in __intel_backlight_enable()
769 panel->backlight.device->props.brightness = in __intel_backlight_enable()
771 panel->backlight.level, in __intel_backlight_enable()
772 panel->backlight.device->props.max_brightness); in __intel_backlight_enable()
775 panel->backlight.funcs->enable(crtc_state, conn_state, panel->backlight.level); in __intel_backlight_enable()
776 panel->backlight.enabled = true; in __intel_backlight_enable()
777 if (panel->backlight.device) in __intel_backlight_enable()
778 panel->backlight.device->props.power = BACKLIGHT_POWER_ON; in __intel_backlight_enable()
784 struct intel_connector *connector = to_intel_connector(conn_state->connector); in intel_backlight_enable()
785 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_backlight_enable()
786 struct intel_panel *panel = &connector->panel; in intel_backlight_enable()
787 enum pipe pipe = to_intel_crtc(crtc_state->uapi.crtc)->pipe; in intel_backlight_enable()
789 if (!panel->backlight.present) in intel_backlight_enable()
792 drm_dbg_kms(&i915->drm, "pipe %c\n", pipe_name(pipe)); in intel_backlight_enable()
794 mutex_lock(&i915->display.backlight.lock); in intel_backlight_enable()
798 mutex_unlock(&i915->display.backlight.lock); in intel_backlight_enable()
804 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_panel_get_backlight()
805 struct intel_panel *panel = &connector->panel; in intel_panel_get_backlight()
808 mutex_lock(&i915->display.backlight.lock); in intel_panel_get_backlight()
810 if (panel->backlight.enabled) in intel_panel_get_backlight()
811 val = panel->backlight.funcs->get(connector, intel_connector_get_pipe(connector)); in intel_panel_get_backlight()
813 mutex_unlock(&i915->display.backlight.lock); in intel_panel_get_backlight()
815 drm_dbg_kms(&i915->drm, "get backlight PWM = %d\n", val); in intel_panel_get_backlight()
819 /* Scale user_level in range [0..user_max] to [hw_min..hw_max]. */
823 struct intel_panel *panel = &connector->panel; in scale_user_to_hw()
825 return scale(user_level, 0, user_max, in scale_user_to_hw()
826 panel->backlight.min, panel->backlight.max); in scale_user_to_hw()
833 struct intel_connector *connector = to_intel_connector(conn_state->connector); in intel_panel_set_backlight()
834 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_panel_set_backlight()
835 struct intel_panel *panel = &connector->panel; in intel_panel_set_backlight()
838 if (!panel->backlight.present) in intel_panel_set_backlight()
841 mutex_lock(&i915->display.backlight.lock); in intel_panel_set_backlight()
843 drm_WARN_ON(&i915->drm, panel->backlight.max == 0); in intel_panel_set_backlight()
846 panel->backlight.level = hw_level; in intel_panel_set_backlight()
848 if (panel->backlight.enabled) in intel_panel_set_backlight()
851 mutex_unlock(&i915->display.backlight.lock); in intel_panel_set_backlight()
857 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_backlight_device_update_status()
858 struct intel_panel *panel = &connector->panel; in intel_backlight_device_update_status()
860 drm_modeset_lock(&i915->drm.mode_config.connection_mutex, NULL); in intel_backlight_device_update_status()
862 drm_dbg_kms(&i915->drm, "updating intel_backlight, brightness=%d/%d\n", in intel_backlight_device_update_status()
863 bd->props.brightness, bd->props.max_brightness); in intel_backlight_device_update_status()
864 intel_panel_set_backlight(connector->base.state, bd->props.brightness, in intel_backlight_device_update_status()
865 bd->props.max_brightness); in intel_backlight_device_update_status()
868 * Allow flipping bl_power as a sub-state of enabled. Sadly the in intel_backlight_device_update_status()
873 if (panel->backlight.enabled) { in intel_backlight_device_update_status()
874 if (panel->backlight.power) { in intel_backlight_device_update_status()
875 bool enable = bd->props.power == BACKLIGHT_POWER_ON && in intel_backlight_device_update_status()
876 bd->props.brightness != 0; in intel_backlight_device_update_status()
877 panel->backlight.power(connector, enable); in intel_backlight_device_update_status()
880 bd->props.power = BACKLIGHT_POWER_OFF; in intel_backlight_device_update_status()
883 drm_modeset_unlock(&i915->drm.mode_config.connection_mutex); in intel_backlight_device_update_status()
891 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_backlight_device_get_brightness()
895 with_intel_runtime_pm(&i915->runtime_pm, wakeref) { in intel_backlight_device_get_brightness()
898 drm_modeset_lock(&i915->drm.mode_config.connection_mutex, NULL); in intel_backlight_device_get_brightness()
902 hw_level, bd->props.max_brightness); in intel_backlight_device_get_brightness()
904 drm_modeset_unlock(&i915->drm.mode_config.connection_mutex); in intel_backlight_device_get_brightness()
917 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_backlight_device_register()
918 struct intel_panel *panel = &connector->panel; in intel_backlight_device_register()
924 if (WARN_ON(panel->backlight.device)) in intel_backlight_device_register()
925 return -ENODEV; in intel_backlight_device_register()
927 if (!panel->backlight.present) in intel_backlight_device_register()
930 WARN_ON(panel->backlight.max == 0); in intel_backlight_device_register()
933 drm_info(&i915->drm, "Skipping intel_backlight registration\n"); in intel_backlight_device_register()
944 props.max_brightness = panel->backlight.max; in intel_backlight_device_register()
946 panel->backlight.level, in intel_backlight_device_register()
949 if (panel->backlight.enabled) in intel_backlight_device_register()
956 return -ENOMEM; in intel_backlight_device_register()
960 put_device(&bd->dev); in intel_backlight_device_register()
969 name = kasprintf(GFP_KERNEL, "card%d-%s-backlight", in intel_backlight_device_register()
970 i915->drm.primary->index, connector->base.name); in intel_backlight_device_register()
972 return -ENOMEM; in intel_backlight_device_register()
974 bd = backlight_device_register(name, connector->base.kdev, connector, in intel_backlight_device_register()
978 drm_err(&i915->drm, in intel_backlight_device_register()
980 connector->base.base.id, connector->base.name, name, PTR_ERR(bd)); in intel_backlight_device_register()
985 panel->backlight.device = bd; in intel_backlight_device_register()
987 drm_dbg_kms(&i915->drm, in intel_backlight_device_register()
989 connector->base.base.id, connector->base.name, name); in intel_backlight_device_register()
999 struct intel_panel *panel = &connector->panel; in intel_backlight_device_unregister()
1001 if (panel->backlight.device) { in intel_backlight_device_unregister()
1002 backlight_device_unregister(panel->backlight.device); in intel_backlight_device_unregister()
1003 panel->backlight.device = NULL; in intel_backlight_device_unregister()
1014 struct drm_i915_private *i915 = to_i915(connector->base.dev); in cnp_hz_to_pwm()
1016 return DIV_ROUND_CLOSEST(KHz(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq), in cnp_hz_to_pwm()
1029 * SPT: This value represents the period of the PWM stream in clock periods
1035 struct intel_panel *panel = &connector->panel; in spt_hz_to_pwm()
1038 if (panel->backlight.alternate_pwm_increment) in spt_hz_to_pwm()
1047 * LPT: This value represents the period of the PWM stream in clock periods
1053 struct drm_i915_private *i915 = to_i915(connector->base.dev); in lpt_hz_to_pwm()
1054 struct intel_panel *panel = &connector->panel; in lpt_hz_to_pwm()
1057 if (panel->backlight.alternate_pwm_increment) in lpt_hz_to_pwm()
1071 * ILK/SNB/IVB: This value represents the period of the PWM stream in PCH
1076 struct drm_i915_private *i915 = to_i915(connector->base.dev); in pch_hz_to_pwm()
1078 return DIV_ROUND_CLOSEST(KHz(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq), in pch_hz_to_pwm()
1092 struct drm_i915_private *i915 = to_i915(connector->base.dev); in i9xx_hz_to_pwm()
1096 clock = KHz(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq); in i9xx_hz_to_pwm()
1098 clock = KHz(i915->display.cdclk.hw.cdclk); in i9xx_hz_to_pwm()
1104 * Gen4: This value represents the period of the PWM stream in display core
1110 struct drm_i915_private *i915 = to_i915(connector->base.dev); in i965_hz_to_pwm()
1114 clock = KHz(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq); in i965_hz_to_pwm()
1116 clock = KHz(i915->display.cdclk.hw.cdclk); in i965_hz_to_pwm()
1122 * VLV: This value represents the period of the PWM stream in display core
1128 struct drm_i915_private *i915 = to_i915(connector->base.dev); in vlv_hz_to_pwm()
1138 clock = KHz(DISPLAY_RUNTIME_INFO(i915)->rawclk_freq); in vlv_hz_to_pwm()
1147 struct drm_i915_private *i915 = to_i915(connector->base.dev); in get_vbt_pwm_freq()
1148 u16 pwm_freq_hz = connector->panel.vbt.backlight.pwm_freq_hz; in get_vbt_pwm_freq()
1151 drm_dbg_kms(&i915->drm, in get_vbt_pwm_freq()
1156 drm_dbg_kms(&i915->drm, in get_vbt_pwm_freq()
1166 struct drm_i915_private *i915 = to_i915(connector->base.dev); in get_backlight_max_vbt()
1167 struct intel_panel *panel = &connector->panel; in get_backlight_max_vbt()
1171 if (!panel->backlight.pwm_funcs->hz_to_pwm) { in get_backlight_max_vbt()
1172 drm_dbg_kms(&i915->drm, in get_backlight_max_vbt()
1177 pwm = panel->backlight.pwm_funcs->hz_to_pwm(connector, pwm_freq_hz); in get_backlight_max_vbt()
1179 drm_dbg_kms(&i915->drm, in get_backlight_max_vbt()
1192 struct drm_i915_private *i915 = to_i915(connector->base.dev); in get_backlight_min_vbt()
1193 struct intel_panel *panel = &connector->panel; in get_backlight_min_vbt()
1196 drm_WARN_ON(&i915->drm, panel->backlight.pwm_level_max == 0); in get_backlight_min_vbt()
1205 min = clamp_t(int, connector->panel.vbt.backlight.min_brightness, 0, 64); in get_backlight_min_vbt()
1206 if (min != connector->panel.vbt.backlight.min_brightness) { in get_backlight_min_vbt()
1207 drm_dbg_kms(&i915->drm, in get_backlight_min_vbt()
1209 connector->panel.vbt.backlight.min_brightness, min); in get_backlight_min_vbt()
1213 return scale(min, 0, 255, 0, panel->backlight.pwm_level_max); in get_backlight_min_vbt()
1218 struct drm_i915_private *i915 = to_i915(connector->base.dev); in lpt_setup_backlight()
1219 struct intel_panel *panel = &connector->panel; in lpt_setup_backlight()
1227 panel->backlight.alternate_pwm_increment = alt; in lpt_setup_backlight()
1230 panel->backlight.active_low_pwm = pch_ctl1 & BLM_PCH_POLARITY; in lpt_setup_backlight()
1233 panel->backlight.pwm_level_max = pch_ctl2 >> 16; in lpt_setup_backlight()
1237 if (!panel->backlight.pwm_level_max) in lpt_setup_backlight()
1238 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector); in lpt_setup_backlight()
1240 if (!panel->backlight.pwm_level_max) in lpt_setup_backlight()
1241 return -ENODEV; in lpt_setup_backlight()
1243 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector); in lpt_setup_backlight()
1245 panel->backlight.pwm_enabled = pch_ctl1 & BLM_PCH_PWM_ENABLE; in lpt_setup_backlight()
1247 cpu_mode = panel->backlight.pwm_enabled && HAS_PCH_LPT(i915) && in lpt_setup_backlight()
1254 drm_dbg_kms(&i915->drm, in lpt_setup_backlight()
1258 lpt_set_backlight(connector->base.state, val); in lpt_setup_backlight()
1266 drm_dbg_kms(&i915->drm, in lpt_setup_backlight()
1268 connector->base.base.id, connector->base.name); in lpt_setup_backlight()
1275 struct drm_i915_private *i915 = to_i915(connector->base.dev); in pch_setup_backlight()
1276 struct intel_panel *panel = &connector->panel; in pch_setup_backlight()
1280 panel->backlight.active_low_pwm = pch_ctl1 & BLM_PCH_POLARITY; in pch_setup_backlight()
1283 panel->backlight.pwm_level_max = pch_ctl2 >> 16; in pch_setup_backlight()
1285 if (!panel->backlight.pwm_level_max) in pch_setup_backlight()
1286 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector); in pch_setup_backlight()
1288 if (!panel->backlight.pwm_level_max) in pch_setup_backlight()
1289 return -ENODEV; in pch_setup_backlight()
1291 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector); in pch_setup_backlight()
1294 panel->backlight.pwm_enabled = (cpu_ctl2 & BLM_PWM_ENABLE) && in pch_setup_backlight()
1297 drm_dbg_kms(&i915->drm, in pch_setup_backlight()
1299 connector->base.base.id, connector->base.name); in pch_setup_backlight()
1306 struct drm_i915_private *i915 = to_i915(connector->base.dev); in i9xx_setup_backlight()
1307 struct intel_panel *panel = &connector->panel; in i9xx_setup_backlight()
1313 panel->backlight.combination_mode = ctl & BLM_LEGACY_MODE; in i9xx_setup_backlight()
1316 panel->backlight.active_low_pwm = ctl & BLM_POLARITY_PNV; in i9xx_setup_backlight()
1318 panel->backlight.pwm_level_max = ctl >> 17; in i9xx_setup_backlight()
1320 if (!panel->backlight.pwm_level_max) { in i9xx_setup_backlight()
1321 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector); in i9xx_setup_backlight()
1322 panel->backlight.pwm_level_max >>= 1; in i9xx_setup_backlight()
1325 if (!panel->backlight.pwm_level_max) in i9xx_setup_backlight()
1326 return -ENODEV; in i9xx_setup_backlight()
1328 if (panel->backlight.combination_mode) in i9xx_setup_backlight()
1329 panel->backlight.pwm_level_max *= 0xff; in i9xx_setup_backlight()
1331 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector); in i9xx_setup_backlight()
1335 val = clamp(val, panel->backlight.pwm_level_min, panel->backlight.pwm_level_max); in i9xx_setup_backlight()
1337 panel->backlight.pwm_enabled = val != 0; in i9xx_setup_backlight()
1339 drm_dbg_kms(&i915->drm, in i9xx_setup_backlight()
1341 connector->base.base.id, connector->base.name); in i9xx_setup_backlight()
1348 struct drm_i915_private *i915 = to_i915(connector->base.dev); in i965_setup_backlight()
1349 struct intel_panel *panel = &connector->panel; in i965_setup_backlight()
1353 panel->backlight.combination_mode = ctl2 & BLM_COMBINATION_MODE; in i965_setup_backlight()
1354 panel->backlight.active_low_pwm = ctl2 & BLM_POLARITY_I965; in i965_setup_backlight()
1357 panel->backlight.pwm_level_max = ctl >> 16; in i965_setup_backlight()
1359 if (!panel->backlight.pwm_level_max) in i965_setup_backlight()
1360 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector); in i965_setup_backlight()
1362 if (!panel->backlight.pwm_level_max) in i965_setup_backlight()
1363 return -ENODEV; in i965_setup_backlight()
1365 if (panel->backlight.combination_mode) in i965_setup_backlight()
1366 panel->backlight.pwm_level_max *= 0xff; in i965_setup_backlight()
1368 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector); in i965_setup_backlight()
1370 panel->backlight.pwm_enabled = ctl2 & BLM_PWM_ENABLE; in i965_setup_backlight()
1372 drm_dbg_kms(&i915->drm, in i965_setup_backlight()
1374 connector->base.base.id, connector->base.name); in i965_setup_backlight()
1381 struct drm_i915_private *i915 = to_i915(connector->base.dev); in vlv_setup_backlight()
1382 struct intel_panel *panel = &connector->panel; in vlv_setup_backlight()
1385 if (drm_WARN_ON(&i915->drm, pipe != PIPE_A && pipe != PIPE_B)) in vlv_setup_backlight()
1386 return -ENODEV; in vlv_setup_backlight()
1389 panel->backlight.active_low_pwm = ctl2 & BLM_POLARITY_I965; in vlv_setup_backlight()
1392 panel->backlight.pwm_level_max = ctl >> 16; in vlv_setup_backlight()
1394 if (!panel->backlight.pwm_level_max) in vlv_setup_backlight()
1395 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector); in vlv_setup_backlight()
1397 if (!panel->backlight.pwm_level_max) in vlv_setup_backlight()
1398 return -ENODEV; in vlv_setup_backlight()
1400 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector); in vlv_setup_backlight()
1402 panel->backlight.pwm_enabled = ctl2 & BLM_PWM_ENABLE; in vlv_setup_backlight()
1404 drm_dbg_kms(&i915->drm, in vlv_setup_backlight()
1406 connector->base.base.id, connector->base.name, pipe_name(pipe)); in vlv_setup_backlight()
1414 struct drm_i915_private *i915 = to_i915(connector->base.dev); in bxt_setup_backlight()
1415 struct intel_panel *panel = &connector->panel; in bxt_setup_backlight()
1418 panel->backlight.controller = connector->panel.vbt.backlight.controller; in bxt_setup_backlight()
1421 BXT_BLC_PWM_CTL(panel->backlight.controller)); in bxt_setup_backlight()
1424 if (panel->backlight.controller == 1) { in bxt_setup_backlight()
1426 panel->backlight.util_pin_active_low = in bxt_setup_backlight()
1430 panel->backlight.active_low_pwm = pwm_ctl & BXT_BLC_PWM_POLARITY; in bxt_setup_backlight()
1431 panel->backlight.pwm_level_max = in bxt_setup_backlight()
1432 intel_de_read(i915, BXT_BLC_PWM_FREQ(panel->backlight.controller)); in bxt_setup_backlight()
1434 if (!panel->backlight.pwm_level_max) in bxt_setup_backlight()
1435 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector); in bxt_setup_backlight()
1437 if (!panel->backlight.pwm_level_max) in bxt_setup_backlight()
1438 return -ENODEV; in bxt_setup_backlight()
1440 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector); in bxt_setup_backlight()
1442 panel->backlight.pwm_enabled = pwm_ctl & BXT_BLC_PWM_ENABLE; in bxt_setup_backlight()
1444 drm_dbg_kms(&i915->drm, in bxt_setup_backlight()
1446 connector->base.base.id, connector->base.name, in bxt_setup_backlight()
1447 panel->backlight.controller); in bxt_setup_backlight()
1482 struct drm_i915_private *i915 = to_i915(connector->base.dev); in cnp_setup_backlight()
1483 struct intel_panel *panel = &connector->panel; in cnp_setup_backlight()
1490 panel->backlight.controller = connector->panel.vbt.backlight.controller; in cnp_setup_backlight()
1491 if (!cnp_backlight_controller_is_valid(i915, panel->backlight.controller)) { in cnp_setup_backlight()
1492 drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] Invalid backlight controller %d, assuming 0\n", in cnp_setup_backlight()
1493 connector->base.base.id, connector->base.name, in cnp_setup_backlight()
1494 panel->backlight.controller); in cnp_setup_backlight()
1495 panel->backlight.controller = 0; in cnp_setup_backlight()
1499 BXT_BLC_PWM_CTL(panel->backlight.controller)); in cnp_setup_backlight()
1501 panel->backlight.active_low_pwm = pwm_ctl & BXT_BLC_PWM_POLARITY; in cnp_setup_backlight()
1502 panel->backlight.pwm_level_max = in cnp_setup_backlight()
1503 intel_de_read(i915, BXT_BLC_PWM_FREQ(panel->backlight.controller)); in cnp_setup_backlight()
1505 if (!panel->backlight.pwm_level_max) in cnp_setup_backlight()
1506 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector); in cnp_setup_backlight()
1508 if (!panel->backlight.pwm_level_max) in cnp_setup_backlight()
1509 return -ENODEV; in cnp_setup_backlight()
1511 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector); in cnp_setup_backlight()
1513 panel->backlight.pwm_enabled = pwm_ctl & BXT_BLC_PWM_ENABLE; in cnp_setup_backlight()
1515 drm_dbg_kms(&i915->drm, in cnp_setup_backlight()
1517 connector->base.base.id, connector->base.name, in cnp_setup_backlight()
1518 panel->backlight.controller); in cnp_setup_backlight()
1526 struct drm_i915_private *i915 = to_i915(connector->base.dev); in ext_pwm_setup_backlight()
1527 struct intel_panel *panel = &connector->panel; in ext_pwm_setup_backlight()
1532 if (connector->panel.vbt.dsi.config->pwm_blc == PPS_BLC_PMIC) { in ext_pwm_setup_backlight()
1533 panel->backlight.pwm = pwm_get(i915->drm.dev, "pwm_pmic_backlight"); in ext_pwm_setup_backlight()
1536 panel->backlight.pwm = pwm_get(i915->drm.dev, "pwm_soc_backlight"); in ext_pwm_setup_backlight()
1540 if (IS_ERR(panel->backlight.pwm)) { in ext_pwm_setup_backlight()
1541 drm_err(&i915->drm, "[CONNECTOR:%d:%s] Failed to get the %s PWM chip\n", in ext_pwm_setup_backlight()
1542 connector->base.base.id, connector->base.name, desc); in ext_pwm_setup_backlight()
1543 panel->backlight.pwm = NULL; in ext_pwm_setup_backlight()
1544 return -ENODEV; in ext_pwm_setup_backlight()
1547 panel->backlight.pwm_level_max = 100; /* 100% */ in ext_pwm_setup_backlight()
1548 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector); in ext_pwm_setup_backlight()
1550 if (pwm_is_enabled(panel->backlight.pwm)) { in ext_pwm_setup_backlight()
1552 pwm_get_state(panel->backlight.pwm, &panel->backlight.pwm_state); in ext_pwm_setup_backlight()
1554 level = pwm_get_relative_duty_cycle(&panel->backlight.pwm_state, in ext_pwm_setup_backlight()
1557 panel->backlight.pwm_enabled = true; in ext_pwm_setup_backlight()
1559 …drm_dbg_kms(&i915->drm, "[CONNECTOR:%d:%s] PWM already enabled at freq %ld, VBT freq %d, level %d\… in ext_pwm_setup_backlight()
1560 connector->base.base.id, connector->base.name, in ext_pwm_setup_backlight()
1561 NSEC_PER_SEC / (unsigned long)panel->backlight.pwm_state.period, in ext_pwm_setup_backlight()
1564 /* Set period from VBT frequency, leave other settings at 0. */ in ext_pwm_setup_backlight()
1565 panel->backlight.pwm_state.period = in ext_pwm_setup_backlight()
1569 drm_dbg_kms(&i915->drm, in ext_pwm_setup_backlight()
1571 connector->base.base.id, connector->base.name, desc); in ext_pwm_setup_backlight()
1578 struct intel_connector *connector = to_intel_connector(conn_state->connector); in intel_pwm_set_backlight()
1579 struct intel_panel *panel = &connector->panel; in intel_pwm_set_backlight()
1581 panel->backlight.pwm_funcs->set(conn_state, in intel_pwm_set_backlight()
1587 struct intel_panel *panel = &connector->panel; in intel_pwm_get_backlight()
1590 panel->backlight.pwm_funcs->get(connector, pipe)); in intel_pwm_get_backlight()
1596 struct intel_connector *connector = to_intel_connector(conn_state->connector); in intel_pwm_enable_backlight()
1597 struct intel_panel *panel = &connector->panel; in intel_pwm_enable_backlight()
1599 panel->backlight.pwm_funcs->enable(crtc_state, conn_state, in intel_pwm_enable_backlight()
1605 struct intel_connector *connector = to_intel_connector(conn_state->connector); in intel_pwm_disable_backlight()
1606 struct intel_panel *panel = &connector->panel; in intel_pwm_disable_backlight()
1608 panel->backlight.pwm_funcs->disable(conn_state, in intel_pwm_disable_backlight()
1614 struct intel_panel *panel = &connector->panel; in intel_pwm_setup_backlight()
1617 ret = panel->backlight.pwm_funcs->setup(connector, pipe); in intel_pwm_setup_backlight()
1621 panel->backlight.min = panel->backlight.pwm_level_min; in intel_pwm_setup_backlight()
1622 panel->backlight.max = panel->backlight.pwm_level_max; in intel_pwm_setup_backlight()
1623 panel->backlight.level = intel_pwm_get_backlight(connector, pipe); in intel_pwm_setup_backlight()
1624 panel->backlight.enabled = panel->backlight.pwm_enabled; in intel_pwm_setup_backlight()
1634 struct intel_connector *connector = to_intel_connector(conn_state->connector); in intel_backlight_update()
1635 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_backlight_update()
1636 struct intel_panel *panel = &connector->panel; in intel_backlight_update()
1638 if (!panel->backlight.present) in intel_backlight_update()
1641 mutex_lock(&i915->display.backlight.lock); in intel_backlight_update()
1642 if (!panel->backlight.enabled) in intel_backlight_update()
1645 mutex_unlock(&i915->display.backlight.lock); in intel_backlight_update()
1651 struct intel_panel *panel = &connector->panel; in intel_backlight_setup()
1654 if (!connector->panel.vbt.backlight.present) { in intel_backlight_setup()
1656 drm_dbg_kms(display->drm, in intel_backlight_setup()
1658 connector->base.base.id, connector->base.name); in intel_backlight_setup()
1660 drm_dbg_kms(display->drm, in intel_backlight_setup()
1662 connector->base.base.id, connector->base.name); in intel_backlight_setup()
1668 if (drm_WARN_ON(display->drm, !panel->backlight.funcs)) in intel_backlight_setup()
1669 return -ENODEV; in intel_backlight_setup()
1672 mutex_lock(&display->backlight.lock); in intel_backlight_setup()
1673 ret = panel->backlight.funcs->setup(connector, pipe); in intel_backlight_setup()
1674 mutex_unlock(&display->backlight.lock); in intel_backlight_setup()
1677 drm_dbg_kms(display->drm, in intel_backlight_setup()
1679 connector->base.base.id, connector->base.name); in intel_backlight_setup()
1683 panel->backlight.present = true; in intel_backlight_setup()
1685 drm_dbg_kms(display->drm, in intel_backlight_setup()
1687 connector->base.base.id, connector->base.name, in intel_backlight_setup()
1688 str_enabled_disabled(panel->backlight.enabled), in intel_backlight_setup()
1689 panel->backlight.level, panel->backlight.max); in intel_backlight_setup()
1697 if (panel->backlight.pwm) in intel_backlight_destroy()
1698 pwm_put(panel->backlight.pwm); in intel_backlight_destroy()
1700 panel->backlight.present = false; in intel_backlight_destroy()
1796 struct drm_i915_private *i915 = to_i915(connector->base.dev); in intel_backlight_init_funcs()
1798 if (connector->base.connector_type == DRM_MODE_CONNECTOR_DSI && in intel_backlight_init_funcs()
1803 panel->backlight.pwm_funcs = &bxt_pwm_funcs; in intel_backlight_init_funcs()
1805 panel->backlight.pwm_funcs = &cnp_pwm_funcs; in intel_backlight_init_funcs()
1808 panel->backlight.pwm_funcs = &lpt_pwm_funcs; in intel_backlight_init_funcs()
1810 panel->backlight.pwm_funcs = &spt_pwm_funcs; in intel_backlight_init_funcs()
1812 panel->backlight.pwm_funcs = &pch_pwm_funcs; in intel_backlight_init_funcs()
1814 if (connector->base.connector_type == DRM_MODE_CONNECTOR_DSI) { in intel_backlight_init_funcs()
1815 panel->backlight.pwm_funcs = &ext_pwm_funcs; in intel_backlight_init_funcs()
1817 panel->backlight.pwm_funcs = &vlv_pwm_funcs; in intel_backlight_init_funcs()
1820 panel->backlight.pwm_funcs = &i965_pwm_funcs; in intel_backlight_init_funcs()
1822 panel->backlight.pwm_funcs = &i9xx_pwm_funcs; in intel_backlight_init_funcs()
1825 if (connector->base.connector_type == DRM_MODE_CONNECTOR_eDP) { in intel_backlight_init_funcs()
1829 if (!intel_has_quirk(&i915->display, QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK)) in intel_backlight_init_funcs()
1830 connector->panel.backlight.power = intel_pps_backlight_power; in intel_backlight_init_funcs()
1834 panel->backlight.funcs = &pwm_bl_funcs; in intel_backlight_init_funcs()