Lines Matching refs:panel

65 	struct intel_panel *panel = &connector->panel;
68 hw_level = scale(user_level, 0, user_max, 0, panel->backlight.max);
69 hw_level = clamp(hw_level, panel->backlight.min, panel->backlight.max);
78 struct intel_panel *panel = &connector->panel;
80 return scale(hw_level, panel->backlight.min, panel->backlight.max,
87 struct intel_panel *panel = &connector->panel;
89 drm_WARN_ON(&i915->drm, panel->backlight.pwm_level_max == 0);
96 return panel->backlight.pwm_level_max - val + panel->backlight.pwm_level_min;
106 struct intel_panel *panel = &connector->panel;
110 panel->backlight.pwm_funcs->set(conn_state, val);
116 struct intel_panel *panel = &connector->panel;
119 panel->backlight.max == 0 || panel->backlight.pwm_level_max == 0);
121 val = scale(val, panel->backlight.min, panel->backlight.max,
122 panel->backlight.pwm_level_min, panel->backlight.pwm_level_max);
130 struct intel_panel *panel = &connector->panel;
133 panel->backlight.max == 0 || panel->backlight.pwm_level_max == 0);
138 val = panel->backlight.pwm_level_max - (val - panel->backlight.pwm_level_min);
140 return scale(val, panel->backlight.pwm_level_min, panel->backlight.pwm_level_max,
141 panel->backlight.min, panel->backlight.max);
161 struct intel_panel *panel = &connector->panel;
168 if (panel->backlight.combination_mode) {
191 struct intel_panel *panel = &connector->panel;
193 return intel_de_read(i915, BXT_BLC_PWM_DUTY(panel->backlight.controller));
198 struct intel_panel *panel = &connector->panel;
201 pwm_get_state(panel->backlight.pwm, &state);
229 struct intel_panel *panel = &connector->panel;
232 drm_WARN_ON(&i915->drm, panel->backlight.pwm_level_max == 0);
234 if (panel->backlight.combination_mode) {
237 lbpc = level * 0xfe / panel->backlight.pwm_level_max + 1;
268 struct intel_panel *panel = &connector->panel;
270 intel_de_write(i915, BXT_BLC_PWM_DUTY(panel->backlight.controller), level);
275 struct intel_panel *panel = &to_intel_connector(conn_state->connector)->panel;
277 pwm_set_relative_duty_cycle(&panel->backlight.pwm_state, level, 100);
278 pwm_apply_might_sleep(panel->backlight.pwm, &panel->backlight.pwm_state);
286 struct intel_panel *panel = &connector->panel;
291 panel->backlight.funcs->set(conn_state, level);
302 struct intel_panel *panel = &connector->panel;
311 if (!panel->backlight.present || !conn_state->crtc)
316 drm_WARN_ON(&i915->drm, panel->backlight.max == 0);
319 panel->backlight.level = hw_level;
321 if (panel->backlight.device)
322 panel->backlight.device->props.brightness =
324 panel->backlight.level,
325 panel->backlight.device->props.max_brightness);
327 if (panel->backlight.enabled)
400 struct intel_panel *panel = &connector->panel;
404 intel_de_rmw(i915, BXT_BLC_PWM_CTL(panel->backlight.controller),
407 if (panel->backlight.controller == 1)
415 struct intel_panel *panel = &connector->panel;
419 intel_de_rmw(i915, BXT_BLC_PWM_CTL(panel->backlight.controller),
426 struct intel_panel *panel = &connector->panel;
430 panel->backlight.pwm_state.enabled = false;
431 pwm_apply_might_sleep(panel->backlight.pwm, &panel->backlight.pwm_state);
438 struct intel_panel *panel = &connector->panel;
440 if (!panel->backlight.present)
457 if (panel->backlight.device)
458 panel->backlight.device->props.power = FB_BLANK_POWERDOWN;
459 panel->backlight.enabled = false;
460 panel->backlight.funcs->disable(old_conn_state, 0);
470 struct intel_panel *panel = &connector->panel;
483 panel->backlight.alternate_pwm_increment ?
487 panel->backlight.alternate_pwm_increment ?
490 pch_ctl2 = panel->backlight.pwm_level_max << 16;
494 if (panel->backlight.active_low_pwm)
514 struct intel_panel *panel = &connector->panel;
545 pch_ctl2 = panel->backlight.pwm_level_max << 16;
549 if (panel->backlight.active_low_pwm)
562 struct intel_panel *panel = &connector->panel;
572 freq = panel->backlight.pwm_level_max;
573 if (panel->backlight.combination_mode)
577 if (panel->backlight.combination_mode)
579 if (IS_PINEVIEW(i915) && panel->backlight.active_low_pwm)
602 struct intel_panel *panel = &connector->panel;
614 freq = panel->backlight.pwm_level_max;
615 if (panel->backlight.combination_mode)
622 if (panel->backlight.combination_mode)
624 if (panel->backlight.active_low_pwm)
638 struct intel_panel *panel = &connector->panel;
650 ctl = panel->backlight.pwm_level_max << 16;
657 if (panel->backlight.active_low_pwm)
669 struct intel_panel *panel = &connector->panel;
674 if (panel->backlight.controller == 1) {
684 if (panel->backlight.util_pin_active_low)
690 pwm_ctl = intel_de_read(i915, BXT_BLC_PWM_CTL(panel->backlight.controller));
695 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller),
699 intel_de_write(i915, BXT_BLC_PWM_FREQ(panel->backlight.controller),
700 panel->backlight.pwm_level_max);
705 if (panel->backlight.active_low_pwm)
708 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller), pwm_ctl);
709 intel_de_posting_read(i915, BXT_BLC_PWM_CTL(panel->backlight.controller));
710 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller),
719 struct intel_panel *panel = &connector->panel;
722 pwm_ctl = intel_de_read(i915, BXT_BLC_PWM_CTL(panel->backlight.controller));
726 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller),
730 intel_de_write(i915, BXT_BLC_PWM_FREQ(panel->backlight.controller),
731 panel->backlight.pwm_level_max);
736 if (panel->backlight.active_low_pwm)
739 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller), pwm_ctl);
740 intel_de_posting_read(i915, BXT_BLC_PWM_CTL(panel->backlight.controller));
741 intel_de_write(i915, BXT_BLC_PWM_CTL(panel->backlight.controller),
749 struct intel_panel *panel = &connector->panel;
751 pwm_set_relative_duty_cycle(&panel->backlight.pwm_state, level, 100);
752 panel->backlight.pwm_state.enabled = true;
753 pwm_apply_might_sleep(panel->backlight.pwm, &panel->backlight.pwm_state);
760 struct intel_panel *panel = &connector->panel;
762 WARN_ON(panel->backlight.max == 0);
764 if (panel->backlight.level <= panel->backlight.min) {
765 panel->backlight.level = panel->backlight.max;
766 if (panel->backlight.device)
767 panel->backlight.device->props.brightness =
769 panel->backlight.level,
770 panel->backlight.device->props.max_brightness);
773 panel->backlight.funcs->enable(crtc_state, conn_state, panel->backlight.level);
774 panel->backlight.enabled = true;
775 if (panel->backlight.device)
776 panel->backlight.device->props.power = FB_BLANK_UNBLANK;
784 struct intel_panel *panel = &connector->panel;
787 if (!panel->backlight.present)
803 struct intel_panel *panel = &connector->panel;
808 if (panel->backlight.enabled)
809 val = panel->backlight.funcs->get(connector, intel_connector_get_pipe(connector));
821 struct intel_panel *panel = &connector->panel;
824 panel->backlight.min, panel->backlight.max);
833 struct intel_panel *panel = &connector->panel;
836 if (!panel->backlight.present)
841 drm_WARN_ON(&i915->drm, panel->backlight.max == 0);
844 panel->backlight.level = hw_level;
846 if (panel->backlight.enabled)
856 struct intel_panel *panel = &connector->panel;
871 if (panel->backlight.enabled) {
872 if (panel->backlight.power) {
875 panel->backlight.power(connector, enable);
916 struct intel_panel *panel = &connector->panel;
922 if (WARN_ON(panel->backlight.device))
925 if (!panel->backlight.present)
928 WARN_ON(panel->backlight.max == 0);
942 props.max_brightness = panel->backlight.max;
944 panel->backlight.level,
947 if (panel->backlight.enabled)
983 panel->backlight.device = bd;
997 struct intel_panel *panel = &connector->panel;
999 if (panel->backlight.device) {
1000 backlight_device_unregister(panel->backlight.device);
1001 panel->backlight.device = NULL;
1033 struct intel_panel *panel = &connector->panel;
1036 if (panel->backlight.alternate_pwm_increment)
1052 struct intel_panel *panel = &connector->panel;
1055 if (panel->backlight.alternate_pwm_increment)
1146 u16 pwm_freq_hz = connector->panel.vbt.backlight.pwm_freq_hz;
1165 struct intel_panel *panel = &connector->panel;
1169 if (!panel->backlight.pwm_funcs->hz_to_pwm) {
1175 pwm = panel->backlight.pwm_funcs->hz_to_pwm(connector, pwm_freq_hz);
1191 struct intel_panel *panel = &connector->panel;
1194 drm_WARN_ON(&i915->drm, panel->backlight.pwm_level_max == 0);
1203 min = clamp_t(int, connector->panel.vbt.backlight.min_brightness, 0, 64);
1204 if (min != connector->panel.vbt.backlight.min_brightness) {
1207 connector->panel.vbt.backlight.min_brightness, min);
1211 return scale(min, 0, 255, 0, panel->backlight.pwm_level_max);
1217 struct intel_panel *panel = &connector->panel;
1225 panel->backlight.alternate_pwm_increment = alt;
1228 panel->backlight.active_low_pwm = pch_ctl1 & BLM_PCH_POLARITY;
1231 panel->backlight.pwm_level_max = pch_ctl2 >> 16;
1235 if (!panel->backlight.pwm_level_max)
1236 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector);
1238 if (!panel->backlight.pwm_level_max)
1241 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector);
1243 panel->backlight.pwm_enabled = pch_ctl1 & BLM_PCH_PWM_ENABLE;
1245 cpu_mode = panel->backlight.pwm_enabled && HAS_PCH_LPT(i915) &&
1274 struct intel_panel *panel = &connector->panel;
1278 panel->backlight.active_low_pwm = pch_ctl1 & BLM_PCH_POLARITY;
1281 panel->backlight.pwm_level_max = pch_ctl2 >> 16;
1283 if (!panel->backlight.pwm_level_max)
1284 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector);
1286 if (!panel->backlight.pwm_level_max)
1289 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector);
1292 panel->backlight.pwm_enabled = (cpu_ctl2 & BLM_PWM_ENABLE) &&
1305 struct intel_panel *panel = &connector->panel;
1311 panel->backlight.combination_mode = ctl & BLM_LEGACY_MODE;
1314 panel->backlight.active_low_pwm = ctl & BLM_POLARITY_PNV;
1316 panel->backlight.pwm_level_max = ctl >> 17;
1318 if (!panel->backlight.pwm_level_max) {
1319 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector);
1320 panel->backlight.pwm_level_max >>= 1;
1323 if (!panel->backlight.pwm_level_max)
1326 if (panel->backlight.combination_mode)
1327 panel->backlight.pwm_level_max *= 0xff;
1329 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector);
1333 val = clamp(val, panel->backlight.pwm_level_min, panel->backlight.pwm_level_max);
1335 panel->backlight.pwm_enabled = val != 0;
1347 struct intel_panel *panel = &connector->panel;
1351 panel->backlight.combination_mode = ctl2 & BLM_COMBINATION_MODE;
1352 panel->backlight.active_low_pwm = ctl2 & BLM_POLARITY_I965;
1355 panel->backlight.pwm_level_max = ctl >> 16;
1357 if (!panel->backlight.pwm_level_max)
1358 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector);
1360 if (!panel->backlight.pwm_level_max)
1363 if (panel->backlight.combination_mode)
1364 panel->backlight.pwm_level_max *= 0xff;
1366 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector);
1368 panel->backlight.pwm_enabled = ctl2 & BLM_PWM_ENABLE;
1380 struct intel_panel *panel = &connector->panel;
1387 panel->backlight.active_low_pwm = ctl2 & BLM_POLARITY_I965;
1390 panel->backlight.pwm_level_max = ctl >> 16;
1392 if (!panel->backlight.pwm_level_max)
1393 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector);
1395 if (!panel->backlight.pwm_level_max)
1398 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector);
1400 panel->backlight.pwm_enabled = ctl2 & BLM_PWM_ENABLE;
1413 struct intel_panel *panel = &connector->panel;
1416 panel->backlight.controller = connector->panel.vbt.backlight.controller;
1419 BXT_BLC_PWM_CTL(panel->backlight.controller));
1422 if (panel->backlight.controller == 1) {
1424 panel->backlight.util_pin_active_low =
1428 panel->backlight.active_low_pwm = pwm_ctl & BXT_BLC_PWM_POLARITY;
1429 panel->backlight.pwm_level_max =
1430 intel_de_read(i915, BXT_BLC_PWM_FREQ(panel->backlight.controller));
1432 if (!panel->backlight.pwm_level_max)
1433 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector);
1435 if (!panel->backlight.pwm_level_max)
1438 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector);
1440 panel->backlight.pwm_enabled = pwm_ctl & BXT_BLC_PWM_ENABLE;
1445 panel->backlight.controller);
1478 struct intel_panel *panel = &connector->panel;
1485 panel->backlight.controller = connector->panel.vbt.backlight.controller;
1486 if (!cnp_backlight_controller_is_valid(i915, panel->backlight.controller)) {
1489 panel->backlight.controller);
1490 panel->backlight.controller = 0;
1494 BXT_BLC_PWM_CTL(panel->backlight.controller));
1496 panel->backlight.active_low_pwm = pwm_ctl & BXT_BLC_PWM_POLARITY;
1497 panel->backlight.pwm_level_max =
1498 intel_de_read(i915, BXT_BLC_PWM_FREQ(panel->backlight.controller));
1500 if (!panel->backlight.pwm_level_max)
1501 panel->backlight.pwm_level_max = get_backlight_max_vbt(connector);
1503 if (!panel->backlight.pwm_level_max)
1506 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector);
1508 panel->backlight.pwm_enabled = pwm_ctl & BXT_BLC_PWM_ENABLE;
1513 panel->backlight.controller);
1522 struct intel_panel *panel = &connector->panel;
1527 if (connector->panel.vbt.dsi.config->pwm_blc == PPS_BLC_PMIC) {
1528 panel->backlight.pwm = pwm_get(i915->drm.dev, "pwm_pmic_backlight");
1531 panel->backlight.pwm = pwm_get(i915->drm.dev, "pwm_soc_backlight");
1535 if (IS_ERR(panel->backlight.pwm)) {
1538 panel->backlight.pwm = NULL;
1542 panel->backlight.pwm_level_max = 100; /* 100% */
1543 panel->backlight.pwm_level_min = get_backlight_min_vbt(connector);
1545 if (pwm_is_enabled(panel->backlight.pwm)) {
1547 pwm_get_state(panel->backlight.pwm, &panel->backlight.pwm_state);
1549 level = pwm_get_relative_duty_cycle(&panel->backlight.pwm_state,
1552 panel->backlight.pwm_enabled = true;
1556 NSEC_PER_SEC / (unsigned long)panel->backlight.pwm_state.period,
1560 panel->backlight.pwm_state.period =
1574 struct intel_panel *panel = &connector->panel;
1576 panel->backlight.pwm_funcs->set(conn_state,
1582 struct intel_panel *panel = &connector->panel;
1585 panel->backlight.pwm_funcs->get(connector, pipe));
1592 struct intel_panel *panel = &connector->panel;
1594 panel->backlight.pwm_funcs->enable(crtc_state, conn_state,
1601 struct intel_panel *panel = &connector->panel;
1603 panel->backlight.pwm_funcs->disable(conn_state,
1609 struct intel_panel *panel = &connector->panel;
1612 ret = panel->backlight.pwm_funcs->setup(connector, pipe);
1616 panel->backlight.min = panel->backlight.pwm_level_min;
1617 panel->backlight.max = panel->backlight.pwm_level_max;
1618 panel->backlight.level = intel_pwm_get_backlight(connector, pipe);
1619 panel->backlight.enabled = panel->backlight.pwm_enabled;
1631 struct intel_panel *panel = &connector->panel;
1633 if (!panel->backlight.present)
1637 if (!panel->backlight.enabled)
1646 struct intel_panel *panel = &connector->panel;
1649 if (!connector->panel.vbt.backlight.present) {
1663 if (drm_WARN_ON(&i915->drm, !panel->backlight.funcs))
1666 /* set level and max in panel struct */
1668 ret = panel->backlight.funcs->setup(connector, pipe);
1678 panel->backlight.present = true;
1683 str_enabled_disabled(panel->backlight.enabled),
1684 panel->backlight.level, panel->backlight.max);
1689 void intel_backlight_destroy(struct intel_panel *panel)
1692 if (panel->backlight.pwm)
1693 pwm_put(panel->backlight.pwm);
1695 panel->backlight.present = false;
1787 void intel_backlight_init_funcs(struct intel_panel *panel)
1790 container_of(panel, struct intel_connector, panel);
1798 panel->backlight.pwm_funcs = &bxt_pwm_funcs;
1800 panel->backlight.pwm_funcs = &cnp_pwm_funcs;
1803 panel->backlight.pwm_funcs = &lpt_pwm_funcs;
1805 panel->backlight.pwm_funcs = &spt_pwm_funcs;
1807 panel->backlight.pwm_funcs = &pch_pwm_funcs;
1810 panel->backlight.pwm_funcs = &ext_pwm_funcs;
1812 panel->backlight.pwm_funcs = &vlv_pwm_funcs;
1815 panel->backlight.pwm_funcs = &i965_pwm_funcs;
1817 panel->backlight.pwm_funcs = &i9xx_pwm_funcs;
1825 connector->panel.backlight.power = intel_pps_backlight_power;
1829 panel->backlight.funcs = &pwm_bl_funcs;