]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/cmd_fdc.c
Add MACH_TYPE records for several AT91 boards.
[karo-tx-uboot.git] / common / cmd_fdc.c
index 3ee342fcfc06b838dd9e6b60fbd50b6a7848f627..7349412c77a92af60fa8700f9f48e5a012fda8d5 100644 (file)
 #endif
 
 
-#if (CONFIG_COMMANDS & CFG_CMD_DATE)
-#include <rtc.h>
-#endif
+/*#if defined(CONFIG_CMD_DATE) */
+/*#include <rtc.h> */
+/*#endif */
 
-#if ((CONFIG_COMMANDS & CFG_CMD_FDC) || (CONFIG_COMMANDS & CFG_CMD_FDOS))
+#if defined(CONFIG_CMD_FDC) || defined(CONFIG_CMD_FDOS)
 
 
 typedef struct {
@@ -211,7 +211,7 @@ int wait_for_fdc_int(void)
        return TRUE;
 }
 #endif
-   
+
 /* Supporting Functions */
 /* reads a Register of the FDC */
 unsigned char read_fdc_reg(unsigned int addr)
@@ -220,14 +220,14 @@ unsigned char read_fdc_reg(unsigned int addr)
                (volatile unsigned char *)(CFG_ISA_IO_BASE_ADDRESS +
                                           (addr * CFG_ISA_IO_STRIDE) +
                                           CFG_ISA_IO_OFFSET);
-        
+
        return val [0];
 }
 
 /* writes a Register of the FDC */
 void write_fdc_reg(unsigned int addr, unsigned char val)
 {
-        volatile unsigned char *tmp =
+       volatile unsigned char *tmp =
                (volatile unsigned char *)(CFG_ISA_IO_BASE_ADDRESS +
                                           (addr * CFG_ISA_IO_STRIDE) +
                                           CFG_ISA_IO_OFFSET);
@@ -642,7 +642,6 @@ int fdc_check_drive(FDC_COMMAND_STRUCT *pCMD, FD_GEO_STRUCT *pFG)
 }
 
 
-
 /**************************************************************************
 * int fdc_setup
 * setup the fdc according the datasheet
@@ -658,7 +657,7 @@ int fdc_setup(int drive, FDC_COMMAND_STRUCT *pCMD, FD_GEO_STRUCT *pFG)
 #endif
 
 #ifdef CFG_FDC_HW_INIT
-        fdc_hw_init ();
+       fdc_hw_init ();
 #endif
        /* first, we reset the FDC via the DOR */
        write_fdc_reg(FDC_DOR,0x00);
@@ -708,22 +707,22 @@ int fdc_setup(int drive, FDC_COMMAND_STRUCT *pCMD, FD_GEO_STRUCT *pFG)
 
        return TRUE;
 }
-#endif /* ((CONFIG_COMMANDS & CFG_CMD_FDC)||(CONFIG_COMMANDS & CFG_CMD_FDOS))*/
+#endif
 
-#if (CONFIG_COMMANDS & CFG_CMD_FDOS)
+#if defined(CONFIG_CMD_FDOS)
 
 /* Low level functions for the Floppy-DOS layer                              */
 
 /**************************************************************************
 * int fdc_fdos_init
-* initialize the FDC layer 
-* 
+* initialize the FDC layer
+*
 */
 int fdc_fdos_init (int drive)
 {
        FD_GEO_STRUCT *pFG = (FD_GEO_STRUCT *)floppy_type;
        FDC_COMMAND_STRUCT *pCMD = &cmd;
-    
+
        /* setup FDC and scan for drives  */
        if(fdc_setup(drive,pCMD,pFG)==FALSE) {
                printf("\n** Error in setup FDC **\n");
@@ -748,19 +747,19 @@ int fdc_fdos_init (int drive)
 
        /* read first block */
        pCMD->blnr=0;
-        return TRUE;
+       return TRUE;
 }
 /**************************************************************************
 * int fdc_fdos_seek
-* parameter is a block number 
+* parameter is a block number
 */
 int fdc_fdos_seek (int where)
 {
        FD_GEO_STRUCT *pFG = (FD_GEO_STRUCT *)floppy_type;
        FDC_COMMAND_STRUCT *pCMD = &cmd;
 
-        pCMD -> blnr = where ;
-        return (fdc_seek (pCMD, pFG));
+       pCMD -> blnr = where ;
+       return (fdc_seek (pCMD, pFG));
 }
 /**************************************************************************
 * int fdc_fdos_read
@@ -771,11 +770,11 @@ int fdc_fdos_read (void *buffer, int len)
        FD_GEO_STRUCT *pFG = (FD_GEO_STRUCT *)floppy_type;
        FDC_COMMAND_STRUCT *pCMD = &cmd;
 
-        return (fdc_read_data (buffer, len, pCMD, pFG));
+       return (fdc_read_data (buffer, len, pCMD, pFG));
 }
-#endif  /* (CONFIG_COMMANDS & CFG_CMD_FDOS)                                  */
+#endif
 
-#if (CONFIG_COMMANDS & CFG_CMD_FDC)
+#if defined(CONFIG_CMD_FDC)
 /****************************************************************************
  * main routine do_fdcboot
  */
@@ -783,7 +782,7 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
        FD_GEO_STRUCT *pFG = (FD_GEO_STRUCT *)floppy_type;
        FDC_COMMAND_STRUCT *pCMD = &cmd;
-       unsigned long addr,imsize;
+       unsigned long addr,imsize;
        image_header_t *hdr;  /* used for fdc boot */
        unsigned char boot_drive;
        int i,nrofblk;
@@ -793,7 +792,7 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
        switch (argc) {
        case 1:
                addr = CFG_LOAD_ADDR;
-               boot_drive=CFG_FDC_DRIVE_NUMBER; 
+               boot_drive=CFG_FDC_DRIVE_NUMBER;
                break;
        case 2:
                addr = simple_strtoul(argv[1], NULL, 16);
@@ -837,13 +836,13 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                return 1;
        }
        hdr = (image_header_t *)addr;
-       if (hdr->ih_magic  != IH_MAGIC) {
+       if (ntohl(hdr->ih_magic)  != IH_MAGIC) {
                printf ("Bad Magic Number\n");
                return 1;
        }
        print_image_hdr(hdr);
 
-       imsize= hdr->ih_size+sizeof(image_header_t);
+       imsize= ntohl(hdr->ih_size)+sizeof(image_header_t);
        nrofblk=imsize/512;
        if((imsize%512)>0)
                nrofblk++;
@@ -881,7 +880,17 @@ int do_fdcboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 }
 
 
+#endif
+
+
+/***************************************************/
 
-#endif /* CONFIG_COMMANDS & CFG_CMD_FDC */
 
+#if defined(CONFIG_CMD_FDC)
 
+U_BOOT_CMD(
+       fdcboot,        3,      1,      do_fdcboot,
+       "fdcboot - boot from floppy device\n",
+       "loadAddr drive\n"
+);
+#endif