[OpenBIOS] r361 - in openbios-devel: arch/sparc64 drivers

svn at openbios.org svn at openbios.org
Tue Jan 6 21:27:01 CET 2009


Author: blueswirl
Date: 2009-01-06 21:27:01 +0100 (Tue, 06 Jan 2009)
New Revision: 361

Modified:
   openbios-devel/arch/sparc64/tree.fs
   openbios-devel/drivers/esp.c
   openbios-devel/drivers/ide.c
Log:
Support cd/cdrom and hd/disk aliases on all architectures

Modified: openbios-devel/arch/sparc64/tree.fs
===================================================================
--- openbios-devel/arch/sparc64/tree.fs	2009-01-06 19:06:58 UTC (rev 360)
+++ openbios-devel/arch/sparc64/tree.fs	2009-01-06 20:27:01 UTC (rev 361)
@@ -47,50 +47,3 @@
   : close ;
 
 finish-device
-
-: ?devalias ( alias-str alias-len device-str device-len --
-  \		alias-str alias-len false | true )
-  active-package >r
-  " /aliases" find-device
-  \ 2dup ." Checking " type
-  2dup find-dev if     \ check if device exists
-    drop
-    2over find-dev if  \ do we already have an alias?
-      \ ." alias exists" cr
-      drop 2drop false
-    else
-      \ ." device exists" cr
-      encode-string
-      2swap property
-      true
-    then
-  else
-    \ ." device doesn't exist" cr
-    2drop false
-  then
-  r> active-package!
-  ;
-
-:noname
-  " hd"
-  " /pci/isa/ide0/disk at 0" ?devalias not if
-    " /pci/isa/ide0/disk at 1" ?devalias not if
-      " /pci/isa/ide1/disk at 0" ?devalias not if
-        " /pci/isa/ide1/disk at 1" ?devalias not if
-	  2drop ." No disk found." cr
-	then
-      then
-    then
-  then
-
-  " cdrom"
-  " /pci/isa/ide0/cdrom at 0" ?devalias not if
-    " /pci/isa/ide0/cdrom at 1" ?devalias not if
-      " /pci/isa/ide1/cdrom at 0" ?devalias not if
-        " /pci/isa/ide1/cdrom at 1" ?devalias not if
-	  2drop ." No cdrom found" cr
-	then
-      then
-    then
-  then
-; SYSTEM-initializer

Modified: openbios-devel/drivers/esp.c
===================================================================
--- openbios-devel/drivers/esp.c	2009-01-06 19:06:58 UTC (rev 360)
+++ openbios-devel/drivers/esp.c	2009-01-06 20:27:01 UTC (rev 361)
@@ -42,7 +42,7 @@
 
 typedef struct sd_private {
     unsigned int bs;
-    const char *media_str;
+    const char *media_str[2];
     uint32_t sectors;
     uint8_t media;
     uint8_t id;
@@ -74,7 +74,8 @@
 {
     printk("SCSI DRIVE @%lx:\n", (unsigned long)drive);
     printk("id: %d\n", drive->id);
-    printk("media: %s\n", drive->media_str);
+    printk("media: %s\n", drive->media_str[0]);
+    printk("media: %s\n", drive->media_str[1]);
     printk("model: %s\n", drive->model);
     printk("sectors: %d\n", drive->sectors);
     printk("present: %d\n", drive->present);
@@ -183,7 +184,7 @@
 static unsigned int
 inquiry(esp_private_t *esp, sd_private_t *sd)
 {
-    const char *media = "UNKNOWN";
+    const char *media[2] = { "UNKNOWN", "UNKNOWN"};
 
     // Setup command = Inquiry
     memset(esp->buffer, 0, 7);
@@ -202,13 +203,16 @@
 
     switch (sd->media) {
     case TYPE_DISK:
-        media = "disk";
+        media[0] = "disk";
+        media[1] = "hd";
         break;
     case TYPE_ROM:
-        media = "cdrom";
+        media[0] = "cdrom";
+        media[1] = "cd";
         break;
     }
-    sd->media_str = media;
+    sd->media_str[0] = media[0];
+    sd->media_str[1] = media[1];
     memcpy(sd->model, &esp->buffer[16], 16);
     sd->model[17] = '\0';
 
@@ -406,6 +410,7 @@
 static void
 add_alias(const char *device, const char *alias)
 {
+    DPRINTF("add_alias dev \"%s\" = alias \"%s\"\n", device, alias);
     push_str("/aliases");
     fword("find-device");
     push_str(device);
@@ -517,11 +522,15 @@
             counter_ptr = &diskcount;
         }
         if (*counter_ptr == 0) {
-            add_alias(nodebuff, esp->sd[id].media_str);
+            add_alias(nodebuff, esp->sd[id].media_str[0]);
+            add_alias(nodebuff, esp->sd[id].media_str[1]);
         }
-        snprintf(aliasbuff, sizeof(aliasbuff), "%s%d", esp->sd[id].media_str,
-                *counter_ptr);
+        snprintf(aliasbuff, sizeof(aliasbuff), "%s%d",
+                 esp->sd[id].media_str[0], *counter_ptr);
         add_alias(nodebuff, aliasbuff);
+        snprintf(aliasbuff, sizeof(aliasbuff), "%s%d",
+                 esp->sd[id].media_str[1], *counter_ptr);
+        add_alias(nodebuff, aliasbuff);
         snprintf(aliasbuff, sizeof(aliasbuff), "sd(0,%d,0)", id);
         add_alias(nodebuff, aliasbuff);
         snprintf(aliasbuff, sizeof(aliasbuff), "sd(0,%d,0)@0,0", id);

Modified: openbios-devel/drivers/ide.c
===================================================================
--- openbios-devel/drivers/ide.c	2009-01-06 19:06:58 UTC (rev 360)
+++ openbios-devel/drivers/ide.c	2009-01-06 20:27:01 UTC (rev 361)
@@ -1415,11 +1415,15 @@
 				cd_found = 1;
 				set_property(aliases, "cd",
 					     nodebuff, strlen(nodebuff) + 1);
+				set_property(aliases, "cdrom",
+					     nodebuff, strlen(nodebuff) + 1);
 			}
 			if (drive->media == ide_media_disk && !hd_found) {
 				hd_found = 1;
 				set_property(aliases, "hd",
 					     nodebuff, strlen(nodebuff) + 1);
+				set_property(aliases, "disk",
+					     nodebuff, strlen(nodebuff) + 1);
 			}
 		}
 	}




More information about the OpenBIOS mailing list