[OpenBIOS] r413 - openbios-devel/drivers

svn at openbios.org svn at openbios.org
Sat Jan 17 11:15:13 CET 2009


Author: blueswirl
Date: 2009-01-17 11:15:13 +0100 (Sat, 17 Jan 2009)
New Revision: 413

Modified:
   openbios-devel/drivers/escc.c
   openbios-devel/drivers/obio.c
   openbios-devel/drivers/sbus.c
Log:
Use aliases for console device selection

Modified: openbios-devel/drivers/escc.c
===================================================================
--- openbios-devel/drivers/escc.c	2009-01-17 09:55:09 UTC (rev 412)
+++ openbios-devel/drivers/escc.c	2009-01-17 10:15:13 UTC (rev 413)
@@ -318,6 +318,7 @@
 ob_zs_init(uint64_t base, uint64_t offset, int intr, int slave, int keyboard)
 {
     char nodebuff[256];
+    phandle_t aliases;
 
     ob_new_obio_device("zs", "serial");
 
@@ -348,8 +349,21 @@
              (int)offset & 0xffffffff);
     if (keyboard) {
         REGISTER_NODE_METHODS(escc_keyboard, nodebuff);
+
+        aliases = find_dev("/aliases");
+        set_property(aliases, "keyboard", nodebuff, strlen(nodebuff) + 1);
     } else {
         REGISTER_NODE_METHODS(escc, nodebuff);
+
+        aliases = find_dev("/aliases");
+        snprintf(nodebuff, sizeof(nodebuff), "/obio/zs at 0,%x:a",
+                 (int)offset & 0xffffffff);
+        set_property(aliases, "ttya", nodebuff, strlen(nodebuff) + 1);
+
+        snprintf(nodebuff, sizeof(nodebuff), "/obio/zs at 0,%x:b",
+                 (int)offset & 0xffffffff);
+        set_property(aliases, "ttyb", nodebuff, strlen(nodebuff) + 1);
+
     }
 }
 

Modified: openbios-devel/drivers/obio.c
===================================================================
--- openbios-devel/drivers/obio.c	2009-01-17 09:55:09 UTC (rev 412)
+++ openbios-devel/drivers/obio.c	2009-01-17 10:15:13 UTC (rev 413)
@@ -907,24 +907,26 @@
     if (nographic) {
         obp_stdin = PROMDEV_TTYA;
         obp_stdout = PROMDEV_TTYA;
-        stdin = "/obio/zs at 0,100000:a";
-        stdout = "/obio/zs at 0,100000:a";
+        stdin = "ttya";
+        stdout = "ttya";
     } else {
         obp_stdin = PROMDEV_KBD;
         obp_stdout = PROMDEV_SCREEN;
-        stdin = "/obio/zs at 0,0:a";
-        stdout = "/iommu/sbus/SUNW,tcx";
+        stdin = "keyboard";
+        stdout = "screen";
     }
 
     push_str("/");
     fword("find-device");
 
     push_str(stdin);
+    fword("pathres-resolve-aliases");
     fword("encode-string");
     push_str("stdin-path");
     fword("property");
 
     push_str(stdout);
+    fword("pathres-resolve-aliases");
     fword("encode-string");
     push_str("stdout-path");
     fword("property");

Modified: openbios-devel/drivers/sbus.c
===================================================================
--- openbios-devel/drivers/sbus.c	2009-01-17 09:55:09 UTC (rev 412)
+++ openbios-devel/drivers/sbus.c	2009-01-17 10:15:13 UTC (rev 413)
@@ -89,9 +89,11 @@
 uint16_t graphic_depth;
 
 static void
-ob_tcx_init(unsigned int slot)
+ob_tcx_init(unsigned int slot, const char *path)
 {
-    push_str("/iommu/sbus/SUNW,tcx");
+    phandle_t chosen, aliases;
+
+    push_str(path);
     fword("find-device");
 
     PUSH(slot);
@@ -277,6 +279,14 @@
         push_str("tcx-8-bit");
         fword("property");
     }
+
+    chosen = find_dev("/chosen");
+    push_str(path);
+    fword("open-dev");
+    set_int_property(chosen, "screen", POP());
+
+    aliases = find_dev("/aliases");
+    set_property(aliases, "screen", path, strlen(path) + 1);
 }
 
 static void
@@ -373,7 +383,7 @@
     // OpenBIOS and Qemu don't know how to do Sbus probing
     switch(slot) {
     case 3: // SUNW,tcx
-        ob_tcx_init(slot);
+        ob_tcx_init(slot, "/iommu/sbus/SUNW,tcx");
         break;
     case 4:
         // SUNW,CS4231
@@ -395,7 +405,7 @@
     // OpenBIOS and Qemu don't know how to do Sbus probing
     switch(slot) {
     case 2: // SUNW,tcx
-        ob_tcx_init(slot);
+        ob_tcx_init(slot, "/iommu/sbus/SUNW,tcx");
         break;
     case 0xf: // le, esp, bpp, power-management
         ob_macio_init(slot, base, 0);
@@ -413,7 +423,7 @@
     // OpenBIOS and Qemu don't know how to do Sbus probing
     switch(slot) {
     case 2: // SUNW,tcx
-        ob_tcx_init(slot);
+        ob_tcx_init(slot, "/iommu/sbus/SUNW,tcx");
         break;
     case 0xf: // le, esp, bpp, power-management
 #ifdef CONFIG_DRIVER_ESP




More information about the OpenBIOS mailing list