]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/cmd_scsi.c
MAINTAINERS: fix Andreas Bießmann AVR32 entry
[karo-tx-uboot.git] / common / cmd_scsi.c
index f3574650ce831ad0d90f1288058b30db8a7f19ec..d15b567dbb2411225c99b77eef0108f6a2e638b1 100644 (file)
@@ -46,7 +46,7 @@
 #define SCSI_VEND_ID 0x10b9
 #define SCSI_DEV_ID  0x5288
 
-#else
+#elif !defined(CONFIG_SCSI_AHCI_PLAT)
 #error no scsi device defined
 #endif
 
@@ -59,7 +59,7 @@ static int scsi_max_devs; /* number of highest available scsi device */
 
 static int scsi_curr_dev; /* current device */
 
-static block_dev_desc_t scsi_dev_desc[CFG_SCSI_MAX_DEVICE];
+static block_dev_desc_t scsi_dev_desc[CONFIG_SYS_SCSI_MAX_DEVICE];
 
 /********************************************************************************
  *  forward declerations of some Setup Routines
@@ -88,7 +88,7 @@ void scsi_scan(int mode)
        if(mode==1) {
                printf("scanning bus for devices...\n");
        }
-       for(i=0;i<CFG_SCSI_MAX_DEVICE;i++) {
+       for(i=0;i<CONFIG_SYS_SCSI_MAX_DEVICE;i++) {
                scsi_dev_desc[i].target=0xff;
                scsi_dev_desc[i].lun=0xff;
                scsi_dev_desc[i].lba=0;
@@ -104,9 +104,9 @@ void scsi_scan(int mode)
                scsi_dev_desc[i].block_read=scsi_read;
        }
        scsi_max_devs=0;
-       for(i=0;i<CFG_SCSI_MAX_SCSI_ID;i++) {
+       for(i=0;i<CONFIG_SYS_SCSI_MAX_SCSI_ID;i++) {
                pccb->target=i;
-               for(lun=0;lun<CFG_SCSI_MAX_LUN;lun++) {
+               for(lun=0;lun<CONFIG_SYS_SCSI_MAX_LUN;lun++) {
                        pccb->lun=lun;
                        pccb->pdata=(unsigned char *)&tempbuff;
                        pccb->datalen=512;
@@ -174,7 +174,7 @@ removable:
                scsi_curr_dev = -1;
 }
 
-
+#ifdef CONFIG_PCI
 void scsi_init(void)
 {
        int busdevfunc;
@@ -192,17 +192,19 @@ void scsi_init(void)
        scsi_low_level_init(busdevfunc);
        scsi_scan(1);
 }
+#endif
 
+#ifdef CONFIG_PARTITIONS
 block_dev_desc_t * scsi_get_dev(int dev)
 {
-       return (dev < CFG_SCSI_MAX_DEVICE) ? &scsi_dev_desc[dev] : NULL;
+       return (dev < CONFIG_SYS_SCSI_MAX_DEVICE) ? &scsi_dev_desc[dev] : NULL;
 }
-
+#endif
 
 /******************************************************************************
  * scsi boot command intepreter. Derived from diskboot
  */
-int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        char *boot_device = NULL;
        char *ep;
@@ -210,14 +212,13 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        ulong addr, cnt;
        disk_partition_t info;
        image_header_t *hdr;
-       int rcode = 0;
 #if defined(CONFIG_FIT)
        const void *fit_hdr = NULL;
 #endif
 
        switch (argc) {
        case 1:
-               addr = CFG_LOAD_ADDR;
+               addr = CONFIG_SYS_LOAD_ADDR;
                boot_device = getenv ("bootdevice");
                break;
        case 2:
@@ -229,8 +230,7 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                boot_device = argv[2];
                break;
        default:
-               printf ("Usage:\n%s\n", cmdtp->usage);
-               return 1;
+               return CMD_RET_USAGE;
        }
 
        if (!boot_device) {
@@ -327,27 +327,20 @@ int do_scsiboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 
        flush_cache (addr, (cnt+1)*info.blksz);
 
-       /* Check if we should attempt an auto-start */
-       if (((ep = getenv("autostart")) != NULL) && (strcmp(ep,"yes") == 0)) {
-               char *local_args[2];
-               extern int do_bootm (cmd_tbl_t *, int, int, char *[]);
-               local_args[0] = argv[0];
-               local_args[1] = NULL;
-               printf ("Automatic boot of image at addr 0x%08lX ...\n", addr);
-               rcode = do_bootm (cmdtp, 0, 1, local_args);
-       }
-        return rcode;
+       return bootm_maybe_autostart(cmdtp, argv[0]);
 }
 
 /*********************************************************************************
  * scsi command intepreter
  */
-int do_scsi (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+int do_scsi (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        switch (argc) {
-    case 0:
-    case 1:    printf ("Usage:\n%s\n", cmdtp->usage);  return 1;
-    case 2:
+       case 0:
+       case 1:
+               return CMD_RET_USAGE;
+
+       case 2:
                        if (strncmp(argv[1],"res",3) == 0) {
                                printf("\nReset SCSI\n");
                                scsi_bus_reset();
@@ -356,7 +349,7 @@ int do_scsi (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                        }
                        if (strncmp(argv[1],"inf",3) == 0) {
                                int i;
-                               for (i=0; i<CFG_SCSI_MAX_DEVICE; ++i) {
+                               for (i=0; i<CONFIG_SYS_SCSI_MAX_DEVICE; ++i) {
                                        if(scsi_dev_desc[i].type==DEV_TYPE_UNKNOWN)
                                                continue; /* list only known devices */
                                        printf ("SCSI dev. %d:  ", i);
@@ -365,7 +358,7 @@ int do_scsi (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                                return 0;
                        }
                        if (strncmp(argv[1],"dev",3) == 0) {
-                               if ((scsi_curr_dev < 0) || (scsi_curr_dev >= CFG_SCSI_MAX_DEVICE)) {
+                               if ((scsi_curr_dev < 0) || (scsi_curr_dev >= CONFIG_SYS_SCSI_MAX_DEVICE)) {
                                        printf("\nno SCSI devices available\n");
                                        return 1;
                                }
@@ -379,7 +372,7 @@ int do_scsi (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                        }
                        if (strncmp(argv[1],"part",4) == 0) {
                                int dev, ok;
-                               for (ok=0, dev=0; dev<CFG_SCSI_MAX_DEVICE; ++dev) {
+                               for (ok=0, dev=0; dev<CONFIG_SYS_SCSI_MAX_DEVICE; ++dev) {
                                        if (scsi_dev_desc[dev].type!=DEV_TYPE_UNKNOWN) {
                                                ok++;
                                                if (dev)
@@ -392,13 +385,12 @@ int do_scsi (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                                        printf("\nno SCSI devices available\n");
                                return 1;
                        }
-                       printf ("Usage:\n%s\n", cmdtp->usage);
-                       return 1;
+                       return CMD_RET_USAGE;
        case 3:
                        if (strncmp(argv[1],"dev",3) == 0) {
                                int dev = (int)simple_strtoul(argv[2], NULL, 10);
                                printf ("\nSCSI device %d: ", dev);
-                               if (dev >= CFG_SCSI_MAX_DEVICE) {
+                               if (dev >= CONFIG_SYS_SCSI_MAX_DEVICE) {
                                        printf("unknown device\n");
                                        return 1;
                                }
@@ -421,8 +413,7 @@ int do_scsi (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                                }
                                return 1;
                        }
-                       printf ("Usage:\n%s\n", cmdtp->usage);
-                       return 1;
+                       return CMD_RET_USAGE;
     default:
                        /* at least 4 args */
                        if (strcmp(argv[1],"read") == 0) {
@@ -437,8 +428,7 @@ int do_scsi (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                                return 0;
                        }
        } /* switch */
-       printf ("Usage:\n%s\n", cmdtp->usage);
-       return 1;
+       return CMD_RET_USAGE;
 }
 
 /****************************************************************************************
@@ -616,18 +606,18 @@ void scsi_setup_inquiry(ccb * pccb)
 
 U_BOOT_CMD(
        scsi, 5, 1, do_scsi,
-       "scsi    - SCSI sub-system\n",
+       "SCSI sub-system",
        "reset - reset SCSI controller\n"
        "scsi info  - show available SCSI devices\n"
        "scsi scan  - (re-)scan SCSI bus\n"
        "scsi device [dev] - show or set current device\n"
        "scsi part [dev] - print partition table of one or all SCSI devices\n"
        "scsi read addr blk# cnt - read `cnt' blocks starting at block `blk#'\n"
-       "     to memory address `addr'\n"
+       "     to memory address `addr'"
 );
 
 U_BOOT_CMD(
        scsiboot, 3, 1, do_scsiboot,
-       "scsiboot- boot from SCSI device\n",
-       "loadAddr dev:part\n"
+       "boot from SCSI device",
+       "loadAddr dev:part"
 );