Subversion Repositories Kolibri OS

Rev

Rev 4104 | Rev 5060 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4104 Rev 4560
Line 278... Line 278...
278
				      dev_priv->vbt.bios_lvds_val);
278
				      dev_priv->vbt.bios_lvds_val);
279
		}
279
		}
280
	}
280
	}
281
}
281
}
Line -... Line 282...
-
 
282
 
-
 
283
static void
-
 
284
parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
-
 
285
{
-
 
286
	const struct bdb_lfp_backlight_data *backlight_data;
-
 
287
	const struct bdb_lfp_backlight_data_entry *entry;
-
 
288
 
-
 
289
	backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT);
-
 
290
	if (!backlight_data)
-
 
291
		return;
-
 
292
 
-
 
293
	if (backlight_data->entry_size != sizeof(backlight_data->data[0])) {
-
 
294
		DRM_DEBUG_KMS("Unsupported backlight data entry size %u\n",
-
 
295
			      backlight_data->entry_size);
-
 
296
		return;
-
 
297
	}
-
 
298
 
-
 
299
	entry = &backlight_data->data[panel_type];
-
 
300
 
-
 
301
	dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
-
 
302
	dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
-
 
303
	DRM_DEBUG_KMS("VBT backlight PWM modulation frequency %u Hz, "
-
 
304
		      "active %s, min brightness %u, level %u\n",
-
 
305
		      dev_priv->vbt.backlight.pwm_freq_hz,
-
 
306
		      dev_priv->vbt.backlight.active_low_pwm ? "low" : "high",
-
 
307
		      entry->min_brightness,
-
 
308
		      backlight_data->level[panel_type]);
-
 
309
}
282
 
310
 
283
/* Try to find sdvo panel data */
311
/* Try to find sdvo panel data */
284
static void
312
static void
285
parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
313
parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
286
		      struct bdb_header *bdb)
314
		      struct bdb_header *bdb)
Line 324... Line 352...
324
static int intel_bios_ssc_frequency(struct drm_device *dev,
352
static int intel_bios_ssc_frequency(struct drm_device *dev,
325
				    bool alternate)
353
				    bool alternate)
326
{
354
{
327
	switch (INTEL_INFO(dev)->gen) {
355
	switch (INTEL_INFO(dev)->gen) {
328
	case 2:
356
	case 2:
329
		return alternate ? 66 : 48;
357
		return alternate ? 66667 : 48000;
330
	case 3:
358
	case 3:
331
	case 4:
359
	case 4:
332
		return alternate ? 100 : 96;
360
		return alternate ? 100000 : 96000;
333
	default:
361
	default:
334
		return alternate ? 100 : 120;
362
		return alternate ? 100000 : 120000;
335
	}
363
	}
336
}
364
}
Line 337... Line 365...
337
 
365
 
338
static void
366
static void
Line 386... Line 414...
386
parse_sdvo_device_mapping(struct drm_i915_private *dev_priv,
414
parse_sdvo_device_mapping(struct drm_i915_private *dev_priv,
387
			  struct bdb_header *bdb)
415
			  struct bdb_header *bdb)
388
{
416
{
389
	struct sdvo_device_mapping *p_mapping;
417
	struct sdvo_device_mapping *p_mapping;
390
	struct bdb_general_definitions *p_defs;
418
	struct bdb_general_definitions *p_defs;
391
	struct child_device_config *p_child;
419
	union child_device_config *p_child;
392
	int i, child_device_num, count;
420
	int i, child_device_num, count;
393
	u16	block_size;
421
	u16	block_size;
Line 394... Line 422...
394
 
422
 
395
	p_defs = find_section(bdb, BDB_GENERAL_DEFINITIONS);
423
	p_defs = find_section(bdb, BDB_GENERAL_DEFINITIONS);
Line 413... Line 441...
413
	child_device_num = (block_size - sizeof(*p_defs)) /
441
	child_device_num = (block_size - sizeof(*p_defs)) /
414
				sizeof(*p_child);
442
				sizeof(*p_child);
415
	count = 0;
443
	count = 0;
416
	for (i = 0; i < child_device_num; i++) {
444
	for (i = 0; i < child_device_num; i++) {
417
		p_child = &(p_defs->devices[i]);
445
		p_child = &(p_defs->devices[i]);
418
		if (!p_child->device_type) {
446
		if (!p_child->old.device_type) {
419
			/* skip the device block if device type is invalid */
447
			/* skip the device block if device type is invalid */
420
			continue;
448
			continue;
421
		}
449
		}
422
		if (p_child->slave_addr != SLAVE_ADDR1 &&
450
		if (p_child->old.slave_addr != SLAVE_ADDR1 &&
423
			p_child->slave_addr != SLAVE_ADDR2) {
451
			p_child->old.slave_addr != SLAVE_ADDR2) {
424
			/*
452
			/*
425
			 * If the slave address is neither 0x70 nor 0x72,
453
			 * If the slave address is neither 0x70 nor 0x72,
426
			 * it is not a SDVO device. Skip it.
454
			 * it is not a SDVO device. Skip it.
427
			 */
455
			 */
428
			continue;
456
			continue;
429
		}
457
		}
430
		if (p_child->dvo_port != DEVICE_PORT_DVOB &&
458
		if (p_child->old.dvo_port != DEVICE_PORT_DVOB &&
431
			p_child->dvo_port != DEVICE_PORT_DVOC) {
459
			p_child->old.dvo_port != DEVICE_PORT_DVOC) {
432
			/* skip the incorrect SDVO port */
460
			/* skip the incorrect SDVO port */
433
			DRM_DEBUG_KMS("Incorrect SDVO port. Skip it\n");
461
			DRM_DEBUG_KMS("Incorrect SDVO port. Skip it\n");
434
			continue;
462
			continue;
435
		}
463
		}
436
		DRM_DEBUG_KMS("the SDVO device with slave addr %2x is found on"
464
		DRM_DEBUG_KMS("the SDVO device with slave addr %2x is found on"
437
				" %s port\n",
465
				" %s port\n",
438
				p_child->slave_addr,
466
				p_child->old.slave_addr,
439
				(p_child->dvo_port == DEVICE_PORT_DVOB) ?
467
				(p_child->old.dvo_port == DEVICE_PORT_DVOB) ?
440
					"SDVOB" : "SDVOC");
468
					"SDVOB" : "SDVOC");
441
		p_mapping = &(dev_priv->sdvo_mappings[p_child->dvo_port - 1]);
469
		p_mapping = &(dev_priv->sdvo_mappings[p_child->old.dvo_port - 1]);
442
		if (!p_mapping->initialized) {
470
		if (!p_mapping->initialized) {
443
			p_mapping->dvo_port = p_child->dvo_port;
471
			p_mapping->dvo_port = p_child->old.dvo_port;
444
			p_mapping->slave_addr = p_child->slave_addr;
472
			p_mapping->slave_addr = p_child->old.slave_addr;
445
			p_mapping->dvo_wiring = p_child->dvo_wiring;
473
			p_mapping->dvo_wiring = p_child->old.dvo_wiring;
446
			p_mapping->ddc_pin = p_child->ddc_pin;
474
			p_mapping->ddc_pin = p_child->old.ddc_pin;
447
			p_mapping->i2c_pin = p_child->i2c_pin;
475
			p_mapping->i2c_pin = p_child->old.i2c_pin;
448
			p_mapping->initialized = 1;
476
			p_mapping->initialized = 1;
449
			DRM_DEBUG_KMS("SDVO device: dvo=%x, addr=%x, wiring=%d, ddc_pin=%d, i2c_pin=%d\n",
477
			DRM_DEBUG_KMS("SDVO device: dvo=%x, addr=%x, wiring=%d, ddc_pin=%d, i2c_pin=%d\n",
450
				      p_mapping->dvo_port,
478
				      p_mapping->dvo_port,
451
				      p_mapping->slave_addr,
479
				      p_mapping->slave_addr,
452
				      p_mapping->dvo_wiring,
480
				      p_mapping->dvo_wiring,
Line 454... Line 482...
454
				      p_mapping->i2c_pin);
482
				      p_mapping->i2c_pin);
455
		} else {
483
		} else {
456
			DRM_DEBUG_KMS("Maybe one SDVO port is shared by "
484
			DRM_DEBUG_KMS("Maybe one SDVO port is shared by "
457
					 "two SDVO device.\n");
485
					 "two SDVO device.\n");
458
		}
486
		}
459
		if (p_child->slave2_addr) {
487
		if (p_child->old.slave2_addr) {
460
			/* Maybe this is a SDVO device with multiple inputs */
488
			/* Maybe this is a SDVO device with multiple inputs */
461
			/* And the mapping info is not added */
489
			/* And the mapping info is not added */
462
			DRM_DEBUG_KMS("there exists the slave2_addr. Maybe this"
490
			DRM_DEBUG_KMS("there exists the slave2_addr. Maybe this"
463
				" is a SDVO device with multiple inputs.\n");
491
				" is a SDVO device with multiple inputs.\n");
464
		}
492
		}
Line 474... Line 502...
474
 
502
 
475
static void
503
static void
476
parse_driver_features(struct drm_i915_private *dev_priv,
504
parse_driver_features(struct drm_i915_private *dev_priv,
477
		       struct bdb_header *bdb)
505
		       struct bdb_header *bdb)
478
{
-
 
479
	struct drm_device *dev = dev_priv->dev;
506
{
Line 480... Line 507...
480
	struct bdb_driver_features *driver;
507
	struct bdb_driver_features *driver;
481
 
508
 
482
	driver = find_section(bdb, BDB_DRIVER_FEATURES);
509
	driver = find_section(bdb, BDB_DRIVER_FEATURES);
Line 483... Line -...
483
	if (!driver)
-
 
484
		return;
510
	if (!driver)
485
 
511
		return;
Line 486... Line 512...
486
	if (SUPPORTS_EDP(dev) &&
512
 
487
	    driver->lvds_config == BDB_DRIVER_FEATURE_EDP)
513
	if (driver->lvds_config == BDB_DRIVER_FEATURE_EDP)
488
		dev_priv->vbt.edp_support = 1;
514
		dev_priv->vbt.edp_support = 1;
Line 498... Line 524...
498
	struct edp_power_seq *edp_pps;
524
	struct edp_power_seq *edp_pps;
499
	struct edp_link_params *edp_link_params;
525
	struct edp_link_params *edp_link_params;
Line 500... Line 526...
500
 
526
 
501
	edp = find_section(bdb, BDB_EDP);
527
	edp = find_section(bdb, BDB_EDP);
502
	if (!edp) {
528
	if (!edp) {
503
		if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->vbt.edp_support)
529
		if (dev_priv->vbt.edp_support)
504
			DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported.\n");
530
			DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported.\n");
505
		return;
531
		return;
Line 506... Line 532...
506
	}
532
	}
Line 566... Line 592...
566
		break;
592
		break;
567
	}
593
	}
568
}
594
}
Line 569... Line 595...
569
 
595
 
-
 
596
static void
-
 
597
parse_mipi(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
-
 
598
{
-
 
599
	struct bdb_mipi *mipi;
-
 
600
 
-
 
601
	mipi = find_section(bdb, BDB_MIPI);
-
 
602
	if (!mipi) {
-
 
603
		DRM_DEBUG_KMS("No MIPI BDB found");
-
 
604
		return;
-
 
605
	}
-
 
606
 
-
 
607
	/* XXX: add more info */
-
 
608
	dev_priv->vbt.dsi.panel_id = mipi->panel_id;
-
 
609
}
-
 
610
 
-
 
611
static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port,
-
 
612
			   struct bdb_header *bdb)
-
 
613
{
-
 
614
	union child_device_config *it, *child = NULL;
-
 
615
	struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port];
-
 
616
	uint8_t hdmi_level_shift;
-
 
617
	int i, j;
-
 
618
	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt;
-
 
619
	uint8_t aux_channel;
-
 
620
	/* Each DDI port can have more than one value on the "DVO Port" field,
-
 
621
	 * so look for all the possible values for each port and abort if more
-
 
622
	 * than one is found. */
-
 
623
	int dvo_ports[][2] = {
-
 
624
		{DVO_PORT_HDMIA, DVO_PORT_DPA},
-
 
625
		{DVO_PORT_HDMIB, DVO_PORT_DPB},
-
 
626
		{DVO_PORT_HDMIC, DVO_PORT_DPC},
-
 
627
		{DVO_PORT_HDMID, DVO_PORT_DPD},
-
 
628
		{DVO_PORT_CRT, -1 /* Port E can only be DVO_PORT_CRT */ },
-
 
629
	};
-
 
630
 
-
 
631
	/* Find the child device to use, abort if more than one found. */
-
 
632
	for (i = 0; i < dev_priv->vbt.child_dev_num; i++) {
-
 
633
		it = dev_priv->vbt.child_dev + i;
-
 
634
 
-
 
635
		for (j = 0; j < 2; j++) {
-
 
636
			if (dvo_ports[port][j] == -1)
-
 
637
				break;
-
 
638
 
-
 
639
			if (it->common.dvo_port == dvo_ports[port][j]) {
-
 
640
				if (child) {
-
 
641
					DRM_DEBUG_KMS("More than one child device for port %c in VBT.\n",
-
 
642
						      port_name(port));
-
 
643
					return;
-
 
644
				}
-
 
645
				child = it;
-
 
646
			}
-
 
647
		}
-
 
648
	}
-
 
649
	if (!child)
-
 
650
		return;
-
 
651
 
-
 
652
	aux_channel = child->raw[25];
-
 
653
 
-
 
654
	is_dvi = child->common.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
-
 
655
	is_dp = child->common.device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
-
 
656
	is_crt = child->common.device_type & DEVICE_TYPE_ANALOG_OUTPUT;
-
 
657
	is_hdmi = is_dvi && (child->common.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
-
 
658
	is_edp = is_dp && (child->common.device_type & DEVICE_TYPE_INTERNAL_CONNECTOR);
-
 
659
 
-
 
660
	info->supports_dvi = is_dvi;
-
 
661
	info->supports_hdmi = is_hdmi;
-
 
662
	info->supports_dp = is_dp;
-
 
663
 
-
 
664
	DRM_DEBUG_KMS("Port %c VBT info: DP:%d HDMI:%d DVI:%d EDP:%d CRT:%d\n",
-
 
665
		      port_name(port), is_dp, is_hdmi, is_dvi, is_edp, is_crt);
-
 
666
 
-
 
667
	if (is_edp && is_dvi)
-
 
668
		DRM_DEBUG_KMS("Internal DP port %c is TMDS compatible\n",
-
 
669
			      port_name(port));
-
 
670
	if (is_crt && port != PORT_E)
-
 
671
		DRM_DEBUG_KMS("Port %c is analog\n", port_name(port));
-
 
672
	if (is_crt && (is_dvi || is_dp))
-
 
673
		DRM_DEBUG_KMS("Analog port %c is also DP or TMDS compatible\n",
-
 
674
			      port_name(port));
-
 
675
	if (is_dvi && (port == PORT_A || port == PORT_E))
-
 
676
		DRM_DEBUG_KMS("Port %c is TMDS compabile\n", port_name(port));
-
 
677
	if (!is_dvi && !is_dp && !is_crt)
-
 
678
		DRM_DEBUG_KMS("Port %c is not DP/TMDS/CRT compatible\n",
-
 
679
			      port_name(port));
-
 
680
	if (is_edp && (port == PORT_B || port == PORT_C || port == PORT_E))
-
 
681
		DRM_DEBUG_KMS("Port %c is internal DP\n", port_name(port));
-
 
682
 
-
 
683
	if (is_dvi) {
-
 
684
		if (child->common.ddc_pin == 0x05 && port != PORT_B)
-
 
685
			DRM_DEBUG_KMS("Unexpected DDC pin for port B\n");
-
 
686
		if (child->common.ddc_pin == 0x04 && port != PORT_C)
-
 
687
			DRM_DEBUG_KMS("Unexpected DDC pin for port C\n");
-
 
688
		if (child->common.ddc_pin == 0x06 && port != PORT_D)
-
 
689
			DRM_DEBUG_KMS("Unexpected DDC pin for port D\n");
-
 
690
	}
-
 
691
 
-
 
692
	if (is_dp) {
-
 
693
		if (aux_channel == 0x40 && port != PORT_A)
-
 
694
			DRM_DEBUG_KMS("Unexpected AUX channel for port A\n");
-
 
695
		if (aux_channel == 0x10 && port != PORT_B)
-
 
696
			DRM_DEBUG_KMS("Unexpected AUX channel for port B\n");
-
 
697
		if (aux_channel == 0x20 && port != PORT_C)
-
 
698
			DRM_DEBUG_KMS("Unexpected AUX channel for port C\n");
-
 
699
		if (aux_channel == 0x30 && port != PORT_D)
-
 
700
			DRM_DEBUG_KMS("Unexpected AUX channel for port D\n");
-
 
701
	}
-
 
702
 
-
 
703
	if (bdb->version >= 158) {
-
 
704
		/* The VBT HDMI level shift values match the table we have. */
-
 
705
		hdmi_level_shift = child->raw[7] & 0xF;
-
 
706
		if (hdmi_level_shift < 0xC) {
-
 
707
			DRM_DEBUG_KMS("VBT HDMI level shift for port %c: %d\n",
-
 
708
				      port_name(port),
-
 
709
				      hdmi_level_shift);
-
 
710
			info->hdmi_level_shift = hdmi_level_shift;
-
 
711
		}
-
 
712
	}
-
 
713
}
-
 
714
 
-
 
715
static void parse_ddi_ports(struct drm_i915_private *dev_priv,
-
 
716
			    struct bdb_header *bdb)
-
 
717
{
-
 
718
	struct drm_device *dev = dev_priv->dev;
-
 
719
	enum port port;
-
 
720
 
-
 
721
	if (!HAS_DDI(dev))
-
 
722
		return;
-
 
723
 
-
 
724
	if (!dev_priv->vbt.child_dev_num)
-
 
725
		return;
-
 
726
 
-
 
727
	if (bdb->version < 155)
-
 
728
		return;
-
 
729
 
-
 
730
	for (port = PORT_A; port < I915_MAX_PORTS; port++)
-
 
731
		parse_ddi_port(dev_priv, port, bdb);
-
 
732
}
-
 
733
 
570
static void
734
static void
571
parse_device_mapping(struct drm_i915_private *dev_priv,
735
parse_device_mapping(struct drm_i915_private *dev_priv,
572
		       struct bdb_header *bdb)
736
		       struct bdb_header *bdb)
573
{
737
{
574
	struct bdb_general_definitions *p_defs;
738
	struct bdb_general_definitions *p_defs;
575
	struct child_device_config *p_child, *child_dev_ptr;
739
	union child_device_config *p_child, *child_dev_ptr;
576
	int i, child_device_num, count;
740
	int i, child_device_num, count;
Line 577... Line 741...
577
	u16	block_size;
741
	u16	block_size;
578
 
742
 
Line 598... Line 762...
598
				sizeof(*p_child);
762
				sizeof(*p_child);
599
	count = 0;
763
	count = 0;
600
	/* get the number of child device that is present */
764
	/* get the number of child device that is present */
601
	for (i = 0; i < child_device_num; i++) {
765
	for (i = 0; i < child_device_num; i++) {
602
		p_child = &(p_defs->devices[i]);
766
		p_child = &(p_defs->devices[i]);
603
		if (!p_child->device_type) {
767
		if (!p_child->common.device_type) {
604
			/* skip the device block if device type is invalid */
768
			/* skip the device block if device type is invalid */
605
			continue;
769
			continue;
606
		}
770
		}
607
		count++;
771
		count++;
608
	}
772
	}
Line 618... Line 782...
618
 
782
 
619
	dev_priv->vbt.child_dev_num = count;
783
	dev_priv->vbt.child_dev_num = count;
620
	count = 0;
784
	count = 0;
621
	for (i = 0; i < child_device_num; i++) {
785
	for (i = 0; i < child_device_num; i++) {
622
		p_child = &(p_defs->devices[i]);
786
		p_child = &(p_defs->devices[i]);
623
		if (!p_child->device_type) {
787
		if (!p_child->common.device_type) {
624
			/* skip the device block if device type is invalid */
788
			/* skip the device block if device type is invalid */
625
			continue;
789
			continue;
626
		}
790
		}
627
		child_dev_ptr = dev_priv->vbt.child_dev + count;
791
		child_dev_ptr = dev_priv->vbt.child_dev + count;
Line 634... Line 798...
634
 
798
 
635
static void
799
static void
636
init_vbt_defaults(struct drm_i915_private *dev_priv)
800
init_vbt_defaults(struct drm_i915_private *dev_priv)
637
{
801
{
-
 
802
	struct drm_device *dev = dev_priv->dev;
Line 638... Line 803...
638
	struct drm_device *dev = dev_priv->dev;
803
	enum port port;
Line 639... Line 804...
639
 
804
 
640
	dev_priv->vbt.crt_ddc_pin = GMBUS_PORT_VGADDC;
805
	dev_priv->vbt.crt_ddc_pin = GMBUS_PORT_VGADDC;
Line 650... Line 815...
650
	dev_priv->vbt.int_tv_support = 1;
815
	dev_priv->vbt.int_tv_support = 1;
651
	dev_priv->vbt.int_crt_support = 1;
816
	dev_priv->vbt.int_crt_support = 1;
Line 652... Line 817...
652
 
817
 
653
	/* Default to using SSC */
818
	/* Default to using SSC */
-
 
819
	dev_priv->vbt.lvds_use_ssc = 1;
-
 
820
	/*
-
 
821
	 * Core/SandyBridge/IvyBridge use alternative (120MHz) reference
-
 
822
	 * clock for LVDS.
654
	dev_priv->vbt.lvds_use_ssc = 1;
823
	 */
-
 
824
	dev_priv->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(dev,
655
	dev_priv->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(dev, 1);
825
			!HAS_PCH_SPLIT(dev));
-
 
826
	DRM_DEBUG_KMS("Set default to SSC at %d kHz\n", dev_priv->vbt.lvds_ssc_freq);
-
 
827
 
-
 
828
	for (port = PORT_A; port < I915_MAX_PORTS; port++) {
-
 
829
		struct ddi_vbt_port_info *info =
-
 
830
			&dev_priv->vbt.ddi_port_info[port];
-
 
831
 
-
 
832
		/* Recommended BSpec default: 800mV 0dB. */
-
 
833
		info->hdmi_level_shift = 6;
-
 
834
 
-
 
835
		info->supports_dvi = (port != PORT_A && port != PORT_E);
-
 
836
		info->supports_hdmi = info->supports_dvi;
-
 
837
		info->supports_dp = (port != PORT_E);
656
	DRM_DEBUG_KMS("Set default to SSC at %dMHz\n", dev_priv->vbt.lvds_ssc_freq);
838
	}
Line 657... Line 839...
657
}
839
}
658
 
840
 
Line 718... Line 900...
718
 
900
 
719
	/* Grab useful general definitions */
901
	/* Grab useful general definitions */
720
	parse_general_features(dev_priv, bdb);
902
	parse_general_features(dev_priv, bdb);
721
	parse_general_definitions(dev_priv, bdb);
903
	parse_general_definitions(dev_priv, bdb);
-
 
904
	parse_lfp_panel_data(dev_priv, bdb);
722
	parse_lfp_panel_data(dev_priv, bdb);
905
	parse_lfp_backlight(dev_priv, bdb);
723
	parse_sdvo_panel_data(dev_priv, bdb);
906
	parse_sdvo_panel_data(dev_priv, bdb);
724
	parse_sdvo_device_mapping(dev_priv, bdb);
907
	parse_sdvo_device_mapping(dev_priv, bdb);
725
	parse_device_mapping(dev_priv, bdb);
908
	parse_device_mapping(dev_priv, bdb);
726
	parse_driver_features(dev_priv, bdb);
909
	parse_driver_features(dev_priv, bdb);
-
 
910
	parse_edp(dev_priv, bdb);
-
 
911
	parse_mipi(dev_priv, bdb);
Line 727... Line 912...
727
	parse_edp(dev_priv, bdb);
912
	parse_ddi_ports(dev_priv, bdb);
728
 
913
 
Line 729... Line 914...
729
	if (bios)
914
	if (bios)