Lines Matching refs:display

70 	struct intel_display *display;  member
149 bdb_find_section(struct intel_display *display, in bdb_find_section() argument
154 list_for_each_entry(entry, &display->vbt.bdb_blocks, node) { in bdb_find_section()
204 static size_t lfp_data_min_size(struct intel_display *display) in lfp_data_min_size() argument
209 ptrs = bdb_find_section(display, BDB_LFP_DATA_PTRS); in lfp_data_min_size()
364 static void *generate_lfp_data_ptrs(struct intel_display *display, in generate_lfp_data_ptrs() argument
378 if (display->vbt.version < 155) in generate_lfp_data_ptrs()
387 drm_dbg_kms(display->drm, "Generating LFP data table pointers\n"); in generate_lfp_data_ptrs()
455 init_bdb_block(struct intel_display *display, in init_bdb_block() argument
468 temp_block = generate_lfp_data_ptrs(display, bdb); in init_bdb_block()
475 drm_WARN(display->drm, min_size == 0, in init_bdb_block()
499 drm_dbg_kms(display->drm, in init_bdb_block()
505 drm_err(display->drm, in init_bdb_block()
511 list_add_tail(&entry->node, &display->vbt.bdb_blocks); in init_bdb_block()
514 static void init_bdb_blocks(struct intel_display *display, in init_bdb_blocks() argument
524 min_size = lfp_data_min_size(display); in init_bdb_blocks()
526 init_bdb_block(display, bdb, section_id, min_size); in init_bdb_blocks()
531 fill_detail_timing_data(struct intel_display *display, in fill_detail_timing_data() argument
574 drm_dbg_kms(display->drm, "reducing hsync_end %d->%d\n", in fill_detail_timing_data()
579 drm_dbg_kms(display->drm, "reducing vsync_end %d->%d\n", in fill_detail_timing_data()
624 static int opregion_get_panel_type(struct intel_display *display, in opregion_get_panel_type() argument
628 return intel_opregion_get_panel_type(display); in opregion_get_panel_type()
631 static int vbt_get_panel_type(struct intel_display *display, in vbt_get_panel_type() argument
637 lfp_options = bdb_find_section(display, BDB_LFP_OPTIONS); in vbt_get_panel_type()
643 drm_dbg_kms(display->drm, "Invalid VBT panel type 0x%x\n", in vbt_get_panel_type()
651 drm_WARN_ON(display->drm, in vbt_get_panel_type()
657 static int pnpid_get_panel_type(struct intel_display *display, in pnpid_get_panel_type() argument
676 p = drm_dbg_printer(display->drm, DRM_UT_KMS, "EDID"); in pnpid_get_panel_type()
679 ptrs = bdb_find_section(display, BDB_LFP_DATA_PTRS); in pnpid_get_panel_type()
683 data = bdb_find_section(display, BDB_LFP_DATA); in pnpid_get_panel_type()
707 static int fallback_get_panel_type(struct intel_display *display, in fallback_get_panel_type() argument
721 static int get_panel_type(struct intel_display *display, in get_panel_type() argument
727 int (*get_panel_type)(struct intel_display *display, in get_panel_type()
752 panel_types[i].panel_type = panel_types[i].get_panel_type(display, devdata, in get_panel_type()
755 drm_WARN_ON(display->drm, panel_types[i].panel_type > 0xf && in get_panel_type()
759 drm_dbg_kms(display->drm, "Panel type (%s): %d\n", in get_panel_type()
774 drm_dbg_kms(display->drm, "Selected panel type (%s): %d\n", in get_panel_type()
792 parse_panel_options(struct intel_display *display, in parse_panel_options() argument
799 lfp_options = bdb_find_section(display, BDB_LFP_OPTIONS); in parse_panel_options()
823 drm_dbg_kms(display->drm, "DRRS supported mode is static\n"); in parse_panel_options()
827 drm_dbg_kms(display->drm, in parse_panel_options()
832 drm_dbg_kms(display->drm, in parse_panel_options()
839 parse_lfp_panel_dtd(struct intel_display *display, in parse_lfp_panel_dtd() argument
857 fill_detail_timing_data(display, panel_fixed_mode, panel_dvo_timing); in parse_lfp_panel_dtd()
861 drm_dbg_kms(display->drm, in parse_lfp_panel_dtd()
873 drm_dbg_kms(display->drm, in parse_lfp_panel_dtd()
880 parse_lfp_data(struct intel_display *display, in parse_lfp_data() argument
890 ptrs = bdb_find_section(display, BDB_LFP_DATA_PTRS); in parse_lfp_data()
894 data = bdb_find_section(display, BDB_LFP_DATA); in parse_lfp_data()
899 parse_lfp_panel_dtd(display, panel, data, ptrs); in parse_lfp_data()
903 p = drm_dbg_printer(display->drm, DRM_UT_KMS, "Panel"); in parse_lfp_data()
910 drm_dbg_kms(display->drm, "Panel name: %.*s\n", in parse_lfp_data()
914 if (display->vbt.version >= 188) { in parse_lfp_data()
917 drm_dbg_kms(display->drm, in parse_lfp_data()
924 parse_generic_dtd(struct intel_display *display, in parse_generic_dtd() argument
940 if (display->vbt.version < 229) in parse_generic_dtd()
943 generic_dtd = bdb_find_section(display, BDB_GENERIC_DTD); in parse_generic_dtd()
948 drm_err(display->drm, "GDTD size %u is too small.\n", in parse_generic_dtd()
953 drm_err(display->drm, "Unexpected GDTD size %u\n", in parse_generic_dtd()
961 drm_err(display->drm, in parse_generic_dtd()
1006 drm_dbg_kms(display->drm, in parse_generic_dtd()
1014 parse_lfp_backlight(struct intel_display *display, in parse_lfp_backlight() argument
1022 backlight_data = bdb_find_section(display, BDB_LFP_BACKLIGHT); in parse_lfp_backlight()
1027 drm_dbg_kms(display->drm, in parse_lfp_backlight()
1037 drm_dbg_kms(display->drm, in parse_lfp_backlight()
1045 if (display->vbt.version >= 191) { in parse_lfp_backlight()
1056 if (display->vbt.version >= 234) { in parse_lfp_backlight()
1063 if (display->vbt.version >= 236) in parse_lfp_backlight()
1072 drm_warn(display->drm, "Brightness min level > 255\n"); in parse_lfp_backlight()
1084 if (display->vbt.version >= 239) in parse_lfp_backlight()
1090 drm_dbg_kms(display->drm, in parse_lfp_backlight()
1101 parse_sdvo_lvds_data(struct intel_display *display, in parse_sdvo_lvds_data() argument
1108 index = display->params.vbt_sdvo_panel_type; in parse_sdvo_lvds_data()
1110 drm_dbg_kms(display->drm, in parse_sdvo_lvds_data()
1118 sdvo_lvds_options = bdb_find_section(display, BDB_SDVO_LVDS_OPTIONS); in parse_sdvo_lvds_data()
1125 dtd = bdb_find_section(display, BDB_SDVO_LVDS_DTD); in parse_sdvo_lvds_data()
1136 drm_err(display->drm, in parse_sdvo_lvds_data()
1146 fill_detail_timing_data(display, panel_fixed_mode, &dtd->dtd[index]); in parse_sdvo_lvds_data()
1150 drm_dbg_kms(display->drm, in parse_sdvo_lvds_data()
1155 static int intel_bios_ssc_frequency(struct intel_display *display, in intel_bios_ssc_frequency() argument
1158 switch (DISPLAY_VER(display)) { in intel_bios_ssc_frequency()
1170 parse_general_features(struct intel_display *display) in parse_general_features() argument
1174 general = bdb_find_section(display, BDB_GENERAL_FEATURES); in parse_general_features()
1178 display->vbt.int_tv_support = general->int_tv_support; in parse_general_features()
1180 if (display->vbt.version >= 155 && in parse_general_features()
1181 (HAS_DDI(display) || display->platform.valleyview)) in parse_general_features()
1182 display->vbt.int_crt_support = general->int_crt_support; in parse_general_features()
1183 display->vbt.lvds_use_ssc = general->enable_ssc; in parse_general_features()
1184 display->vbt.lvds_ssc_freq = in parse_general_features()
1185 intel_bios_ssc_frequency(display, general->ssc_freq); in parse_general_features()
1186 display->vbt.display_clock_mode = general->display_clock_mode; in parse_general_features()
1187 display->vbt.fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted; in parse_general_features()
1188 if (display->vbt.version >= 181) { in parse_general_features()
1189 display->vbt.orientation = general->rotate_180 ? in parse_general_features()
1193 display->vbt.orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN; in parse_general_features()
1196 if (display->vbt.version >= 249 && general->afc_startup_config) { in parse_general_features()
1197 display->vbt.override_afc_startup = true; in parse_general_features()
1198 display->vbt.override_afc_startup_val = general->afc_startup_config == 1 ? 0 : 7; in parse_general_features()
1201 drm_dbg_kms(display->drm, in parse_general_features()
1203 display->vbt.int_tv_support, in parse_general_features()
1204 display->vbt.int_crt_support, in parse_general_features()
1205 display->vbt.lvds_use_ssc, in parse_general_features()
1206 display->vbt.lvds_ssc_freq, in parse_general_features()
1207 display->vbt.display_clock_mode, in parse_general_features()
1208 display->vbt.fdi_rx_polarity_inverted); in parse_general_features()
1218 parse_sdvo_device_mapping(struct intel_display *display) in parse_sdvo_device_mapping() argument
1227 if (!IS_DISPLAY_VER(display, 3, 7)) { in parse_sdvo_device_mapping()
1228 drm_dbg_kms(display->drm, "Skipping SDVO device mapping\n"); in parse_sdvo_device_mapping()
1232 list_for_each_entry(devdata, &display->vbt.display_devices, node) { in parse_sdvo_device_mapping()
1247 drm_dbg_kms(display->drm, in parse_sdvo_device_mapping()
1251 drm_dbg_kms(display->drm, in parse_sdvo_device_mapping()
1257 mapping = &display->vbt.sdvo_mappings[child->dvo_port - 1]; in parse_sdvo_device_mapping()
1265 drm_dbg_kms(display->drm, in parse_sdvo_device_mapping()
1271 drm_dbg_kms(display->drm, in parse_sdvo_device_mapping()
1278 drm_dbg_kms(display->drm, in parse_sdvo_device_mapping()
1287 drm_dbg_kms(display->drm, in parse_sdvo_device_mapping()
1293 parse_driver_features(struct intel_display *display) in parse_driver_features() argument
1297 driver = bdb_find_section(display, BDB_DRIVER_FEATURES); in parse_driver_features()
1301 if (DISPLAY_VER(display) >= 5) { in parse_driver_features()
1308 display->vbt.int_lvds_support = 0; in parse_driver_features()
1321 if (display->vbt.version >= 134 && in parse_driver_features()
1324 display->vbt.int_lvds_support = 0; in parse_driver_features()
1329 parse_panel_driver_features(struct intel_display *display, in parse_panel_driver_features() argument
1334 driver = bdb_find_section(display, BDB_DRIVER_FEATURES); in parse_panel_driver_features()
1338 if (display->vbt.version < 228) { in parse_panel_driver_features()
1339 drm_dbg_kms(display->drm, "DRRS State Enabled:%d\n", in parse_panel_driver_features()
1363 parse_power_conservation_features(struct intel_display *display, in parse_power_conservation_features() argument
1371 if (display->vbt.version < 228) in parse_power_conservation_features()
1374 power = bdb_find_section(display, BDB_LFP_POWER); in parse_power_conservation_features()
1397 if (display->vbt.version >= 232) in parse_power_conservation_features()
1400 if (display->vbt.version >= 233) in parse_power_conservation_features()
1416 parse_edp(struct intel_display *display, in parse_edp() argument
1423 edp = bdb_find_section(display, BDB_EDP); in parse_edp()
1445 if (display->vbt.version >= 224) { in parse_edp()
1460 drm_dbg_kms(display->drm, in parse_edp()
1478 drm_dbg_kms(display->drm, in parse_edp()
1498 drm_dbg_kms(display->drm, in parse_edp()
1518 drm_dbg_kms(display->drm, in parse_edp()
1524 if (display->vbt.version >= 173) { in parse_edp()
1528 if (display->params.edp_vswing) { in parse_edp()
1530 display->params.edp_vswing == 1; in parse_edp()
1540 if (display->vbt.version >= 244) in parse_edp()
1544 if (display->vbt.version >= 251) in parse_edp()
1550 parse_psr(struct intel_display *display, in parse_psr() argument
1557 psr = bdb_find_section(display, BDB_PSR); in parse_psr()
1559 drm_dbg_kms(display->drm, "No PSR BDB found.\n"); in parse_psr()
1576 if (display->vbt.version >= 205 && in parse_psr()
1577 (DISPLAY_VER(display) >= 9 && !display->platform.broxton)) { in parse_psr()
1589 drm_dbg_kms(display->drm, in parse_psr()
1609 drm_dbg_kms(display->drm, in parse_psr()
1622 if (display->vbt.version >= 226) { in parse_psr()
1648 static void parse_dsi_backlight_ports(struct intel_display *display, in parse_dsi_backlight_ports() argument
1652 enum port port_bc = DISPLAY_VER(display) >= 11 ? PORT_B : PORT_C; in parse_dsi_backlight_ports()
1654 if (!panel->vbt.dsi.config->dual_link || display->vbt.version < 197) { in parse_dsi_backlight_ports()
1694 parse_mipi_config(struct intel_display *display, in parse_mipi_config() argument
1704 if (!intel_bios_is_dsi_present(display, &port)) in parse_mipi_config()
1710 start = bdb_find_section(display, BDB_MIPI_CONFIG); in parse_mipi_config()
1712 drm_dbg_kms(display->drm, "No MIPI config BDB found"); in parse_mipi_config()
1716 drm_dbg_kms(display->drm, "Found MIPI Config block, panel index = %d\n", in parse_mipi_config()
1737 parse_dsi_backlight_ports(display, panel, port); in parse_mipi_config()
1769 find_panel_sequence_block(struct intel_display *display, in find_panel_sequence_block() argument
1787 drm_err(display->drm, in find_panel_sequence_block()
1801 drm_err(display->drm, "Invalid sequence block\n"); in find_panel_sequence_block()
1813 drm_err(display->drm, in find_panel_sequence_block()
1819 static int goto_next_sequence(struct intel_display *display, in goto_next_sequence() argument
1850 drm_err(display->drm, "Unknown operation byte\n"); in goto_next_sequence()
1858 static int goto_next_sequence_v3(struct intel_display *display, in goto_next_sequence_v3() argument
1870 drm_err(display->drm, "Too small sequence size\n"); in goto_next_sequence_v3()
1887 drm_err(display->drm, "Invalid sequence size\n"); in goto_next_sequence_v3()
1897 drm_err(display->drm, in goto_next_sequence_v3()
1920 drm_err(display->drm, "Unknown operation byte %u\n", in goto_next_sequence_v3()
1933 static int get_init_otp_deassert_fragment_len(struct intel_display *display, in get_init_otp_deassert_fragment_len() argument
1939 if (drm_WARN_ON(display->drm, in get_init_otp_deassert_fragment_len()
1968 static void vlv_fixup_mipi_sequences(struct intel_display *display, in vlv_fixup_mipi_sequences() argument
1986 len = get_init_otp_deassert_fragment_len(display, panel); in vlv_fixup_mipi_sequences()
1990 drm_dbg_kms(display->drm, in vlv_fixup_mipi_sequences()
2023 static void icl_fixup_mipi_sequences(struct intel_display *display, in icl_fixup_mipi_sequences() argument
2028 drm_dbg_kms(display->drm, in icl_fixup_mipi_sequences()
2036 static void fixup_mipi_sequences(struct intel_display *display, in fixup_mipi_sequences() argument
2039 if (DISPLAY_VER(display) >= 11) in fixup_mipi_sequences()
2040 icl_fixup_mipi_sequences(display, panel); in fixup_mipi_sequences()
2041 else if (display->platform.valleyview) in fixup_mipi_sequences()
2042 vlv_fixup_mipi_sequences(display, panel); in fixup_mipi_sequences()
2046 parse_mipi_sequence(struct intel_display *display, in parse_mipi_sequence() argument
2060 sequence = bdb_find_section(display, BDB_MIPI_SEQUENCE); in parse_mipi_sequence()
2062 drm_dbg_kms(display->drm, in parse_mipi_sequence()
2069 drm_err(display->drm, in parse_mipi_sequence()
2075 drm_dbg_kms(display->drm, "Found MIPI sequence block v%u\n", in parse_mipi_sequence()
2078 seq_data = find_panel_sequence_block(display, sequence, panel_type, &seq_size); in parse_mipi_sequence()
2093 drm_err(display->drm, "Unknown sequence %u\n", in parse_mipi_sequence()
2100 drm_dbg_kms(display->drm, in parse_mipi_sequence()
2106 index = goto_next_sequence_v3(display, data, index, seq_size); in parse_mipi_sequence()
2108 index = goto_next_sequence(display, data, index, seq_size); in parse_mipi_sequence()
2110 drm_err(display->drm, "Invalid sequence %u\n", in parse_mipi_sequence()
2120 fixup_mipi_sequences(display, panel); in parse_mipi_sequence()
2122 drm_dbg_kms(display->drm, "MIPI related VBT parsing complete\n"); in parse_mipi_sequence()
2131 parse_compression_parameters(struct intel_display *display) in parse_compression_parameters() argument
2138 if (display->vbt.version < 198) in parse_compression_parameters()
2141 params = bdb_find_section(display, BDB_COMPRESSION_PARAMETERS); in parse_compression_parameters()
2145 drm_dbg_kms(display->drm, in parse_compression_parameters()
2152 drm_dbg_kms(display->drm, in parse_compression_parameters()
2158 list_for_each_entry(devdata, &display->vbt.display_devices, node) { in parse_compression_parameters()
2165 drm_dbg_kms(display->drm, in parse_compression_parameters()
2171 drm_dbg_kms(display->drm, in parse_compression_parameters()
2183 static u8 translate_iboost(struct intel_display *display, u8 val) in translate_iboost() argument
2188 drm_dbg_kms(display->drm, in translate_iboost()
2245 static u8 map_ddc_pin(struct intel_display *display, u8 vbt_pin) in map_ddc_pin() argument
2247 struct drm_i915_private *i915 = to_i915(display->drm); in map_ddc_pin()
2251 if (INTEL_PCH_TYPE(i915) >= PCH_MTL || display->platform.alderlake_p) { in map_ddc_pin()
2254 } else if (display->platform.alderlake_s) { in map_ddc_pin()
2259 } else if (display->platform.rocketlake && INTEL_PCH_TYPE(i915) == PCH_TGP) { in map_ddc_pin()
2262 } else if (HAS_PCH_TGP(i915) && DISPLAY_VER(display) == 9) { in map_ddc_pin()
2281 drm_dbg_kms(display->drm, in map_ddc_pin()
2339 static enum port dvo_port_to_port(struct intel_display *display, in dvo_port_to_port() argument
2393 if (DISPLAY_VER(display) >= 13) in dvo_port_to_port()
2398 else if (display->platform.alderlake_s) in dvo_port_to_port()
2403 else if (display->platform.dg1 || display->platform.rocketlake) in dvo_port_to_port()
2416 dsi_dvo_port_to_port(struct intel_display *display, u8 dvo_port) in dsi_dvo_port_to_port() argument
2422 if (DISPLAY_VER(display) >= 11) in dsi_dvo_port_to_port()
2433 struct intel_display *display = devdata->display; in intel_bios_encoder_port() local
2437 port = dvo_port_to_port(display, child->dvo_port); in intel_bios_encoder_port()
2438 if (port == PORT_NONE && DISPLAY_VER(display) >= 11) in intel_bios_encoder_port()
2439 port = dsi_dvo_port_to_port(display, child->dvo_port); in intel_bios_encoder_port()
2484 if (!devdata || devdata->display->vbt.version < 216) in intel_bios_dp_max_link_rate()
2487 if (devdata->display->vbt.version >= 230) in intel_bios_dp_max_link_rate()
2495 if (!devdata || devdata->display->vbt.version < 244) in intel_bios_dp_max_lane_count()
2504 struct intel_display *display = devdata->display; in sanitize_device_type() local
2507 if (port != PORT_A || DISPLAY_VER(display) >= 12) in sanitize_device_type()
2515 drm_dbg_kms(display->drm, "VBT claims port A supports DVI%s, ignoring\n", in sanitize_device_type()
2525 struct intel_display *display = devdata->display; in sanitize_hdmi_level_shift() local
2535 if (display->platform.broadwell && devdata->child.hdmi_level_shifter_value > 9) { in sanitize_hdmi_level_shift()
2536 drm_dbg_kms(display->drm, in sanitize_hdmi_level_shift()
2585 return devdata && HAS_LSPCON(devdata->display) && devdata->child.lspcon; in intel_bios_encoder_is_lspcon()
2591 if (!devdata || devdata->display->vbt.version < 158 || in intel_bios_hdmi_level_shift()
2592 DISPLAY_VER(devdata->display) >= 14) in intel_bios_hdmi_level_shift()
2600 if (!devdata || devdata->display->vbt.version < 204) in intel_bios_hdmi_max_tmds_clock()
2622 static bool is_port_valid(struct intel_display *display, enum port port) in is_port_valid() argument
2629 if (port == PORT_F && display->platform.icelake) in is_port_valid()
2630 return display->platform.icelake_port_f; in is_port_valid()
2637 struct intel_display *display = devdata->display; in print_ddi_port() local
2657 drm_dbg_kms(display->drm, in print_ddi_port()
2667 drm_dbg_kms(display->drm, in print_ddi_port()
2674 drm_dbg_kms(display->drm, in print_ddi_port()
2681 drm_dbg_kms(display->drm, in print_ddi_port()
2687 drm_dbg_kms(display->drm, in print_ddi_port()
2693 drm_dbg_kms(display->drm, in print_ddi_port()
2701 drm_WARN(display->drm, child->use_vbt_vswing, in print_ddi_port()
2708 struct intel_display *display = devdata->display; in parse_ddi_port() local
2715 if (!is_port_valid(display, port)) { in parse_ddi_port()
2716 drm_dbg_kms(display->drm, in parse_ddi_port()
2726 static bool has_ddi_port_info(struct intel_display *display) in has_ddi_port_info() argument
2728 return DISPLAY_VER(display) >= 5 || display->platform.g4x; in has_ddi_port_info()
2731 static void parse_ddi_ports(struct intel_display *display) in parse_ddi_ports() argument
2735 if (!has_ddi_port_info(display)) in parse_ddi_ports()
2738 list_for_each_entry(devdata, &display->vbt.display_devices, node) in parse_ddi_ports()
2741 list_for_each_entry(devdata, &display->vbt.display_devices, node) in parse_ddi_ports()
2767 static bool child_device_size_valid(struct intel_display *display, int size) in child_device_size_valid() argument
2771 expected_size = child_device_expected_size(display->vbt.version); in child_device_size_valid()
2774 drm_dbg_kms(display->drm, in child_device_size_valid()
2776 display->vbt.version, expected_size); in child_device_size_valid()
2781 drm_err(display->drm, in child_device_size_valid()
2783 size, expected_size, display->vbt.version); in child_device_size_valid()
2787 drm_dbg_kms(display->drm, in child_device_size_valid()
2797 parse_general_definitions(struct intel_display *display) in parse_general_definitions() argument
2806 defs = bdb_find_section(display, BDB_GENERAL_DEFINITIONS); in parse_general_definitions()
2808 drm_dbg_kms(display->drm, in parse_general_definitions()
2815 drm_dbg_kms(display->drm, in parse_general_definitions()
2822 drm_dbg_kms(display->drm, "crt_ddc_bus_pin: %d\n", bus_pin); in parse_general_definitions()
2823 if (intel_gmbus_is_valid_pin(display, bus_pin)) in parse_general_definitions()
2824 display->vbt.crt_ddc_pin = bus_pin; in parse_general_definitions()
2826 if (!child_device_size_valid(display, defs->child_dev_size)) in parse_general_definitions()
2837 drm_dbg_kms(display->drm, in parse_general_definitions()
2845 devdata->display = display; in parse_general_definitions()
2855 list_add_tail(&devdata->node, &display->vbt.display_devices); in parse_general_definitions()
2858 if (list_empty(&display->vbt.display_devices)) in parse_general_definitions()
2859 drm_dbg_kms(display->drm, in parse_general_definitions()
2865 init_vbt_defaults(struct intel_display *display) in init_vbt_defaults() argument
2867 struct drm_i915_private *i915 = to_i915(display->drm); in init_vbt_defaults()
2869 display->vbt.crt_ddc_pin = GMBUS_PIN_VGADDC; in init_vbt_defaults()
2872 display->vbt.int_tv_support = 1; in init_vbt_defaults()
2873 display->vbt.int_crt_support = 1; in init_vbt_defaults()
2876 display->vbt.int_lvds_support = 1; in init_vbt_defaults()
2879 display->vbt.lvds_use_ssc = 1; in init_vbt_defaults()
2884 display->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(display, in init_vbt_defaults()
2886 drm_dbg_kms(display->drm, "Set default to SSC at %d kHz\n", in init_vbt_defaults()
2887 display->vbt.lvds_ssc_freq); in init_vbt_defaults()
2903 init_vbt_missing_defaults(struct intel_display *display) in init_vbt_missing_defaults() argument
2905 struct drm_i915_private *i915 = to_i915(display->drm); in init_vbt_missing_defaults()
2906 unsigned int ports = DISPLAY_RUNTIME_INFO(display)->port_mask; in init_vbt_missing_defaults()
2909 if (!HAS_DDI(display) && !display->platform.cherryview) in init_vbt_missing_defaults()
2929 devdata->display = display; in init_vbt_missing_defaults()
2948 list_add_tail(&devdata->node, &display->vbt.display_devices); in init_vbt_missing_defaults()
2950 drm_dbg_kms(display->drm, in init_vbt_missing_defaults()
2956 display->vbt.version = 155; in init_vbt_missing_defaults()
2977 bool intel_bios_is_valid_vbt(struct intel_display *display, in intel_bios_is_valid_vbt() argument
2987 drm_dbg_kms(display->drm, "VBT header incomplete\n"); in intel_bios_is_valid_vbt()
2992 drm_dbg_kms(display->drm, "VBT invalid signature\n"); in intel_bios_is_valid_vbt()
2997 drm_dbg_kms(display->drm, in intel_bios_is_valid_vbt()
3008 drm_dbg_kms(display->drm, "BDB header incomplete\n"); in intel_bios_is_valid_vbt()
3014 drm_dbg_kms(display->drm, "BDB incomplete\n"); in intel_bios_is_valid_vbt()
3021 static struct vbt_header *firmware_get_vbt(struct intel_display *display, in firmware_get_vbt() argument
3026 const char *name = display->params.vbt_firmware; in firmware_get_vbt()
3032 ret = request_firmware(&fw, name, display->drm->dev); in firmware_get_vbt()
3034 drm_err(display->drm, in firmware_get_vbt()
3040 if (intel_bios_is_valid_vbt(display, fw->data, fw->size)) { in firmware_get_vbt()
3043 drm_dbg_kms(display->drm, in firmware_get_vbt()
3049 drm_dbg_kms(display->drm, "Invalid VBT firmware \"%s\"\n", in firmware_get_vbt()
3058 static struct vbt_header *oprom_get_vbt(struct intel_display *display, in oprom_get_vbt() argument
3077 drm_dbg_kms(display->drm, "VBT header incomplete\n"); in oprom_get_vbt()
3085 drm_dbg_kms(display->drm, "VBT incomplete (vbt_size overflows)\n"); in oprom_get_vbt()
3095 if (!intel_bios_is_valid_vbt(display, vbt, vbt_size)) in oprom_get_vbt()
3098 drm_dbg_kms(display->drm, "Found valid VBT in %s\n", type); in oprom_get_vbt()
3114 static const struct vbt_header *intel_bios_get_vbt(struct intel_display *display, in intel_bios_get_vbt() argument
3117 struct drm_i915_private *i915 = to_i915(display->drm); in intel_bios_get_vbt()
3121 vbt = firmware_get_vbt(display, sizep); in intel_bios_get_vbt()
3124 vbt = intel_opregion_get_vbt(display, sizep); in intel_bios_get_vbt()
3132 vbt = oprom_get_vbt(display, intel_rom_spi(i915), sizep, "SPI flash"); in intel_bios_get_vbt()
3136 vbt = oprom_get_vbt(display, intel_rom_pci(i915), sizep, "PCI ROM"); in intel_bios_get_vbt()
3149 void intel_bios_init(struct intel_display *display) in intel_bios_init() argument
3154 INIT_LIST_HEAD(&display->vbt.display_devices); in intel_bios_init()
3155 INIT_LIST_HEAD(&display->vbt.bdb_blocks); in intel_bios_init()
3157 if (!HAS_DISPLAY(display)) { in intel_bios_init()
3158 drm_dbg_kms(display->drm, in intel_bios_init()
3163 init_vbt_defaults(display); in intel_bios_init()
3165 vbt = intel_bios_get_vbt(display, NULL); in intel_bios_init()
3171 display->vbt.version = bdb->version; in intel_bios_init()
3173 drm_dbg_kms(display->drm, in intel_bios_init()
3176 display->vbt.version); in intel_bios_init()
3178 init_bdb_blocks(display, bdb); in intel_bios_init()
3181 parse_general_features(display); in intel_bios_init()
3182 parse_general_definitions(display); in intel_bios_init()
3183 parse_driver_features(display); in intel_bios_init()
3186 parse_compression_parameters(display); in intel_bios_init()
3190 drm_info(display->drm, in intel_bios_init()
3192 init_vbt_missing_defaults(display); in intel_bios_init()
3196 parse_sdvo_device_mapping(display); in intel_bios_init()
3197 parse_ddi_ports(display); in intel_bios_init()
3202 static void intel_bios_init_panel(struct intel_display *display, in intel_bios_init_panel() argument
3210 drm_WARN_ON(display->drm, !use_fallback); in intel_bios_init_panel()
3214 panel->vbt.panel_type = get_panel_type(display, devdata, in intel_bios_init_panel()
3217 drm_WARN_ON(display->drm, use_fallback); 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()
3236 void intel_bios_init_panel_early(struct intel_display *display, in intel_bios_init_panel_early() argument
3240 intel_bios_init_panel(display, panel, devdata, NULL, false); in intel_bios_init_panel_early()
3243 void intel_bios_init_panel_late(struct intel_display *display, in intel_bios_init_panel_late() argument
3248 intel_bios_init_panel(display, panel, devdata, drm_edid, true); in intel_bios_init_panel_late()
3255 void intel_bios_driver_remove(struct intel_display *display) in intel_bios_driver_remove() argument
3260 list_for_each_entry_safe(devdata, nd, &display->vbt.display_devices, in intel_bios_driver_remove()
3267 list_for_each_entry_safe(entry, ne, &display->vbt.bdb_blocks, node) { in intel_bios_driver_remove()
3296 bool intel_bios_is_tv_present(struct intel_display *display) in intel_bios_is_tv_present() argument
3300 if (!display->vbt.int_tv_support) in intel_bios_is_tv_present()
3303 if (list_empty(&display->vbt.display_devices)) in intel_bios_is_tv_present()
3306 list_for_each_entry(devdata, &display->vbt.display_devices, node) { in intel_bios_is_tv_present()
3338 bool intel_bios_is_lvds_present(struct intel_display *display, u8 *i2c_pin) in intel_bios_is_lvds_present() argument
3342 if (list_empty(&display->vbt.display_devices)) in intel_bios_is_lvds_present()
3345 list_for_each_entry(devdata, &display->vbt.display_devices, node) { in intel_bios_is_lvds_present()
3356 if (intel_gmbus_is_valid_pin(display, child->i2c_pin)) in intel_bios_is_lvds_present()
3372 return intel_opregion_vbt_present(display); in intel_bios_is_lvds_present()
3385 bool intel_bios_is_port_present(struct intel_display *display, enum port port) in intel_bios_is_port_present() argument
3389 if (WARN_ON(!has_ddi_port_info(display))) in intel_bios_is_port_present()
3392 if (!is_port_valid(display, port)) in intel_bios_is_port_present()
3395 list_for_each_entry(devdata, &display->vbt.display_devices, node) { in intel_bios_is_port_present()
3398 if (dvo_port_to_port(display, child->dvo_port) == port) in intel_bios_is_port_present()
3434 bool intel_bios_is_dsi_present(struct intel_display *display, in intel_bios_is_dsi_present() argument
3439 list_for_each_entry(devdata, &display->vbt.display_devices, node) { in intel_bios_is_dsi_present()
3446 if (dsi_dvo_port_to_port(display, dvo_port) == PORT_NONE) { in intel_bios_is_dsi_present()
3447 drm_dbg_kms(display->drm, in intel_bios_is_dsi_present()
3454 *port = dsi_dvo_port_to_port(display, dvo_port); in intel_bios_is_dsi_present()
3465 struct intel_display *display = to_intel_display(crtc_state); in fill_dsc() local
3479 drm_dbg_kms(display->drm, "VBT: Unsupported BPC %d for DCS\n", in fill_dsc()
3500 drm_dbg_kms(display->drm, in fill_dsc()
3508 drm_dbg_kms(display->drm, in fill_dsc()
3533 struct intel_display *display = to_intel_display(encoder); in intel_bios_get_dsc_params() local
3536 list_for_each_entry(devdata, &display->vbt.display_devices, node) { in intel_bios_get_dsc_params()
3542 if (dsi_dvo_port_to_port(display, child->dvo_port) == encoder->port) { in intel_bios_get_dsc_params()
3602 static enum aux_ch map_aux_ch(struct intel_display *display, u8 aux_channel) in map_aux_ch() argument
3607 if (DISPLAY_VER(display) >= 13) { in map_aux_ch()
3610 } else if (display->platform.alderlake_s) { in map_aux_ch()
3613 } else if (display->platform.dg1 || display->platform.rocketlake) { in map_aux_ch()
3626 drm_dbg_kms(display->drm, in map_aux_ch()
3638 return map_aux_ch(devdata->display, devdata->child.aux_channel); in intel_bios_dp_aux_ch()
3643 struct intel_display *display; in intel_bios_dp_has_shared_aux_ch() local
3650 display = devdata->display; in intel_bios_dp_has_shared_aux_ch()
3653 list_for_each_entry(devdata, &display->vbt.display_devices, node) { in intel_bios_dp_has_shared_aux_ch()
3664 if (!devdata || devdata->display->vbt.version < 196 || !devdata->child.iboost) in intel_bios_dp_boost_level()
3667 return translate_iboost(devdata->display, devdata->child.dp_iboost_level); in intel_bios_dp_boost_level()
3672 if (!devdata || devdata->display->vbt.version < 196 || !devdata->child.iboost) in intel_bios_hdmi_boost_level()
3675 return translate_iboost(devdata->display, devdata->child.hdmi_iboost_level); in intel_bios_hdmi_boost_level()
3683 return map_ddc_pin(devdata->display, devdata->child.ddc_pin); in intel_bios_hdmi_ddc_pin()
3688 return devdata->display->vbt.version >= 195 && devdata->child.dp_usb_type_c; in intel_bios_encoder_supports_typec_usb()
3693 return devdata->display->vbt.version >= 209 && devdata->child.tbt; in intel_bios_encoder_supports_tbt()
3707 intel_bios_encoder_data_lookup(struct intel_display *display, enum port port) in intel_bios_encoder_data_lookup() argument
3711 list_for_each_entry(devdata, &display->vbt.display_devices, node) { in intel_bios_encoder_data_lookup()
3719 void intel_bios_for_each_encoder(struct intel_display *display, in intel_bios_for_each_encoder() argument
3720 void (*func)(struct intel_display *display, in intel_bios_for_each_encoder() argument
3725 list_for_each_entry(devdata, &display->vbt.display_devices, node) in intel_bios_for_each_encoder()
3726 func(display, devdata); in intel_bios_for_each_encoder()
3731 struct intel_display *display = m->private; in intel_bios_vbt_show() local
3735 vbt = intel_bios_get_vbt(display, &vbt_size); in intel_bios_vbt_show()
3747 void intel_bios_debugfs_register(struct intel_display *display) in intel_bios_debugfs_register() argument
3749 struct drm_minor *minor = display->drm->primary; in intel_bios_debugfs_register()
3752 display, &intel_bios_vbt_fops); in intel_bios_debugfs_register()