Author: raj
Date: Thu Feb 25 15:27:13 2010
New Revision: 204316
URL: http://svn.freebsd.org/changeset/base/204316

Log:
  Let loader(8) for U-Boot use default storage more flexibly.
  
  Obtained from:        Semihalf
  MFC after:    1 week

Modified:
  head/sys/boot/uboot/common/main.c

Modified: head/sys/boot/uboot/common/main.c
==============================================================================
--- head/sys/boot/uboot/common/main.c   Thu Feb 25 15:21:37 2010        
(r204315)
+++ head/sys/boot/uboot/common/main.c   Thu Feb 25 15:27:13 2010        
(r204316)
@@ -117,6 +117,7 @@ main(void)
 {
        struct api_signature *sig = NULL;
        int i;
+       struct open_file f;
 
        if (!api_search_sig(&sig))
                return (-1);
@@ -168,18 +169,28 @@ main(void)
        printf("(%s, %s)\n", bootprog_maker, bootprog_date);
        meminfo();
 
-       /* XXX only support netbooting for now */
-       for (i = 0; devsw[i] != NULL; i++)
+       for (i = 0; devsw[i] != NULL; i++) {
+               printf("\nDevice %d: %s\n", i, devsw[i]->dv_name);
+
+               currdev.d_dev = devsw[i];
+               currdev.d_type = currdev.d_dev->dv_type;
+               currdev.d_unit = 0;
+
+               if (strncmp(devsw[i]->dv_name, "disk",
+                   strlen(devsw[i]->dv_name)) == 0) {
+                       f.f_devdata = &currdev;
+                       currdev.d_disk.pnum = 0;
+                       if (devsw[i]->dv_open(&f,&currdev) == 0)
+                               break;
+               }
+
                if (strncmp(devsw[i]->dv_name, "net",
                    strlen(devsw[i]->dv_name)) == 0)
                        break;
+       }
 
        if (devsw[i] == NULL)
-               panic("no network devices?!");
-
-       currdev.d_dev = devsw[i];
-       currdev.d_type = currdev.d_dev->dv_type;
-       currdev.d_unit = 0;
+               panic("No boot device found!");
 
        env_setenv("currdev", EV_VOLATILE, uboot_fmtdev(&currdev),
            uboot_setcurrdev, env_nounset);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to