Lines 480-496
Link Here
|
480 |
|
480 |
|
481 |
RTRACE("Starting monitor auto detection...\n"); |
481 |
RTRACE("Starting monitor auto detection...\n"); |
482 |
|
482 |
|
483 |
#if DEBUG && defined(CONFIG_FB_RADEON_I2C) |
|
|
484 |
{ |
485 |
u8 *EDIDs[4] = { NULL, NULL, NULL, NULL }; |
486 |
int mon_types[4] = {MT_NONE, MT_NONE, MT_NONE, MT_NONE}; |
487 |
int i; |
488 |
|
489 |
for (i = 0; i < 4; i++) |
490 |
mon_types[i] = radeon_probe_i2c_connector(rinfo, |
491 |
i+1, &EDIDs[i]); |
492 |
} |
493 |
#endif /* DEBUG */ |
494 |
/* |
483 |
/* |
495 |
* Old single head cards |
484 |
* Old single head cards |
496 |
*/ |
485 |
*/ |
Lines 530-540
Link Here
|
530 |
if (!BIOS_IN8(tmp + i*2) && i > 1) |
519 |
if (!BIOS_IN8(tmp + i*2) && i > 1) |
531 |
break; |
520 |
break; |
532 |
tmp0 = BIOS_IN16(tmp + i*2); |
521 |
tmp0 = BIOS_IN16(tmp + i*2); |
533 |
if ((!(tmp0 & 0x01)) && (((tmp0 >> 8) & 0x0f) == ddc_dvi)) { |
522 |
if ((!(tmp0 & 0x01)) && ((((tmp0 >> 8) & 0x0f) == ddc_dvi) || (((tmp0 >> 8) & 0x0f) == ddc_monid))) { |
534 |
rinfo->reversed_DAC = 1; |
523 |
rinfo->reversed_DAC = 1; |
535 |
printk(KERN_INFO "radeonfb: Reversed DACs detected\n"); |
524 |
printk(KERN_INFO "radeonfb: Reversed DACs detected\n"); |
536 |
} |
525 |
} |
537 |
if ((((tmp0 >> 8) & 0x0f) == ddc_dvi) && ((tmp0 >> 4) & 0x01)) { |
526 |
if ((((tmp0 >> 8) & 0x0f) == ddc_dvi || (((tmp0 >> 8) & 0x0f) == ddc_monid)) && ((tmp0 >> 4) & 0x01)) { |
538 |
rinfo->reversed_TMDS = 1; |
527 |
rinfo->reversed_TMDS = 1; |
539 |
printk(KERN_INFO "radeonfb: Reversed TMDS detected\n"); |
528 |
printk(KERN_INFO "radeonfb: Reversed TMDS detected\n"); |
540 |
} |
529 |
} |
Lines 544-549
Link Here
|
544 |
/* |
533 |
/* |
545 |
* Probe primary head (DVI or laptop internal panel) |
534 |
* Probe primary head (DVI or laptop internal panel) |
546 |
*/ |
535 |
*/ |
|
|
536 |
printk(KERN_INFO "radeonfb: Probe primary head\n"); |
547 |
#ifdef CONFIG_PPC_OF |
537 |
#ifdef CONFIG_PPC_OF |
548 |
if (rinfo->mon1_type == MT_NONE) |
538 |
if (rinfo->mon1_type == MT_NONE) |
549 |
rinfo->mon1_type = radeon_probe_OF_head(rinfo, 0, |
539 |
rinfo->mon1_type = radeon_probe_OF_head(rinfo, 0, |
Lines 551-556
Link Here
|
551 |
#endif /* CONFIG_PPC_OF */ |
541 |
#endif /* CONFIG_PPC_OF */ |
552 |
#ifdef CONFIG_FB_RADEON_I2C |
542 |
#ifdef CONFIG_FB_RADEON_I2C |
553 |
if (rinfo->mon1_type == MT_NONE) |
543 |
if (rinfo->mon1_type == MT_NONE) |
|
|
544 |
rinfo->mon1_type = radeon_probe_i2c_connector(rinfo, ddc_monid, |
545 |
&rinfo->mon1_EDID); |
546 |
if (rinfo->mon1_type == MT_NONE) |
554 |
rinfo->mon1_type = radeon_probe_i2c_connector(rinfo, ddc_dvi, |
547 |
rinfo->mon1_type = radeon_probe_i2c_connector(rinfo, ddc_dvi, |
555 |
&rinfo->mon1_EDID); |
548 |
&rinfo->mon1_EDID); |
556 |
if (rinfo->mon1_type == MT_NONE) { |
549 |
if (rinfo->mon1_type == MT_NONE) { |
Lines 572-577
Link Here
|
572 |
/* |
565 |
/* |
573 |
* Probe secondary head (mostly VGA, can be DVI) |
566 |
* Probe secondary head (mostly VGA, can be DVI) |
574 |
*/ |
567 |
*/ |
|
|
568 |
printk(KERN_INFO "radeonfb: Probe secondary head\n"); |
575 |
#ifdef CONFIG_PPC_OF |
569 |
#ifdef CONFIG_PPC_OF |
576 |
if (rinfo->mon2_type == MT_NONE) |
570 |
if (rinfo->mon2_type == MT_NONE) |
577 |
rinfo->mon2_type = radeon_probe_OF_head(rinfo, 1, |
571 |
rinfo->mon2_type = radeon_probe_OF_head(rinfo, 1, |
Lines 642-648
Link Here
|
642 |
|
636 |
|
643 |
|
637 |
|
644 |
/* |
638 |
/* |
645 |
* This functions applyes any arch/model/machine specific fixups |
639 |
* This functions applies any arch/model/machine specific fixups |
646 |
* to the panel info. It may eventually alter EDID block as |
640 |
* to the panel info. It may eventually alter EDID block as |
647 |
* well or whatever is specific to a given model and not probed |
641 |
* well or whatever is specific to a given model and not probed |
648 |
* properly by the default code |
642 |
* properly by the default code |