aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/prom_init.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-10-17 05:20:46 -0400
committerPaul Mackerras <paulus@samba.org>2005-10-17 05:20:46 -0400
commit30cd4a4e9c25e154ba087848a839bd0c6d024092 (patch)
tree8ba678b5e025b1d5e1f1b18e14662d2da720a0f7 /arch/powerpc/kernel/prom_init.c
parent7dffb72028bfd909ac51a1546d182de2df4d2426 (diff)
powerpc: Initialize btext subsystem later, after prom_init
We were initializing the btext stuff from prom_init(), thus breaking the rule that all communication between prom_init() and the rest of the kernel has to be via the flattened device tree. This removes the btext initialization calls from prom_init() and initializes it instead after the device tree is unflattened. It would be nice to do it earlier, but that needs some more infrastructure to find the properties we need in the flattened device tree. Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/prom_init.c')
-rw-r--r--arch/powerpc/kernel/prom_init.c59
1 files changed, 0 insertions, 59 deletions
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
index 911a803f27da..d9130c839039 100644
--- a/arch/powerpc/kernel/prom_init.c
+++ b/arch/powerpc/kernel/prom_init.c
@@ -1404,62 +1404,6 @@ static int __init prom_find_machine_type(void)
1404#endif 1404#endif
1405} 1405}
1406 1406
1407static int __init setup_disp(phandle dp)
1408{
1409#if defined(CONFIG_BOOTX_TEXT) && defined(CONFIG_PPC32)
1410 int width = 640, height = 480, depth = 8, pitch;
1411 unsigned address;
1412 u32 addrs[8][5];
1413 int i, naddrs;
1414 char name[32];
1415 char *getprop = "getprop";
1416
1417 prom_printf("Initializing screen: ");
1418
1419 memset(name, 0, sizeof(name));
1420 call_prom(getprop, 4, 1, dp, "name", name, sizeof(name));
1421 name[sizeof(name)-1] = 0;
1422 prom_print(name);
1423 prom_print("\n");
1424 call_prom(getprop, 4, 1, dp, "width", &width, sizeof(width));
1425 call_prom(getprop, 4, 1, dp, "height", &height, sizeof(height));
1426 call_prom(getprop, 4, 1, dp, "depth", &depth, sizeof(depth));
1427 pitch = width * ((depth + 7) / 8);
1428 call_prom(getprop, 4, 1, dp, "linebytes",
1429 &pitch, sizeof(pitch));
1430 if (pitch == 1)
1431 pitch = 0x1000; /* for strange IBM display */
1432 address = 0;
1433 call_prom(getprop, 4, 1, dp, "address", &address, sizeof(address));
1434 if (address == 0) {
1435 /* look for an assigned address with a size of >= 1MB */
1436 naddrs = call_prom(getprop, 4, 1, dp, "assigned-addresses",
1437 addrs, sizeof(addrs));
1438 naddrs /= 20;
1439 for (i = 0; i < naddrs; ++i) {
1440 if (addrs[i][4] >= (1 << 20)) {
1441 address = addrs[i][2];
1442 /* use the BE aperture if possible */
1443 if (addrs[i][4] >= (16 << 20))
1444 address += (8 << 20);
1445 break;
1446 }
1447 }
1448 if (address == 0) {
1449 prom_print("Failed to get address\n");
1450 return 0;
1451 }
1452 }
1453 /* kludge for valkyrie */
1454 if (strcmp(name, "valkyrie") == 0)
1455 address += 0x1000;
1456
1457 prom_printf("\n\n\n\naddress = %x\n", address);
1458 btext_setup_display(width, height, depth, pitch, address);
1459#endif /* CONFIG_BOOTX_TEXT && CONFIG_PPC32 */
1460 return 1;
1461}
1462
1463static int __init prom_set_color(ihandle ih, int i, int r, int g, int b) 1407static int __init prom_set_color(ihandle ih, int i, int r, int g, int b)
1464{ 1408{
1465 return call_prom("call-method", 6, 1, ADDR("color!"), ih, i, b, g, r); 1409 return call_prom("call-method", 6, 1, ADDR("color!"), ih, i, b, g, r);
@@ -1479,7 +1423,6 @@ static void __init prom_check_displays(void)
1479 phandle node; 1423 phandle node;
1480 ihandle ih; 1424 ihandle ih;
1481 int i; 1425 int i;
1482 int got_display = 0;
1483 1426
1484 static unsigned char default_colors[] = { 1427 static unsigned char default_colors[] = {
1485 0x00, 0x00, 0x00, 1428 0x00, 0x00, 0x00,
@@ -1546,8 +1489,6 @@ static void __init prom_check_displays(void)
1546 clut[2]) != 0) 1489 clut[2]) != 0)
1547 break; 1490 break;
1548#endif /* CONFIG_LOGO_LINUX_CLUT224 */ 1491#endif /* CONFIG_LOGO_LINUX_CLUT224 */
1549 if (!got_display)
1550 got_display = setup_disp(node);
1551 } 1492 }
1552} 1493}
1553 1494