Lines Matching refs:vbt
224 dev_priv->vbt.lvds_dither = lvds_options->pixel_dither; in parse_lfp_panel_data()
241 dev_priv->vbt.panel_type = panel_type; in parse_lfp_panel_data()
252 dev_priv->vbt.drrs_type = STATIC_DRRS_SUPPORT; in parse_lfp_panel_data()
256 dev_priv->vbt.drrs_type = SEAMLESS_DRRS_SUPPORT; in parse_lfp_panel_data()
260 dev_priv->vbt.drrs_type = DRRS_NOT_SUPPORTED; in parse_lfp_panel_data()
283 dev_priv->vbt.lfp_lvds_vbt_mode = panel_fixed_mode; in parse_lfp_panel_data()
295 dev_priv->vbt.bios_lvds_val = fp_timing->lvds_reg_val; in parse_lfp_panel_data()
297 dev_priv->vbt.bios_lvds_val); in parse_lfp_panel_data()
308 int panel_type = dev_priv->vbt.panel_type; in parse_lfp_backlight()
322 dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM; in parse_lfp_backlight()
323 if (!dev_priv->vbt.backlight.present) { in parse_lfp_backlight()
329 dev_priv->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI; in parse_lfp_backlight()
335 dev_priv->vbt.backlight.type = method->type; in parse_lfp_backlight()
336 dev_priv->vbt.backlight.controller = method->controller; in parse_lfp_backlight()
339 dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz; in parse_lfp_backlight()
340 dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm; in parse_lfp_backlight()
341 dev_priv->vbt.backlight.min_brightness = entry->min_brightness; in parse_lfp_backlight()
344 dev_priv->vbt.backlight.pwm_freq_hz, in parse_lfp_backlight()
345 dev_priv->vbt.backlight.active_low_pwm ? "low" : "high", in parse_lfp_backlight()
346 dev_priv->vbt.backlight.min_brightness, in parse_lfp_backlight()
348 dev_priv->vbt.backlight.controller); in parse_lfp_backlight()
386 dev_priv->vbt.sdvo_lvds_vbt_mode = panel_fixed_mode; in parse_sdvo_panel_data()
416 dev_priv->vbt.int_tv_support = general->int_tv_support; in parse_general_features()
420 dev_priv->vbt.int_crt_support = general->int_crt_support; in parse_general_features()
421 dev_priv->vbt.lvds_use_ssc = general->enable_ssc; in parse_general_features()
422 dev_priv->vbt.lvds_ssc_freq = in parse_general_features()
424 dev_priv->vbt.display_clock_mode = general->display_clock_mode; in parse_general_features()
425 dev_priv->vbt.fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted; in parse_general_features()
427 dev_priv->vbt.orientation = general->rotate_180 ? in parse_general_features()
431 dev_priv->vbt.orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN; in parse_general_features()
434 dev_priv->vbt.int_tv_support, in parse_general_features()
435 dev_priv->vbt.int_crt_support, in parse_general_features()
436 dev_priv->vbt.lvds_use_ssc, in parse_general_features()
437 dev_priv->vbt.lvds_ssc_freq, in parse_general_features()
438 dev_priv->vbt.display_clock_mode, in parse_general_features()
439 dev_priv->vbt.fdi_rx_polarity_inverted); in parse_general_features()
464 for (i = 0, count = 0; i < dev_priv->vbt.child_dev_num; i++) { in parse_sdvo_device_mapping()
465 child = dev_priv->vbt.child_dev + i; in parse_sdvo_device_mapping()
486 mapping = &dev_priv->vbt.sdvo_mappings[child->dvo_port - 1]; in parse_sdvo_device_mapping()
536 dev_priv->vbt.int_lvds_support = 0; in parse_driver_features()
552 dev_priv->vbt.int_lvds_support = 0; in parse_driver_features()
563 dev_priv->vbt.drrs_type = DRRS_NOT_SUPPORTED; in parse_driver_features()
564 dev_priv->vbt.psr.enable = driver->psr_enabled; in parse_driver_features()
573 int panel_type = dev_priv->vbt.panel_type; in parse_edp()
581 dev_priv->vbt.edp.bpp = 18; in parse_edp()
584 dev_priv->vbt.edp.bpp = 24; in parse_edp()
587 dev_priv->vbt.edp.bpp = 30; in parse_edp()
595 dev_priv->vbt.edp.pps = *edp_pps; in parse_edp()
599 dev_priv->vbt.edp.rate = DP_LINK_BW_1_62; in parse_edp()
602 dev_priv->vbt.edp.rate = DP_LINK_BW_2_7; in parse_edp()
612 dev_priv->vbt.edp.lanes = 1; in parse_edp()
615 dev_priv->vbt.edp.lanes = 2; in parse_edp()
618 dev_priv->vbt.edp.lanes = 4; in parse_edp()
628 dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_0; in parse_edp()
631 dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_1; in parse_edp()
634 dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_2; in parse_edp()
637 dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3; in parse_edp()
647 dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_0; in parse_edp()
650 dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_1; in parse_edp()
653 dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_2; in parse_edp()
656 dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3; in parse_edp()
669 dev_priv->vbt.edp.low_vswing = in parse_edp()
673 dev_priv->vbt.edp.low_vswing = vswing == 0; in parse_edp()
683 int panel_type = dev_priv->vbt.panel_type; in parse_psr()
693 dev_priv->vbt.psr.full_link = psr_table->full_link; in parse_psr()
694 dev_priv->vbt.psr.require_aux_wakeup = psr_table->require_aux_to_wakeup; in parse_psr()
697 dev_priv->vbt.psr.idle_frames = psr_table->idle_frames < 0 ? 0 : in parse_psr()
702 dev_priv->vbt.psr.lines_to_wait = PSR_0_LINES_TO_WAIT; in parse_psr()
705 dev_priv->vbt.psr.lines_to_wait = PSR_1_LINE_TO_WAIT; in parse_psr()
708 dev_priv->vbt.psr.lines_to_wait = PSR_4_LINES_TO_WAIT; in parse_psr()
711 dev_priv->vbt.psr.lines_to_wait = PSR_8_LINES_TO_WAIT; in parse_psr()
728 dev_priv->vbt.psr.tp1_wakeup_time_us = 500; in parse_psr()
731 dev_priv->vbt.psr.tp1_wakeup_time_us = 100; in parse_psr()
734 dev_priv->vbt.psr.tp1_wakeup_time_us = 0; in parse_psr()
741 dev_priv->vbt.psr.tp1_wakeup_time_us = 2500; in parse_psr()
747 dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 500; in parse_psr()
750 dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 100; in parse_psr()
753 dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 0; in parse_psr()
760 dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 2500; in parse_psr()
764 dev_priv->vbt.psr.tp1_wakeup_time_us = psr_table->tp1_wakeup_time * 100; in parse_psr()
765 dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = psr_table->tp2_tp3_wakeup_time * 100; in parse_psr()
787 dev_priv->vbt.psr.psr2_tp2_tp3_wakeup_time_us = wakeup_time; in parse_psr()
790 dev_priv->vbt.psr.psr2_tp2_tp3_wakeup_time_us = dev_priv->vbt.psr.tp2_tp3_wakeup_time_us; in parse_psr()
797 if (!dev_priv->vbt.dsi.config->dual_link || version < 197) { in parse_dsi_backlight_ports()
798 dev_priv->vbt.dsi.bl_ports = BIT(port); in parse_dsi_backlight_ports()
799 if (dev_priv->vbt.dsi.config->cabc_supported) in parse_dsi_backlight_ports()
800 dev_priv->vbt.dsi.cabc_ports = BIT(port); in parse_dsi_backlight_ports()
805 switch (dev_priv->vbt.dsi.config->dl_dcs_backlight_ports) { in parse_dsi_backlight_ports()
807 dev_priv->vbt.dsi.bl_ports = BIT(PORT_A); in parse_dsi_backlight_ports()
810 dev_priv->vbt.dsi.bl_ports = BIT(PORT_C); in parse_dsi_backlight_ports()
814 dev_priv->vbt.dsi.bl_ports = BIT(PORT_A) | BIT(PORT_C); in parse_dsi_backlight_ports()
818 if (!dev_priv->vbt.dsi.config->cabc_supported) in parse_dsi_backlight_ports()
821 switch (dev_priv->vbt.dsi.config->dl_dcs_cabc_ports) { in parse_dsi_backlight_ports()
823 dev_priv->vbt.dsi.cabc_ports = BIT(PORT_A); in parse_dsi_backlight_ports()
826 dev_priv->vbt.dsi.cabc_ports = BIT(PORT_C); in parse_dsi_backlight_ports()
830 dev_priv->vbt.dsi.cabc_ports = in parse_dsi_backlight_ports()
843 int panel_type = dev_priv->vbt.panel_type; in parse_mipi_config()
851 dev_priv->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID; in parse_mipi_config()
878 dev_priv->vbt.dsi.config = kmemdup(config, sizeof(struct mipi_config), GFP_KERNEL); in parse_mipi_config()
879 if (!dev_priv->vbt.dsi.config) in parse_mipi_config()
882 dev_priv->vbt.dsi.pps = kmemdup(pps, sizeof(struct mipi_pps_data), GFP_KERNEL); in parse_mipi_config()
883 if (!dev_priv->vbt.dsi.pps) { in parse_mipi_config()
884 kfree(dev_priv->vbt.dsi.config); in parse_mipi_config()
897 dev_priv->vbt.dsi.orientation = in parse_mipi_config()
901 dev_priv->vbt.dsi.orientation = in parse_mipi_config()
905 dev_priv->vbt.dsi.orientation = in parse_mipi_config()
909 dev_priv->vbt.dsi.orientation = in parse_mipi_config()
915 dev_priv->vbt.dsi.panel_id = MIPI_DSI_GENERIC_PANEL_ID; in parse_mipi_config()
1080 const u8 *data = dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP]; in get_init_otp_deassert_fragment_len()
1083 if (WARN_ON(!data || dev_priv->vbt.dsi.seq_version != 1)) in get_init_otp_deassert_fragment_len()
1121 if (dev_priv->vbt.dsi.config->is_cmd_mode || in fixup_mipi_sequences()
1122 dev_priv->vbt.dsi.seq_version != 1) in fixup_mipi_sequences()
1126 if (!dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] || in fixup_mipi_sequences()
1127 !dev_priv->vbt.dsi.sequence[MIPI_SEQ_ASSERT_RESET] || in fixup_mipi_sequences()
1128 dev_priv->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET]) in fixup_mipi_sequences()
1139 init_otp = (u8 *)dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP]; in fixup_mipi_sequences()
1140 dev_priv->vbt.dsi.deassert_seq = kmemdup(init_otp, len + 1, GFP_KERNEL); in fixup_mipi_sequences()
1141 if (!dev_priv->vbt.dsi.deassert_seq) in fixup_mipi_sequences()
1143 dev_priv->vbt.dsi.deassert_seq[0] = MIPI_SEQ_DEASSERT_RESET; in fixup_mipi_sequences()
1144 dev_priv->vbt.dsi.deassert_seq[len] = MIPI_SEQ_ELEM_END; in fixup_mipi_sequences()
1146 dev_priv->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET] = in fixup_mipi_sequences()
1147 dev_priv->vbt.dsi.deassert_seq; in fixup_mipi_sequences()
1151 dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] = init_otp + len - 1; in fixup_mipi_sequences()
1158 int panel_type = dev_priv->vbt.panel_type; in parse_mipi_sequence()
1166 if (dev_priv->vbt.dsi.panel_id != MIPI_DSI_GENERIC_PANEL_ID) in parse_mipi_sequence()
1207 dev_priv->vbt.dsi.sequence[seq_id] = data + index; in parse_mipi_sequence()
1219 dev_priv->vbt.dsi.data = data; in parse_mipi_sequence()
1220 dev_priv->vbt.dsi.size = seq_size; in parse_mipi_sequence()
1221 dev_priv->vbt.dsi.seq_version = sequence->version; in parse_mipi_sequence()
1230 memset(dev_priv->vbt.dsi.sequence, 0, sizeof(dev_priv->vbt.dsi.sequence)); in parse_mipi_sequence()
1250 info = &i915->vbt.ddi_port_info[port]; in get_port_by_ddc_pin()
1262 struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port]; in sanitize_ddc_pin()
1287 info = &dev_priv->vbt.ddi_port_info[p]; in sanitize_ddc_pin()
1301 info = &i915->vbt.ddi_port_info[port]; in get_port_by_aux_ch()
1313 struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port]; in sanitize_aux_ch()
1338 info = &dev_priv->vbt.ddi_port_info[p]; in sanitize_aux_ch()
1431 info = &dev_priv->vbt.ddi_port_info[port]; in parse_ddi_port()
1582 for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { in parse_ddi_ports()
1583 child = dev_priv->vbt.child_dev + i; in parse_ddi_ports()
1616 dev_priv->vbt.crt_ddc_pin = bus_pin; in parse_general_definitions()
1663 dev_priv->vbt.child_dev = kcalloc(count, sizeof(*child), GFP_KERNEL); in parse_general_definitions()
1664 if (!dev_priv->vbt.child_dev) { in parse_general_definitions()
1669 dev_priv->vbt.child_dev_num = count; in parse_general_definitions()
1684 memcpy(dev_priv->vbt.child_dev + count, child, in parse_general_definitions()
1696 dev_priv->vbt.crt_ddc_pin = GMBUS_PIN_VGADDC; in init_vbt_defaults()
1699 dev_priv->vbt.backlight.present = true; in init_vbt_defaults()
1702 dev_priv->vbt.lvds_dither = 1; in init_vbt_defaults()
1705 dev_priv->vbt.sdvo_lvds_vbt_mode = NULL; in init_vbt_defaults()
1708 dev_priv->vbt.int_tv_support = 1; in init_vbt_defaults()
1709 dev_priv->vbt.int_crt_support = 1; in init_vbt_defaults()
1712 dev_priv->vbt.int_lvds_support = 1; in init_vbt_defaults()
1715 dev_priv->vbt.lvds_use_ssc = 1; in init_vbt_defaults()
1720 dev_priv->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(dev_priv, in init_vbt_defaults()
1722 DRM_DEBUG_KMS("Set default to SSC at %d kHz\n", dev_priv->vbt.lvds_ssc_freq); in init_vbt_defaults()
1726 &dev_priv->vbt.ddi_port_info[port]; in init_vbt_defaults()
1740 &dev_priv->vbt.ddi_port_info[port]; in init_vbt_missing_defaults()
1757 static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt) in get_bdb_header() argument
1759 const void *_vbt = vbt; in get_bdb_header()
1761 return _vbt + vbt->bdb_offset; in get_bdb_header()
1773 const struct vbt_header *vbt = buf; in intel_bios_is_valid_vbt() local
1776 if (!vbt) in intel_bios_is_valid_vbt()
1784 if (memcmp(vbt->signature, "$VBT", 4)) { in intel_bios_is_valid_vbt()
1790 vbt->bdb_offset, in intel_bios_is_valid_vbt()
1797 bdb = get_bdb_header(vbt); in intel_bios_is_valid_vbt()
1798 if (range_overflows_t(size_t, vbt->bdb_offset, bdb->bdb_size, size)) { in intel_bios_is_valid_vbt()
1803 return vbt; in intel_bios_is_valid_vbt()
1812 void *vbt; in find_vbt() local
1821 vbt = (void __force *) bios + i; in find_vbt()
1822 if (intel_bios_is_valid_vbt(vbt, size - i)) in find_vbt()
1823 return vbt; in find_vbt()
1842 const struct vbt_header *vbt = dev_priv->opregion.vbt; in intel_bios_init() local
1854 if (!vbt) { in intel_bios_init()
1861 vbt = find_vbt(bios, size); in intel_bios_init()
1862 if (!vbt) in intel_bios_init()
1868 bdb = get_bdb_header(vbt); in intel_bios_init()
1871 (int)sizeof(vbt->signature), vbt->signature, bdb->version); in intel_bios_init()
1890 if (!vbt) { in intel_bios_init()
1905 kfree(dev_priv->vbt.child_dev); in intel_bios_driver_remove()
1906 dev_priv->vbt.child_dev = NULL; in intel_bios_driver_remove()
1907 dev_priv->vbt.child_dev_num = 0; in intel_bios_driver_remove()
1908 kfree(dev_priv->vbt.sdvo_lvds_vbt_mode); in intel_bios_driver_remove()
1909 dev_priv->vbt.sdvo_lvds_vbt_mode = NULL; in intel_bios_driver_remove()
1910 kfree(dev_priv->vbt.lfp_lvds_vbt_mode); in intel_bios_driver_remove()
1911 dev_priv->vbt.lfp_lvds_vbt_mode = NULL; in intel_bios_driver_remove()
1912 kfree(dev_priv->vbt.dsi.data); in intel_bios_driver_remove()
1913 dev_priv->vbt.dsi.data = NULL; in intel_bios_driver_remove()
1914 kfree(dev_priv->vbt.dsi.pps); in intel_bios_driver_remove()
1915 dev_priv->vbt.dsi.pps = NULL; in intel_bios_driver_remove()
1916 kfree(dev_priv->vbt.dsi.config); in intel_bios_driver_remove()
1917 dev_priv->vbt.dsi.config = NULL; in intel_bios_driver_remove()
1918 kfree(dev_priv->vbt.dsi.deassert_seq); in intel_bios_driver_remove()
1919 dev_priv->vbt.dsi.deassert_seq = NULL; in intel_bios_driver_remove()
1934 if (!dev_priv->vbt.int_tv_support) in intel_bios_is_tv_present()
1937 if (!dev_priv->vbt.child_dev_num) in intel_bios_is_tv_present()
1940 for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { in intel_bios_is_tv_present()
1941 child = dev_priv->vbt.child_dev + i; in intel_bios_is_tv_present()
1976 if (!dev_priv->vbt.child_dev_num) in intel_bios_is_lvds_present()
1979 for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { in intel_bios_is_lvds_present()
1980 child = dev_priv->vbt.child_dev + i; in intel_bios_is_lvds_present()
2006 if (dev_priv->opregion.vbt) in intel_bios_is_lvds_present()
2036 &dev_priv->vbt.ddi_port_info[port]; in intel_bios_is_port_present()
2047 if (!dev_priv->vbt.child_dev_num) in intel_bios_is_port_present()
2050 for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { in intel_bios_is_port_present()
2051 child = dev_priv->vbt.child_dev + i; in intel_bios_is_port_present()
2083 return dev_priv->vbt.ddi_port_info[port].supports_edp; in intel_bios_is_port_edp()
2085 if (!dev_priv->vbt.child_dev_num) in intel_bios_is_port_edp()
2088 for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { in intel_bios_is_port_edp()
2089 child = dev_priv->vbt.child_dev + i; in intel_bios_is_port_edp()
2141 for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { in intel_bios_is_port_dp_dual_mode()
2142 child = dev_priv->vbt.child_dev + i; in intel_bios_is_port_dp_dual_mode()
2165 for (i = 0; i < dev_priv->vbt.child_dev_num; i++) { in intel_bios_is_dsi_present()
2166 child = dev_priv->vbt.child_dev + i; in intel_bios_is_dsi_present()
2202 i915->vbt.ddi_port_info[port].child; in intel_bios_is_port_hpd_inverted()
2222 i915->vbt.ddi_port_info[port].child; in intel_bios_is_lspcon_present()
2231 &dev_priv->vbt.ddi_port_info[port]; in intel_bios_port_aux_ch()