aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/cg3.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2007-08-25 01:33:15 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-08-26 21:49:08 -0400
commit6c8f5b90bfbe69a27763fb0e181bd2465181446d (patch)
treebb62f00ccd9ab1472446831f9e1442ad6bb86f47 /drivers/video/cg3.c
parent1bd4b280394cdd14f82efc00808c6d77b097285a (diff)
[VIDEO]: Do not prom_halt() in cg3 and bw2 device probe.
Just give a normal kernel log message of the problem and return failure. Based upon a patch from Mark Fortescue. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/video/cg3.c')
-rw-r--r--drivers/video/cg3.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/video/cg3.c b/drivers/video/cg3.c
index 5741b46ade1b..a5c7fb331527 100644
--- a/drivers/video/cg3.c
+++ b/drivers/video/cg3.c
@@ -315,7 +315,7 @@ static u_char cg3_dacvals[] __devinitdata = {
315 4, 0xff, 5, 0x00, 6, 0x70, 7, 0x00, 0 315 4, 0xff, 5, 0x00, 6, 0x70, 7, 0x00, 0
316}; 316};
317 317
318static void __devinit cg3_do_default_mode(struct cg3_par *par) 318static int __devinit cg3_do_default_mode(struct cg3_par *par)
319{ 319{
320 enum cg3_type type; 320 enum cg3_type type;
321 u8 *p; 321 u8 *p;
@@ -332,10 +332,9 @@ static void __devinit cg3_do_default_mode(struct cg3_par *par)
332 else 332 else
333 type = CG3_AT_66HZ; 333 type = CG3_AT_66HZ;
334 } else { 334 } else {
335 prom_printf("cgthree: can't handle SR %02x\n", 335 printk(KERN_ERR "cgthree: can't handle SR %02x\n",
336 status); 336 status);
337 prom_halt(); 337 return -EINVAL;
338 return;
339 } 338 }
340 } 339 }
341 340
@@ -351,6 +350,7 @@ static void __devinit cg3_do_default_mode(struct cg3_par *par)
351 regp = (u8 __iomem *)&par->regs->cmap.control; 350 regp = (u8 __iomem *)&par->regs->cmap.control;
352 sbus_writeb(p[1], regp); 351 sbus_writeb(p[1], regp);
353 } 352 }
353 return 0;
354} 354}
355 355
356static int __devinit cg3_probe(struct of_device *op, 356static int __devinit cg3_probe(struct of_device *op,
@@ -400,8 +400,11 @@ static int __devinit cg3_probe(struct of_device *op,
400 400
401 cg3_blank(0, info); 401 cg3_blank(0, info);
402 402
403 if (!of_find_property(dp, "width", NULL)) 403 if (!of_find_property(dp, "width", NULL)) {
404 cg3_do_default_mode(par); 404 err = cg3_do_default_mode(par);
405 if (err)
406 goto out_unmap_screen;
407 }
405 408
406 if (fb_alloc_cmap(&info->cmap, 256, 0)) 409 if (fb_alloc_cmap(&info->cmap, 256, 0))
407 goto out_unmap_screen; 410 goto out_unmap_screen;