summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/ofw
diff options
context:
space:
mode:
authorsobomax <sobomax@FreeBSD.org>2008-09-19 03:22:47 +0000
committersobomax <sobomax@FreeBSD.org>2008-09-19 03:22:47 +0000
commit3cfd06d1a5a81fc5f511f751c93c4e0593ae6151 (patch)
treea56d18eb9eae51dffb4ae187be52d03616675376 /sys/powerpc/ofw
parent9a16f2d6a79a270e897bcd7c555b5a40837cf116 (diff)
downloadFreeBSD-src-3cfd06d1a5a81fc5f511f751c93c4e0593ae6151.zip
FreeBSD-src-3cfd06d1a5a81fc5f511f751c93c4e0593ae6151.tar.gz
When attaching framebuffer to "/chosen/stdout" node fails, try attaching
to "screen" node directly. The problem is that by default OF on some (all?) Macs either doesn't provide "/chosen/stdout" or redirects it somewhere, unless you boot in manual mode via CMD-ALT-O-F. It's nice to see normal FreeBSD boot output instead of blank gray screen.
Diffstat (limited to 'sys/powerpc/ofw')
-rw-r--r--sys/powerpc/ofw/ofw_syscons.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/powerpc/ofw/ofw_syscons.c b/sys/powerpc/ofw/ofw_syscons.c
index 1296ea6..d93c5bc 100644
--- a/sys/powerpc/ofw/ofw_syscons.c
+++ b/sys/powerpc/ofw/ofw_syscons.c
@@ -235,8 +235,16 @@ ofwfb_configure(int flags)
OF_getprop(chosen, "stdout", &stdout, sizeof(stdout));
node = OF_instance_to_package(stdout);
OF_getprop(node, "device_type", type, sizeof(type));
- if (strcmp(type, "display") != 0)
- return (0);
+ if (strcmp(type, "display") != 0) {
+ /*
+ * Attaching to "/chosen/stdout" has failed, try
+ * using "screen" directly.
+ */
+ node = OF_finddevice("screen");
+ OF_getprop(node, "device_type", type, sizeof(type));
+ if (strcmp(type, "display") != 0)
+ return (0);
+ }
/* Only support 8 and 32-bit framebuffers */
OF_getprop(node, "depth", &depth, sizeof(depth));
OpenPOWER on IntegriCloud