Lines Matching refs:panel

793 		    struct intel_panel *panel)  in parse_panel_options()  argument
796 int panel_type = panel->vbt.panel_type; in parse_panel_options()
803 panel->vbt.lvds_dither = lfp_options->pixel_dither; in parse_panel_options()
822 panel->vbt.drrs_type = DRRS_TYPE_STATIC; in parse_panel_options()
826 panel->vbt.drrs_type = DRRS_TYPE_SEAMLESS; in parse_panel_options()
831 panel->vbt.drrs_type = DRRS_TYPE_NONE; in parse_panel_options()
840 struct intel_panel *panel, in parse_lfp_panel_dtd() argument
847 int panel_type = panel->vbt.panel_type; in parse_lfp_panel_dtd()
859 panel->vbt.lfp_vbt_mode = panel_fixed_mode; in parse_lfp_panel_dtd()
872 panel->vbt.bios_lvds_val = fp_timing->lvds_reg_val; in parse_lfp_panel_dtd()
875 panel->vbt.bios_lvds_val); in parse_lfp_panel_dtd()
881 struct intel_panel *panel) in parse_lfp_data() argument
888 int panel_type = panel->vbt.panel_type; in parse_lfp_data()
898 if (!panel->vbt.lfp_vbt_mode) in parse_lfp_data()
899 parse_lfp_panel_dtd(display, panel, data, ptrs); in parse_lfp_data()
915 panel->vbt.seamless_drrs_min_refresh_rate = in parse_lfp_data()
919 panel->vbt.seamless_drrs_min_refresh_rate); in parse_lfp_data()
925 struct intel_panel *panel) in parse_generic_dtd() argument
960 if (panel->vbt.panel_type >= num_dtd) { in parse_generic_dtd()
963 panel->vbt.panel_type, num_dtd); in parse_generic_dtd()
967 dtd = &generic_dtd->dtd[panel->vbt.panel_type]; in parse_generic_dtd()
1010 panel->vbt.lfp_vbt_mode = panel_fixed_mode; in parse_generic_dtd()
1015 struct intel_panel *panel) in parse_lfp_backlight() argument
1019 int panel_type = panel->vbt.panel_type; in parse_lfp_backlight()
1035 panel->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM; in parse_lfp_backlight()
1036 if (!panel->vbt.backlight.present) { in parse_lfp_backlight()
1043 panel->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI; in parse_lfp_backlight()
1044 panel->vbt.backlight.controller = 0; in parse_lfp_backlight()
1049 panel->vbt.backlight.type = method->type; in parse_lfp_backlight()
1050 panel->vbt.backlight.controller = method->controller; in parse_lfp_backlight()
1053 panel->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz; in parse_lfp_backlight()
1054 panel->vbt.backlight.active_low_pwm = entry->active_low_pwm; in parse_lfp_backlight()
1075 panel->vbt.backlight.min_brightness = min_level; in parse_lfp_backlight()
1077 panel->vbt.backlight.brightness_precision_bits = in parse_lfp_backlight()
1081 panel->vbt.backlight.min_brightness = entry->min_brightness; in parse_lfp_backlight()
1085 panel->vbt.backlight.hdr_dpcd_refresh_timeout = in parse_lfp_backlight()
1088 panel->vbt.backlight.hdr_dpcd_refresh_timeout = 30; in parse_lfp_backlight()
1093 panel->vbt.backlight.pwm_freq_hz, in parse_lfp_backlight()
1094 panel->vbt.backlight.active_low_pwm ? "low" : "high", in parse_lfp_backlight()
1095 panel->vbt.backlight.min_brightness, in parse_lfp_backlight()
1097 panel->vbt.backlight.controller); in parse_lfp_backlight()
1102 struct intel_panel *panel) in parse_sdvo_lvds_data() argument
1148 panel->vbt.sdvo_lvds_vbt_mode = panel_fixed_mode; in parse_sdvo_lvds_data()
1330 struct intel_panel *panel) in parse_panel_driver_features() argument
1347 if (!driver->drrs_enabled && panel->vbt.drrs_type != DRRS_TYPE_NONE) { in parse_panel_driver_features()
1353 panel->vbt.drrs_type = DRRS_TYPE_STATIC; in parse_panel_driver_features()
1355 panel->vbt.drrs_type = DRRS_TYPE_NONE; in parse_panel_driver_features()
1358 panel->vbt.psr.enable = driver->psr_enabled; in parse_panel_driver_features()
1364 struct intel_panel *panel) in parse_power_conservation_features() argument
1367 u8 panel_type = panel->vbt.panel_type; in parse_power_conservation_features()
1369 panel->vbt.vrr = true; /* matches Windows behaviour */ in parse_power_conservation_features()
1378 panel->vbt.psr.enable = panel_bool(power->psr, panel_type); in parse_power_conservation_features()
1386 if (!panel_bool(power->drrs, panel_type) && panel->vbt.drrs_type != DRRS_TYPE_NONE) { in parse_power_conservation_features()
1392 panel->vbt.drrs_type = DRRS_TYPE_STATIC; in parse_power_conservation_features()
1394 panel->vbt.drrs_type = DRRS_TYPE_NONE; in parse_power_conservation_features()
1398 panel->vbt.edp.hobl = panel_bool(power->hobl, panel_type); in parse_power_conservation_features()
1401 panel->vbt.vrr = panel_bool(power->vrr_feature_enabled, in parse_power_conservation_features()
1417 struct intel_panel *panel) in parse_edp() argument
1421 int panel_type = panel->vbt.panel_type; in parse_edp()
1429 panel->vbt.edp.bpp = 18; in parse_edp()
1432 panel->vbt.edp.bpp = 24; in parse_edp()
1435 panel->vbt.edp.bpp = 30; in parse_edp()
1442 vbt_edp_to_pps_delays(&panel->vbt.edp.pps, in parse_edp()
1446 panel->vbt.edp.rate = in parse_edp()
1451 panel->vbt.edp.rate = 162000; in parse_edp()
1454 panel->vbt.edp.rate = 270000; in parse_edp()
1457 panel->vbt.edp.rate = 540000; in parse_edp()
1469 panel->vbt.edp.lanes = 1; in parse_edp()
1472 panel->vbt.edp.lanes = 2; in parse_edp()
1475 panel->vbt.edp.lanes = 4; in parse_edp()
1486 panel->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_0; in parse_edp()
1489 panel->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_1; in parse_edp()
1492 panel->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_2; in parse_edp()
1495 panel->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3; in parse_edp()
1506 panel->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_0; in parse_edp()
1509 panel->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_1; in parse_edp()
1512 panel->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_2; in parse_edp()
1515 panel->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3; in parse_edp()
1529 panel->vbt.edp.low_vswing = in parse_edp()
1533 panel->vbt.edp.low_vswing = vswing == 0; in parse_edp()
1537 panel->vbt.edp.drrs_msa_timing_delay = in parse_edp()
1541 panel->vbt.edp.max_link_rate = in parse_edp()
1545 panel->vbt.edp.dsc_disable = in parse_edp()
1551 struct intel_panel *panel) in parse_psr() argument
1555 int panel_type = panel->vbt.panel_type; in parse_psr()
1565 panel->vbt.psr.full_link = psr_table->full_link; in parse_psr()
1566 panel->vbt.psr.require_aux_wakeup = psr_table->require_aux_to_wakeup; in parse_psr()
1569 panel->vbt.psr.idle_frames = psr_table->idle_frames < 0 ? 0 : in parse_psr()
1580 panel->vbt.psr.tp1_wakeup_time_us = 500; in parse_psr()
1583 panel->vbt.psr.tp1_wakeup_time_us = 100; in parse_psr()
1586 panel->vbt.psr.tp1_wakeup_time_us = 0; in parse_psr()
1594 panel->vbt.psr.tp1_wakeup_time_us = 2500; in parse_psr()
1600 panel->vbt.psr.tp2_tp3_wakeup_time_us = 500; in parse_psr()
1603 panel->vbt.psr.tp2_tp3_wakeup_time_us = 100; in parse_psr()
1606 panel->vbt.psr.tp2_tp3_wakeup_time_us = 0; in parse_psr()
1614 panel->vbt.psr.tp2_tp3_wakeup_time_us = 2500; in parse_psr()
1618 panel->vbt.psr.tp1_wakeup_time_us = psr_table->tp1_wakeup_time * 100; in parse_psr()
1619 panel->vbt.psr.tp2_tp3_wakeup_time_us = psr_table->tp2_tp3_wakeup_time * 100; in parse_psr()
1641 panel->vbt.psr.psr2_tp2_tp3_wakeup_time_us = wakeup_time; in parse_psr()
1644 panel->vbt.psr.psr2_tp2_tp3_wakeup_time_us = panel->vbt.psr.tp2_tp3_wakeup_time_us; in parse_psr()
1649 struct intel_panel *panel, in parse_dsi_backlight_ports() argument
1654 if (!panel->vbt.dsi.config->dual_link || display->vbt.version < 197) { in parse_dsi_backlight_ports()
1655 panel->vbt.dsi.bl_ports = BIT(port); in parse_dsi_backlight_ports()
1656 if (panel->vbt.dsi.config->cabc_supported) in parse_dsi_backlight_ports()
1657 panel->vbt.dsi.cabc_ports = BIT(port); in parse_dsi_backlight_ports()
1662 switch (panel->vbt.dsi.config->dl_dcs_backlight_ports) { in parse_dsi_backlight_ports()
1664 panel->vbt.dsi.bl_ports = BIT(PORT_A); in parse_dsi_backlight_ports()
1667 panel->vbt.dsi.bl_ports = BIT(port_bc); in parse_dsi_backlight_ports()
1671 panel->vbt.dsi.bl_ports = BIT(PORT_A) | BIT(port_bc); in parse_dsi_backlight_ports()
1675 if (!panel->vbt.dsi.config->cabc_supported) in parse_dsi_backlight_ports()
1678 switch (panel->vbt.dsi.config->dl_dcs_cabc_ports) { in parse_dsi_backlight_ports()
1680 panel->vbt.dsi.cabc_ports = BIT(PORT_A); in parse_dsi_backlight_ports()
1683 panel->vbt.dsi.cabc_ports = BIT(port_bc); in parse_dsi_backlight_ports()
1687 panel->vbt.dsi.cabc_ports = in parse_dsi_backlight_ports()
1695 struct intel_panel *panel) in parse_mipi_config() argument
1700 int panel_type = panel->vbt.panel_type; in parse_mipi_config()
1708 panel->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID; in parse_mipi_config()
1727 panel->vbt.dsi.config = kmemdup(config, sizeof(struct mipi_config), GFP_KERNEL); in parse_mipi_config()
1728 if (!panel->vbt.dsi.config) in parse_mipi_config()
1731 panel->vbt.dsi.pps = kmemdup(pps, sizeof(struct mipi_pps_data), GFP_KERNEL); in parse_mipi_config()
1732 if (!panel->vbt.dsi.pps) { in parse_mipi_config()
1733 kfree(panel->vbt.dsi.config); in parse_mipi_config()
1737 parse_dsi_backlight_ports(display, panel, port); in parse_mipi_config()
1746 panel->vbt.dsi.orientation = in parse_mipi_config()
1750 panel->vbt.dsi.orientation = in parse_mipi_config()
1754 panel->vbt.dsi.orientation = in parse_mipi_config()
1758 panel->vbt.dsi.orientation = in parse_mipi_config()
1764 panel->vbt.dsi.panel_id = MIPI_DSI_GENERIC_PANEL_ID; in parse_mipi_config()
1934 struct intel_panel *panel) in get_init_otp_deassert_fragment_len() argument
1936 const u8 *data = panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP]; in get_init_otp_deassert_fragment_len()
1940 !data || panel->vbt.dsi.seq_version != 1)) in get_init_otp_deassert_fragment_len()
1969 struct intel_panel *panel) in vlv_fixup_mipi_sequences() argument
1975 if (panel->vbt.dsi.config->is_cmd_mode || in vlv_fixup_mipi_sequences()
1976 panel->vbt.dsi.seq_version != 1) in vlv_fixup_mipi_sequences()
1980 if (!panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] || in vlv_fixup_mipi_sequences()
1981 !panel->vbt.dsi.sequence[MIPI_SEQ_ASSERT_RESET] || in vlv_fixup_mipi_sequences()
1982 panel->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET]) in vlv_fixup_mipi_sequences()
1986 len = get_init_otp_deassert_fragment_len(display, panel); in vlv_fixup_mipi_sequences()
1994 init_otp = (u8 *)panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP]; in vlv_fixup_mipi_sequences()
1995 panel->vbt.dsi.deassert_seq = kmemdup(init_otp, len + 1, GFP_KERNEL); in vlv_fixup_mipi_sequences()
1996 if (!panel->vbt.dsi.deassert_seq) in vlv_fixup_mipi_sequences()
1998 panel->vbt.dsi.deassert_seq[0] = MIPI_SEQ_DEASSERT_RESET; in vlv_fixup_mipi_sequences()
1999 panel->vbt.dsi.deassert_seq[len] = MIPI_SEQ_ELEM_END; in vlv_fixup_mipi_sequences()
2001 panel->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET] = in vlv_fixup_mipi_sequences()
2002 panel->vbt.dsi.deassert_seq; in vlv_fixup_mipi_sequences()
2006 panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] = init_otp + len - 1; in vlv_fixup_mipi_sequences()
2024 struct intel_panel *panel) in icl_fixup_mipi_sequences() argument
2026 if (!panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] && in icl_fixup_mipi_sequences()
2027 panel->vbt.dsi.sequence[MIPI_SEQ_DISPLAY_ON]) { in icl_fixup_mipi_sequences()
2031 swap(panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP], in icl_fixup_mipi_sequences()
2032 panel->vbt.dsi.sequence[MIPI_SEQ_DISPLAY_ON]); in icl_fixup_mipi_sequences()
2037 struct intel_panel *panel) in fixup_mipi_sequences() argument
2040 icl_fixup_mipi_sequences(display, panel); in fixup_mipi_sequences()
2042 vlv_fixup_mipi_sequences(display, panel); in fixup_mipi_sequences()
2047 struct intel_panel *panel) in parse_mipi_sequence() argument
2049 int panel_type = panel->vbt.panel_type; in parse_mipi_sequence()
2057 if (panel->vbt.dsi.panel_id != MIPI_DSI_GENERIC_PANEL_ID) in parse_mipi_sequence()
2103 panel->vbt.dsi.sequence[seq_id] = data + index; in parse_mipi_sequence()
2116 panel->vbt.dsi.data = data; in parse_mipi_sequence()
2117 panel->vbt.dsi.size = seq_size; in parse_mipi_sequence()
2118 panel->vbt.dsi.seq_version = sequence->version; in parse_mipi_sequence()
2120 fixup_mipi_sequences(display, panel); in parse_mipi_sequence()
2127 memset(panel->vbt.dsi.sequence, 0, sizeof(panel->vbt.dsi.sequence)); in parse_mipi_sequence()
2892 init_vbt_panel_defaults(struct intel_panel *panel) in init_vbt_panel_defaults() argument
2895 panel->vbt.backlight.present = true; in init_vbt_panel_defaults()
2898 panel->vbt.lvds_dither = true; in init_vbt_panel_defaults()
3203 struct intel_panel *panel, in intel_bios_init_panel() argument
3209 if (panel->vbt.panel_type >= 0) { in intel_bios_init_panel()
3214 panel->vbt.panel_type = get_panel_type(display, devdata, in intel_bios_init_panel()
3216 if (panel->vbt.panel_type < 0) { in intel_bios_init_panel()
3221 init_vbt_panel_defaults(panel); in intel_bios_init_panel()
3223 parse_panel_options(display, panel); in intel_bios_init_panel()
3224 parse_generic_dtd(display, panel); in intel_bios_init_panel()
3225 parse_lfp_data(display, panel); in intel_bios_init_panel()
3226 parse_lfp_backlight(display, panel); in intel_bios_init_panel()
3227 parse_sdvo_lvds_data(display, panel); in intel_bios_init_panel()
3228 parse_panel_driver_features(display, panel); in intel_bios_init_panel()
3229 parse_power_conservation_features(display, panel); in intel_bios_init_panel()
3230 parse_edp(display, panel); in intel_bios_init_panel()
3231 parse_psr(display, panel); in intel_bios_init_panel()
3232 parse_mipi_config(display, panel); in intel_bios_init_panel()
3233 parse_mipi_sequence(display, panel); in intel_bios_init_panel()
3237 struct intel_panel *panel, in intel_bios_init_panel_early() argument
3240 intel_bios_init_panel(display, panel, devdata, NULL, false); in intel_bios_init_panel_early()
3244 struct intel_panel *panel, in intel_bios_init_panel_late() argument
3248 intel_bios_init_panel(display, panel, devdata, drm_edid, true); in intel_bios_init_panel_late()
3273 void intel_bios_fini_panel(struct intel_panel *panel) in intel_bios_fini_panel() argument
3275 kfree(panel->vbt.sdvo_lvds_vbt_mode); in intel_bios_fini_panel()
3276 panel->vbt.sdvo_lvds_vbt_mode = NULL; in intel_bios_fini_panel()
3277 kfree(panel->vbt.lfp_vbt_mode); in intel_bios_fini_panel()
3278 panel->vbt.lfp_vbt_mode = NULL; in intel_bios_fini_panel()
3279 kfree(panel->vbt.dsi.data); in intel_bios_fini_panel()
3280 panel->vbt.dsi.data = NULL; in intel_bios_fini_panel()
3281 kfree(panel->vbt.dsi.pps); in intel_bios_fini_panel()
3282 panel->vbt.dsi.pps = NULL; in intel_bios_fini_panel()
3283 kfree(panel->vbt.dsi.config); in intel_bios_fini_panel()
3284 panel->vbt.dsi.config = NULL; in intel_bios_fini_panel()
3285 kfree(panel->vbt.dsi.deassert_seq); in intel_bios_fini_panel()
3286 panel->vbt.dsi.deassert_seq = NULL; in intel_bios_fini_panel()