]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
split PCS440EP specific code from cmd_ide.c
authorPavel Herrmann <morpheus.ibis@gmail.com>
Sun, 7 Oct 2012 05:56:13 +0000 (05:56 +0000)
committerTom Rini <trini@ti.com>
Wed, 17 Oct 2012 14:59:09 +0000 (07:59 -0700)
Move specific ide_input_data and friends to board-specific file.

Signed-off-by: Pavel Herrmann <morpheus.ibis@gmail.com>
board/pcs440ep/pcs440ep.c
common/cmd_ide.c

index 52da053a2fde0e531cc91360fb2e2539b6e969a5..f8345ddb46ad87b37bfac7e4d83758832c59bab6 100644 (file)
@@ -32,6 +32,7 @@
 #include <sha1.h>
 #include <asm/io.h>
 #include <net.h>
+#include <ata.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -713,3 +714,58 @@ void ide_set_reset (int idereset)
        udelay (10000);
 }
 #endif /* defined (CONFIG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
+
+
+/* this is motly the same as it should, causing a little code duplication */
+#if defined(CONFIG_CMD_IDE)
+#define EIEIO          __asm__ volatile ("eieio")
+
+void ide_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;
+
+       debug("in input swap data base for read is %lx\n",
+               (unsigned long) pbuf);
+
+       while (words--) {
+               *dbuf++ = *pbuf;
+               *dbuf++ = *pbuf;
+       }
+}
+
+void ide_output_data(int dev, const ulong *sect_buf, int words)
+{
+       ushort *dbuf;
+       volatile ushort *pbuf;
+
+       pbuf = (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
+       dbuf = (ushort *) sect_buf;
+       while (words--) {
+               EIEIO;
+               *pbuf = ld_le16(dbuf++);
+               EIEIO;
+               *pbuf = ld_le16(dbuf++);
+       }
+}
+
+void ide_input_data(int dev, ulong *sect_buf, int words)
+{
+       ushort *dbuf;
+       volatile ushort *pbuf;
+
+       pbuf = (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
+       dbuf = (ushort *) sect_buf;
+
+       debug("in input data base for read is %lx\n", (unsigned long) pbuf);
+
+       while (words--) {
+               EIEIO;
+               *dbuf++ = ld_le16(pbuf);
+               EIEIO;
+               *dbuf++ = ld_le16(pbuf);
+       }
+}
+
+#endif
index 5b46e3ca5edc2b1ee6b8ca38e7b6c2b30f02d301..1c6ad32db150488c98776e05df684026f06c5f7e 100644 (file)
@@ -522,9 +522,6 @@ void __ide_input_swap_data(int dev, ulong *sect_buf, int words)
 #ifdef __MIPS__
                *dbuf++ = swab16p((u16 *) pbuf);
                *dbuf++ = swab16p((u16 *) pbuf);
-#elif defined(CONFIG_PCS440EP)
-               *dbuf++ = *pbuf;
-               *dbuf++ = *pbuf;
 #else
                *dbuf++ = ld_le16(pbuf);
                *dbuf++ = ld_le16(pbuf);
@@ -543,18 +540,10 @@ void __ide_output_data(int dev, const ulong *sect_buf, int words)
        pbuf = (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
        dbuf = (ushort *) sect_buf;
        while (words--) {
-#if defined(CONFIG_PCS440EP)
-               /* not tested, because CF was write protected */
-               EIEIO;
-               *pbuf = ld_le16(dbuf++);
-               EIEIO;
-               *pbuf = ld_le16(dbuf++);
-#else
                EIEIO;
                *pbuf = *dbuf++;
                EIEIO;
                *pbuf = *dbuf++;
-#endif
        }
 }
 #else  /* ! CONFIG_IDE_SWAP_IO */
@@ -580,17 +569,10 @@ void __ide_input_data(int dev, ulong *sect_buf, int words)
        debug("in input data base for read is %lx\n", (unsigned long) pbuf);
 
        while (words--) {
-#if defined(CONFIG_PCS440EP)
-               EIEIO;
-               *dbuf++ = ld_le16(pbuf);
-               EIEIO;
-               *dbuf++ = ld_le16(pbuf);
-#else
                EIEIO;
                *dbuf++ = *pbuf;
                EIEIO;
                *dbuf++ = *pbuf;
-#endif
        }
 }
 #else  /* ! CONFIG_IDE_SWAP_IO */