diff options
Diffstat (limited to 'drivers/video/nvidia/nv_setup.c')
-rw-r--r-- | drivers/video/nvidia/nv_setup.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/video/nvidia/nv_setup.c b/drivers/video/nvidia/nv_setup.c index 11c84178f420..1f06a9f1bd0f 100644 --- a/drivers/video/nvidia/nv_setup.c +++ b/drivers/video/nvidia/nv_setup.c | |||
@@ -190,9 +190,9 @@ static int NVIsConnected(struct nvidia_par *par, int output) | |||
190 | present = (NV_RD32(PRAMDAC, 0x0608) & (1 << 28)) ? 1 : 0; | 190 | present = (NV_RD32(PRAMDAC, 0x0608) & (1 << 28)) ? 1 : 0; |
191 | 191 | ||
192 | if (present) | 192 | if (present) |
193 | printk("nvidiafb: CRTC%i found\n", output); | 193 | printk("nvidiafb: CRTC%i analog found\n", output); |
194 | else | 194 | else |
195 | printk("nvidiafb: CRTC%i not found\n", output); | 195 | printk("nvidiafb: CRTC%i analog not found\n", output); |
196 | 196 | ||
197 | NV_WR32(par->PRAMDAC0, 0x0608, NV_RD32(par->PRAMDAC0, 0x0608) & | 197 | NV_WR32(par->PRAMDAC0, 0x0608, NV_RD32(par->PRAMDAC0, 0x0608) & |
198 | 0x0000EFFF); | 198 | 0x0000EFFF); |
@@ -305,6 +305,9 @@ void NVCommonSetup(struct fb_info *info) | |||
305 | int FlatPanel = -1; /* really means the CRTC is slaved */ | 305 | int FlatPanel = -1; /* really means the CRTC is slaved */ |
306 | int Television = 0; | 306 | int Television = 0; |
307 | 307 | ||
308 | memset(&monitorA, 0, sizeof(struct fb_monspecs)); | ||
309 | memset(&monitorB, 0, sizeof(struct fb_monspecs)); | ||
310 | |||
308 | par->PRAMIN = par->REGS + (0x00710000 / 4); | 311 | par->PRAMIN = par->REGS + (0x00710000 / 4); |
309 | par->PCRTC0 = par->REGS + (0x00600000 / 4); | 312 | par->PCRTC0 = par->REGS + (0x00600000 / 4); |
310 | par->PRAMDAC0 = par->REGS + (0x00680000 / 4); | 313 | par->PRAMDAC0 = par->REGS + (0x00680000 / 4); |
@@ -401,7 +404,8 @@ void NVCommonSetup(struct fb_info *info) | |||
401 | nvidia_create_i2c_busses(par); | 404 | nvidia_create_i2c_busses(par); |
402 | if (!par->twoHeads) { | 405 | if (!par->twoHeads) { |
403 | par->CRTCnumber = 0; | 406 | par->CRTCnumber = 0; |
404 | nvidia_probe_i2c_connector(info, 1, &edidA); | 407 | if (nvidia_probe_i2c_connector(info, 1, &edidA)) |
408 | nvidia_probe_of_connector(info, 1, &edidA); | ||
405 | if (edidA && !fb_parse_edid(edidA, &var)) { | 409 | if (edidA && !fb_parse_edid(edidA, &var)) { |
406 | printk("nvidiafb: EDID found from BUS1\n"); | 410 | printk("nvidiafb: EDID found from BUS1\n"); |
407 | monA = &monitorA; | 411 | monA = &monitorA; |
@@ -488,14 +492,16 @@ void NVCommonSetup(struct fb_info *info) | |||
488 | oldhead = NV_RD32(par->PCRTC0, 0x00000860); | 492 | oldhead = NV_RD32(par->PCRTC0, 0x00000860); |
489 | NV_WR32(par->PCRTC0, 0x00000860, oldhead | 0x00000010); | 493 | NV_WR32(par->PCRTC0, 0x00000860, oldhead | 0x00000010); |
490 | 494 | ||
491 | nvidia_probe_i2c_connector(info, 1, &edidA); | 495 | if (nvidia_probe_i2c_connector(info, 1, &edidA)) |
496 | nvidia_probe_of_connector(info, 1, &edidA); | ||
492 | if (edidA && !fb_parse_edid(edidA, &var)) { | 497 | if (edidA && !fb_parse_edid(edidA, &var)) { |
493 | printk("nvidiafb: EDID found from BUS1\n"); | 498 | printk("nvidiafb: EDID found from BUS1\n"); |
494 | monA = &monitorA; | 499 | monA = &monitorA; |
495 | fb_edid_to_monspecs(edidA, monA); | 500 | fb_edid_to_monspecs(edidA, monA); |
496 | } | 501 | } |
497 | 502 | ||
498 | nvidia_probe_i2c_connector(info, 2, &edidB); | 503 | if (nvidia_probe_i2c_connector(info, 2, &edidB)) |
504 | nvidia_probe_of_connector(info, 2, &edidB); | ||
499 | if (edidB && !fb_parse_edid(edidB, &var)) { | 505 | if (edidB && !fb_parse_edid(edidB, &var)) { |
500 | printk("nvidiafb: EDID found from BUS2\n"); | 506 | printk("nvidiafb: EDID found from BUS2\n"); |
501 | monB = &monitorB; | 507 | monB = &monitorB; |