summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2003-03-28 19:19:28 +1100
committerPaul Mackerras <paulus@samba.org>2003-03-28 19:19:28 +1100
commitfb269473bba6f369e4f7fb98fa5c29979a2e7688 (patch)
tree77b0e0ddea3019dbb2b64061e9f2cb0c6980b75f
parent1456e60d68b2d400a7d059dc05c3caf9e79db7cd (diff)
PPC32: Get Open Firmware to initialize all the displays, not just one.
-rw-r--r--arch/ppc/syslib/prom_init.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/arch/ppc/syslib/prom_init.c b/arch/ppc/syslib/prom_init.c
index 127e4821e1d0..047e1bf54f96 100644
--- a/arch/ppc/syslib/prom_init.c
+++ b/arch/ppc/syslib/prom_init.c
@@ -275,7 +275,7 @@ check_display(unsigned long mem)
{
phandle node;
ihandle ih;
- int i;
+ int i, j;
char type[16], *path;
static unsigned char default_colors[] = {
0x00, 0x00, 0x00,
@@ -335,26 +335,23 @@ check_display(unsigned long mem)
break;
}
-try_again:
- /*
- * Open the first display and set its colormap.
- */
- if (prom_num_displays > 0) {
- path = prom_display_paths[0];
+ for (j=0; j<prom_num_displays; j++) {
+ path = prom_display_paths[j];
prom_print("opening display ");
prom_print(path);
ih = call_prom("open", 1, 1, path);
if (ih == 0 || ih == (ihandle) -1) {
prom_print("... failed\n");
- for (i=1; i<prom_num_displays; i++) {
+ for (i=j+1; i<prom_num_displays; i++) {
prom_display_paths[i-1] = prom_display_paths[i];
prom_display_nodes[i-1] = prom_display_nodes[i];
}
- if (--prom_num_displays > 0)
- prom_disp_node = prom_display_nodes[0];
- else
+ if (--prom_num_displays > 0) {
+ prom_disp_node = prom_display_nodes[j];
+ j--;
+ } else
prom_disp_node = NULL;
- goto try_again;
+ continue;
} else {
prom_print("... ok\n");
/*
@@ -369,7 +366,7 @@ try_again:
break;
#ifdef CONFIG_LOGO_LINUX_CLUT224
- clut = logo_linux_clut224.clut;
+ clut = PTRRELOC(logo_linux_clut224.clut);
for (i = 0; i < logo_linux_clut224.clutsize;
i++, clut += 3)
if (prom_set_color(ih, i + 32, clut[0],