Lines Matching refs:panel
795 struct intel_panel *panel) in parse_panel_options() argument
798 int panel_type = panel->vbt.panel_type; in parse_panel_options()
805 panel->vbt.lvds_dither = lfp_options->pixel_dither; in parse_panel_options()
824 panel->vbt.drrs_type = DRRS_TYPE_STATIC; in parse_panel_options()
828 panel->vbt.drrs_type = DRRS_TYPE_SEAMLESS; in parse_panel_options()
833 panel->vbt.drrs_type = DRRS_TYPE_NONE; in parse_panel_options()
842 struct intel_panel *panel, in parse_lfp_panel_dtd() argument
849 int panel_type = panel->vbt.panel_type; in parse_lfp_panel_dtd()
861 panel->vbt.lfp_vbt_mode = panel_fixed_mode; in parse_lfp_panel_dtd()
874 panel->vbt.bios_lvds_val = fp_timing->lvds_reg_val; in parse_lfp_panel_dtd()
877 panel->vbt.bios_lvds_val); in parse_lfp_panel_dtd()
883 struct intel_panel *panel) in parse_lfp_data() argument
890 int panel_type = panel->vbt.panel_type; in parse_lfp_data()
900 if (!panel->vbt.lfp_vbt_mode) in parse_lfp_data()
901 parse_lfp_panel_dtd(display, panel, data, ptrs); in parse_lfp_data()
917 panel->vbt.seamless_drrs_min_refresh_rate = in parse_lfp_data()
921 panel->vbt.seamless_drrs_min_refresh_rate); in parse_lfp_data()
927 struct intel_panel *panel) in parse_generic_dtd() argument
962 if (panel->vbt.panel_type >= num_dtd) { in parse_generic_dtd()
965 panel->vbt.panel_type, num_dtd); in parse_generic_dtd()
969 dtd = &generic_dtd->dtd[panel->vbt.panel_type]; in parse_generic_dtd()
1012 panel->vbt.lfp_vbt_mode = panel_fixed_mode; in parse_generic_dtd()
1017 struct intel_panel *panel) in parse_lfp_backlight() argument
1021 int panel_type = panel->vbt.panel_type; in parse_lfp_backlight()
1037 panel->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM; in parse_lfp_backlight()
1038 if (!panel->vbt.backlight.present) { in parse_lfp_backlight()
1045 panel->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI; in parse_lfp_backlight()
1046 panel->vbt.backlight.controller = 0; in parse_lfp_backlight()
1051 panel->vbt.backlight.type = method->type; in parse_lfp_backlight()
1052 panel->vbt.backlight.controller = method->controller; in parse_lfp_backlight()
1055 panel->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz; in parse_lfp_backlight()
1056 panel->vbt.backlight.active_low_pwm = entry->active_low_pwm; in parse_lfp_backlight()
1077 panel->vbt.backlight.min_brightness = min_level; in parse_lfp_backlight()
1079 panel->vbt.backlight.brightness_precision_bits = in parse_lfp_backlight()
1083 panel->vbt.backlight.min_brightness = entry->min_brightness; in parse_lfp_backlight()
1087 panel->vbt.backlight.hdr_dpcd_refresh_timeout = in parse_lfp_backlight()
1090 panel->vbt.backlight.hdr_dpcd_refresh_timeout = 30; in parse_lfp_backlight()
1095 panel->vbt.backlight.pwm_freq_hz, in parse_lfp_backlight()
1096 panel->vbt.backlight.active_low_pwm ? "low" : "high", in parse_lfp_backlight()
1097 panel->vbt.backlight.min_brightness, in parse_lfp_backlight()
1099 panel->vbt.backlight.controller); in parse_lfp_backlight()
1104 struct intel_panel *panel) in parse_sdvo_lvds_data() argument
1150 panel->vbt.sdvo_lvds_vbt_mode = panel_fixed_mode; in parse_sdvo_lvds_data()
1332 struct intel_panel *panel) in parse_panel_driver_features() argument
1349 if (!driver->drrs_enabled && panel->vbt.drrs_type != DRRS_TYPE_NONE) { in parse_panel_driver_features()
1355 panel->vbt.drrs_type = DRRS_TYPE_STATIC; in parse_panel_driver_features()
1357 panel->vbt.drrs_type = DRRS_TYPE_NONE; in parse_panel_driver_features()
1360 panel->vbt.psr.enable = driver->psr_enabled; in parse_panel_driver_features()
1366 struct intel_panel *panel) in parse_power_conservation_features() argument
1369 u8 panel_type = panel->vbt.panel_type; in parse_power_conservation_features()
1371 panel->vbt.vrr = true; /* matches Windows behaviour */ in parse_power_conservation_features()
1380 panel->vbt.psr.enable = panel_bool(power->psr, panel_type); in parse_power_conservation_features()
1388 if (!panel_bool(power->drrs, panel_type) && panel->vbt.drrs_type != DRRS_TYPE_NONE) { in parse_power_conservation_features()
1394 panel->vbt.drrs_type = DRRS_TYPE_STATIC; in parse_power_conservation_features()
1396 panel->vbt.drrs_type = DRRS_TYPE_NONE; in parse_power_conservation_features()
1400 panel->vbt.edp.hobl = panel_bool(power->hobl, panel_type); in parse_power_conservation_features()
1403 panel->vbt.vrr = panel_bool(power->vrr_feature_enabled, in parse_power_conservation_features()
1419 struct intel_panel *panel) in parse_edp() argument
1423 int panel_type = panel->vbt.panel_type; in parse_edp()
1431 panel->vbt.edp.bpp = 18; in parse_edp()
1434 panel->vbt.edp.bpp = 24; in parse_edp()
1437 panel->vbt.edp.bpp = 30; in parse_edp()
1444 vbt_edp_to_pps_delays(&panel->vbt.edp.pps, in parse_edp()
1448 panel->vbt.edp.rate = in parse_edp()
1453 panel->vbt.edp.rate = 162000; in parse_edp()
1456 panel->vbt.edp.rate = 270000; in parse_edp()
1459 panel->vbt.edp.rate = 540000; in parse_edp()
1471 panel->vbt.edp.lanes = 1; in parse_edp()
1474 panel->vbt.edp.lanes = 2; in parse_edp()
1477 panel->vbt.edp.lanes = 4; in parse_edp()
1488 panel->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_0; in parse_edp()
1491 panel->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_1; in parse_edp()
1494 panel->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_2; in parse_edp()
1497 panel->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3; in parse_edp()
1508 panel->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_0; in parse_edp()
1511 panel->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_1; in parse_edp()
1514 panel->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_2; in parse_edp()
1517 panel->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3; in parse_edp()
1531 panel->vbt.edp.low_vswing = in parse_edp()
1535 panel->vbt.edp.low_vswing = vswing == 0; in parse_edp()
1539 panel->vbt.edp.drrs_msa_timing_delay = in parse_edp()
1543 panel->vbt.edp.max_link_rate = in parse_edp()
1547 panel->vbt.edp.dsc_disable = in parse_edp()
1553 struct intel_panel *panel) in parse_psr() argument
1557 int panel_type = panel->vbt.panel_type; in parse_psr()
1567 panel->vbt.psr.full_link = psr_table->full_link; in parse_psr()
1568 panel->vbt.psr.require_aux_wakeup = psr_table->require_aux_to_wakeup; in parse_psr()
1571 panel->vbt.psr.idle_frames = psr_table->idle_frames < 0 ? 0 : in parse_psr()
1582 panel->vbt.psr.tp1_wakeup_time_us = 500; in parse_psr()
1585 panel->vbt.psr.tp1_wakeup_time_us = 100; in parse_psr()
1588 panel->vbt.psr.tp1_wakeup_time_us = 0; in parse_psr()
1596 panel->vbt.psr.tp1_wakeup_time_us = 2500; in parse_psr()
1602 panel->vbt.psr.tp2_tp3_wakeup_time_us = 500; in parse_psr()
1605 panel->vbt.psr.tp2_tp3_wakeup_time_us = 100; in parse_psr()
1608 panel->vbt.psr.tp2_tp3_wakeup_time_us = 0; in parse_psr()
1616 panel->vbt.psr.tp2_tp3_wakeup_time_us = 2500; in parse_psr()
1620 panel->vbt.psr.tp1_wakeup_time_us = psr_table->tp1_wakeup_time * 100; in parse_psr()
1621 panel->vbt.psr.tp2_tp3_wakeup_time_us = psr_table->tp2_tp3_wakeup_time * 100; in parse_psr()
1643 panel->vbt.psr.psr2_tp2_tp3_wakeup_time_us = wakeup_time; in parse_psr()
1646 panel->vbt.psr.psr2_tp2_tp3_wakeup_time_us = panel->vbt.psr.tp2_tp3_wakeup_time_us; in parse_psr()
1651 struct intel_panel *panel, in parse_dsi_backlight_ports() argument
1656 if (!panel->vbt.dsi.config->dual_link || display->vbt.version < 197) { in parse_dsi_backlight_ports()
1657 panel->vbt.dsi.bl_ports = BIT(port); in parse_dsi_backlight_ports()
1658 if (panel->vbt.dsi.config->cabc_supported) in parse_dsi_backlight_ports()
1659 panel->vbt.dsi.cabc_ports = BIT(port); in parse_dsi_backlight_ports()
1664 switch (panel->vbt.dsi.config->dl_dcs_backlight_ports) { in parse_dsi_backlight_ports()
1666 panel->vbt.dsi.bl_ports = BIT(PORT_A); in parse_dsi_backlight_ports()
1669 panel->vbt.dsi.bl_ports = BIT(port_bc); in parse_dsi_backlight_ports()
1673 panel->vbt.dsi.bl_ports = BIT(PORT_A) | BIT(port_bc); in parse_dsi_backlight_ports()
1677 if (!panel->vbt.dsi.config->cabc_supported) in parse_dsi_backlight_ports()
1680 switch (panel->vbt.dsi.config->dl_dcs_cabc_ports) { in parse_dsi_backlight_ports()
1682 panel->vbt.dsi.cabc_ports = BIT(PORT_A); in parse_dsi_backlight_ports()
1685 panel->vbt.dsi.cabc_ports = BIT(port_bc); in parse_dsi_backlight_ports()
1689 panel->vbt.dsi.cabc_ports = in parse_dsi_backlight_ports()
1697 struct intel_panel *panel) in parse_mipi_config() argument
1702 int panel_type = panel->vbt.panel_type; in parse_mipi_config()
1710 panel->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID; in parse_mipi_config()
1729 panel->vbt.dsi.config = kmemdup(config, sizeof(struct mipi_config), GFP_KERNEL); in parse_mipi_config()
1730 if (!panel->vbt.dsi.config) in parse_mipi_config()
1733 panel->vbt.dsi.pps = kmemdup(pps, sizeof(struct mipi_pps_data), GFP_KERNEL); in parse_mipi_config()
1734 if (!panel->vbt.dsi.pps) { in parse_mipi_config()
1735 kfree(panel->vbt.dsi.config); in parse_mipi_config()
1739 parse_dsi_backlight_ports(display, panel, port); in parse_mipi_config()
1748 panel->vbt.dsi.orientation = in parse_mipi_config()
1752 panel->vbt.dsi.orientation = in parse_mipi_config()
1756 panel->vbt.dsi.orientation = in parse_mipi_config()
1760 panel->vbt.dsi.orientation = in parse_mipi_config()
1766 panel->vbt.dsi.panel_id = MIPI_DSI_GENERIC_PANEL_ID; in parse_mipi_config()
1936 struct intel_panel *panel) in get_init_otp_deassert_fragment_len() argument
1938 const u8 *data = panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP]; in get_init_otp_deassert_fragment_len()
1942 !data || panel->vbt.dsi.seq_version >= 3)) in get_init_otp_deassert_fragment_len()
1971 struct intel_panel *panel) in vlv_fixup_mipi_sequences() argument
1977 if (panel->vbt.dsi.config->is_cmd_mode || in vlv_fixup_mipi_sequences()
1978 panel->vbt.dsi.seq_version >= 3) in vlv_fixup_mipi_sequences()
1982 if (!panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] || in vlv_fixup_mipi_sequences()
1983 !panel->vbt.dsi.sequence[MIPI_SEQ_ASSERT_RESET] || in vlv_fixup_mipi_sequences()
1984 panel->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET]) in vlv_fixup_mipi_sequences()
1988 len = get_init_otp_deassert_fragment_len(display, panel); in vlv_fixup_mipi_sequences()
1996 init_otp = (u8 *)panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP]; in vlv_fixup_mipi_sequences()
1997 panel->vbt.dsi.deassert_seq = kmemdup(init_otp, len + 1, GFP_KERNEL); in vlv_fixup_mipi_sequences()
1998 if (!panel->vbt.dsi.deassert_seq) in vlv_fixup_mipi_sequences()
2000 panel->vbt.dsi.deassert_seq[0] = MIPI_SEQ_DEASSERT_RESET; in vlv_fixup_mipi_sequences()
2001 panel->vbt.dsi.deassert_seq[len] = MIPI_SEQ_ELEM_END; in vlv_fixup_mipi_sequences()
2003 panel->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET] = in vlv_fixup_mipi_sequences()
2004 panel->vbt.dsi.deassert_seq; in vlv_fixup_mipi_sequences()
2008 panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] = init_otp + len - 1; in vlv_fixup_mipi_sequences()
2026 struct intel_panel *panel) in icl_fixup_mipi_sequences() argument
2028 if (!panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] && in icl_fixup_mipi_sequences()
2029 panel->vbt.dsi.sequence[MIPI_SEQ_DISPLAY_ON]) { in icl_fixup_mipi_sequences()
2033 swap(panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP], in icl_fixup_mipi_sequences()
2034 panel->vbt.dsi.sequence[MIPI_SEQ_DISPLAY_ON]); in icl_fixup_mipi_sequences()
2039 struct intel_panel *panel) in fixup_mipi_sequences() argument
2042 icl_fixup_mipi_sequences(display, panel); in fixup_mipi_sequences()
2044 vlv_fixup_mipi_sequences(display, panel); in fixup_mipi_sequences()
2049 struct intel_panel *panel) in parse_mipi_sequence() argument
2051 int panel_type = panel->vbt.panel_type; in parse_mipi_sequence()
2059 if (panel->vbt.dsi.panel_id != MIPI_DSI_GENERIC_PANEL_ID) in parse_mipi_sequence()
2105 panel->vbt.dsi.sequence[seq_id] = data + index; in parse_mipi_sequence()
2118 panel->vbt.dsi.data = data; in parse_mipi_sequence()
2119 panel->vbt.dsi.size = seq_size; in parse_mipi_sequence()
2120 panel->vbt.dsi.seq_version = sequence->version; in parse_mipi_sequence()
2122 fixup_mipi_sequences(display, panel); in parse_mipi_sequence()
2129 memset(panel->vbt.dsi.sequence, 0, sizeof(panel->vbt.dsi.sequence)); in parse_mipi_sequence()
2891 init_vbt_panel_defaults(struct intel_panel *panel) in init_vbt_panel_defaults() argument
2894 panel->vbt.backlight.present = true; in init_vbt_panel_defaults()
2897 panel->vbt.lvds_dither = true; in init_vbt_panel_defaults()
3200 struct intel_panel *panel, in intel_bios_init_panel() argument
3206 if (panel->vbt.panel_type >= 0) { in intel_bios_init_panel()
3211 panel->vbt.panel_type = get_panel_type(display, devdata, in intel_bios_init_panel()
3213 if (panel->vbt.panel_type < 0) { in intel_bios_init_panel()
3218 init_vbt_panel_defaults(panel); in intel_bios_init_panel()
3220 parse_panel_options(display, panel); in intel_bios_init_panel()
3221 parse_generic_dtd(display, panel); in intel_bios_init_panel()
3222 parse_lfp_data(display, panel); in intel_bios_init_panel()
3223 parse_lfp_backlight(display, panel); in intel_bios_init_panel()
3224 parse_sdvo_lvds_data(display, panel); in intel_bios_init_panel()
3225 parse_panel_driver_features(display, panel); in intel_bios_init_panel()
3226 parse_power_conservation_features(display, panel); in intel_bios_init_panel()
3227 parse_edp(display, panel); in intel_bios_init_panel()
3228 parse_psr(display, panel); in intel_bios_init_panel()
3229 parse_mipi_config(display, panel); in intel_bios_init_panel()
3230 parse_mipi_sequence(display, panel); in intel_bios_init_panel()
3234 struct intel_panel *panel, in intel_bios_init_panel_early() argument
3237 intel_bios_init_panel(display, panel, devdata, NULL, false); in intel_bios_init_panel_early()
3241 struct intel_panel *panel, in intel_bios_init_panel_late() argument
3245 intel_bios_init_panel(display, panel, devdata, drm_edid, true); in intel_bios_init_panel_late()
3270 void intel_bios_fini_panel(struct intel_panel *panel) in intel_bios_fini_panel() argument
3272 kfree(panel->vbt.sdvo_lvds_vbt_mode); in intel_bios_fini_panel()
3273 panel->vbt.sdvo_lvds_vbt_mode = NULL; in intel_bios_fini_panel()
3274 kfree(panel->vbt.lfp_vbt_mode); in intel_bios_fini_panel()
3275 panel->vbt.lfp_vbt_mode = NULL; in intel_bios_fini_panel()
3276 kfree(panel->vbt.dsi.data); in intel_bios_fini_panel()
3277 panel->vbt.dsi.data = NULL; in intel_bios_fini_panel()
3278 kfree(panel->vbt.dsi.pps); in intel_bios_fini_panel()
3279 panel->vbt.dsi.pps = NULL; in intel_bios_fini_panel()
3280 kfree(panel->vbt.dsi.config); in intel_bios_fini_panel()
3281 panel->vbt.dsi.config = NULL; in intel_bios_fini_panel()
3282 kfree(panel->vbt.dsi.deassert_seq); in intel_bios_fini_panel()
3283 panel->vbt.dsi.deassert_seq = NULL; in intel_bios_fini_panel()