]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/cmd_ide.c
* Cleanup, minor fixes
[karo-tx-uboot.git] / common / cmd_ide.c
index 3bed194c7ef0a5c4bf1fa55097a45af445c6eca3..50ada33e869d8ae02abc90d0f3dc804556153906 100644 (file)
@@ -139,7 +139,7 @@ static  block_dev_desc_t ide_dev_desc[CFG_IDE_MAXDEVICE];
 /* ------------------------------------------------------------------------- */
 
 #ifdef CONFIG_IDE_LED
-#if !defined(CONFIG_KUP4K) && !defined(CONFIG_HMI10)
+#if !defined(CONFIG_KUP4K) &&  !defined(CONFIG_KUP4X) &&!defined(CONFIG_BMS2003)
 static void  ide_led   (uchar led, uchar status);
 #else
 extern void  ide_led   (uchar led, uchar status);
@@ -782,15 +782,17 @@ set_pcmcia_timing (int pmode)
 
 /* ------------------------------------------------------------------------- */
 
-#ifdef __PPC__
+#if defined(__PPC__) || defined(CONFIG_PXA_PCMCIA)
 static void __inline__
 ide_outb(int dev, int port, unsigned char val)
 {
-       PRINTF ("ide_outb (dev= %d, port= %d, val= 0x%02x) : @ 0x%08lx\n",
+       PRINTF ("ide_outb (dev= %d, port= 0x%x, val= 0x%02x) : @ 0x%08lx\n",
                dev, port, val, (ATA_CURR_BASE(dev)+port));
 
        /* Ensure I/O operations complete */
+#ifdef __PPC__
        __asm__ volatile("eieio");
+#endif
        *((uchar *)(ATA_CURR_BASE(dev)+port)) = val;
 }
 #else  /* ! __PPC__ */
@@ -802,15 +804,17 @@ ide_outb(int dev, int port, unsigned char val)
 #endif /* __PPC__ */
 
 
-#ifdef __PPC__
+#if defined(__PPC__) || defined(CONFIG_PXA_PCMCIA)
 static unsigned char __inline__
 ide_inb(int dev, int port)
 {
        uchar val;
        /* Ensure I/O operations complete */
+#ifdef __PPC__
        __asm__ volatile("eieio");
+#endif
        val = *((uchar *)(ATA_CURR_BASE(dev)+port));
-       PRINTF ("ide_inb (dev= %d, port= %d) : @ 0x%08lx -> 0x%02x\n",
+       PRINTF ("ide_inb (dev= %d, port= 0x%x) : @ 0x%08lx -> 0x%02x\n",
                dev, port, (ATA_CURR_BASE(dev)+port), val);
        return (val);
 }
@@ -856,6 +860,8 @@ input_swap_data(int dev, ulong *sect_buf, int words)
        volatile ushort *pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
        ushort  *dbuf = (ushort *)sect_buf;
 
+       PRINTF("in input swap data base for read is %lx\n", (unsigned long) pbuf);
+
        while (words--) {
                *dbuf++ = ld_le16(pbuf);
                *dbuf++ = ld_le16(pbuf);
@@ -878,7 +884,7 @@ input_swap_data(int dev, ulong *sect_buf, int words)
 #endif /* __LITTLE_ENDIAN || CONFIG_AU1X00 */
 
 
-#ifdef __PPC__
+#if defined(__PPC__) || defined(CONFIG_PXA_PCMCIA)
 static void
 output_data(int dev, ulong *sect_buf, int words)
 {
@@ -889,9 +895,13 @@ output_data(int dev, ulong *sect_buf, int words)
        pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
        dbuf = (ushort *)sect_buf;
        while (words--) {
+#ifdef __PPC__
                __asm__ volatile ("eieio");
+#endif
                *pbuf = *dbuf++;
+#ifdef __PPC__
                __asm__ volatile ("eieio");
+#endif
                *pbuf = *dbuf++;
        }
 #else  /* CONFIG_HMI10 */
@@ -922,7 +932,7 @@ output_data(int dev, ulong *sect_buf, int words)
 }
 #endif /* __PPC__ */
 
-#ifdef __PPC__
+#if defined(__PPC__) || defined(CONFIG_PXA_PCMCIA)
 static void
 input_data(int dev, ulong *sect_buf, int words)
 {
@@ -932,10 +942,17 @@ input_data(int dev, ulong *sect_buf, int words)
 
        pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
        dbuf = (ushort *)sect_buf;
+
+       PRINTF("in input data base for read is %lx\n", (unsigned long) pbuf);
+
        while (words--) {
+#ifdef __PPC__
                __asm__ volatile ("eieio");
+#endif
                *dbuf++ = *pbuf;
+#ifdef __PPC__
                __asm__ volatile ("eieio");
+#endif
                *dbuf++ = *pbuf;
        }
 #else  /* CONFIG_HMI10 */
@@ -1169,13 +1186,12 @@ static void ide_ident (block_dev_desc_t *dev_desc)
 
 #ifdef CONFIG_LBA48
        if (iop->command_set_2 & 0x0400) { /* LBA 48 support */
-               dev_desc->lba48support = 1;
-               dev_desc->lba48 = (unsigned long long)iop->lba48_capacity[0] |
+               dev_desc->lba48 = 1;
+               dev_desc->lba = (unsigned long long)iop->lba48_capacity[0] |
                                                  ((unsigned long long)iop->lba48_capacity[1] << 16) |
                                                  ((unsigned long long)iop->lba48_capacity[2] << 32) |
                                                  ((unsigned long long)iop->lba48_capacity[3] << 48);
        } else {
-               dev_desc->lba48support = 0;
                dev_desc->lba48 = 0;
        }
 #endif /* CONFIG_LBA48 */
@@ -1417,7 +1433,7 @@ static void ident_cpy (unsigned char *dst, unsigned char *src, unsigned int len)
        unsigned char *end, *last;
 
        last = dst;
-       end  = src + len;
+       end  = src + len - 1;
 
        /* reserve space for '\0' */
        if (len < 2)
@@ -1537,7 +1553,11 @@ static void ide_reset (void)
 
 /* ------------------------------------------------------------------------- */
 
-#if defined(CONFIG_IDE_LED) && !defined(CONFIG_AMIGAONEG3SE) && !defined(CONFIG_KUP4K) && !defined(CONFIG_HMI10)
+#if defined(CONFIG_IDE_LED) && \
+   !defined(CONFIG_AMIGAONEG3SE) && \
+   !defined(CONFIG_KUP4K) && \
+   !defined(CONFIG_KUP4X) && \
+   !defined(CONFIG_HMI10)
 
 static uchar   led_buffer = 0;         /* Buffer for current LED status        */
 
@@ -1572,7 +1592,7 @@ static void ide_led (uchar led, uchar status)
 #define AT_PRINTF(fmt,args...)
 #endif
 
-#ifdef __PPC__
+#if defined(__PPC__) || defined(CONFIG_PXA_PCMCIA)
 /* since ATAPI may use commands with not 4 bytes alligned length
  * we have our own transfer functions, 2 bytes alligned */
 static void
@@ -1584,8 +1604,13 @@ output_data_shorts(int dev, ushort *sect_buf, int shorts)
 
        pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
        dbuf = (ushort *)sect_buf;
+
+       PRINTF("in output data shorts base for read is %lx\n", (unsigned long) pbuf);
+
        while (shorts--) {
+#ifdef __PPC__
                __asm__ volatile ("eieio");
+#endif
                *pbuf = *dbuf++;
        }
 #else  /* CONFIG_HMI10 */
@@ -1613,8 +1638,13 @@ input_data_shorts(int dev, ushort *sect_buf, int shorts)
 
        pbuf = (ushort *)(ATA_CURR_BASE(dev)+ATA_DATA_REG);
        dbuf = (ushort *)sect_buf;
+
+       PRINTF("in input data shorts base for read is %lx\n", (unsigned long) pbuf);
+
        while (shorts--) {
+#ifdef __PPC__
                __asm__ volatile ("eieio");
+#endif
                *dbuf++ = *pbuf;
        }
 #else  /* CONFIG_HMI10 */