]> git.sur5r.net Git - u-boot/commitdiff
ide: add configuration
authorAlbert Aribaud <[albert.aribaud@free.fr]>
Sat, 7 Aug 2010 23:47:05 +0000 (05:17 +0530)
committerPrafulla Wadaskar <prafulla@marvell.com>
Sat, 7 Aug 2010 23:47:05 +0000 (05:17 +0530)
CONFIG_IDE_SWAP_IO

This configuration option replaces a complex conditional
in cmd_ide.c with an explicit define to be added to SoC or
board configs.

Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
arch/powerpc/include/asm/config.h
common/cmd_ide.c
doc/README.PXA_CF
include/configs/ap325rxa.h
include/configs/ms7720se.h
include/configs/r2dplus.h
include/configs/r7780mp.h

index f70699de2796b1ac446e94d2085d8a4f8771d8ee..d0986570e29111836d0654e2cd3d1e10bb8b5681 100644 (file)
@@ -95,4 +95,7 @@
 #define CONFIG_FSL_LBC
 #endif
 
 #define CONFIG_FSL_LBC
 #endif
 
+/* All PPC boards must swap IDE bytes */
+#define CONFIG_IDE_SWAP_IO
+
 #endif /* _ASM_CONFIG_H_ */
 #endif /* _ASM_CONFIG_H_ */
index c0fb88dbc79894cc225f53262161f479a0636b7e..d423e53fe3652100e8ba4b683553627b7a5b0a86 100644 (file)
@@ -847,7 +847,7 @@ input_swap_data(int dev, ulong *sect_buf, int words)
 #endif /* __LITTLE_ENDIAN || CONFIG_AU1X00 */
 
 
 #endif /* __LITTLE_ENDIAN || CONFIG_AU1X00 */
 
 
-#if defined(__PPC__) || defined(CONFIG_PXA_PCMCIA) || defined(CONFIG_SH)
+#if defined(CONFIG_IDE_SWAP_IO)
 static void
 output_data(int dev, ulong *sect_buf, int words)
 {
 static void
 output_data(int dev, ulong *sect_buf, int words)
 {
@@ -891,15 +891,15 @@ output_data(int dev, ulong *sect_buf, int words)
        }
 #endif
 }
        }
 #endif
 }
-#else  /* ! __PPC__ */
+#else  /* ! CONFIG_IDE_SWAP_IO */
 static void
 output_data(int dev, ulong *sect_buf, int words)
 {
        outsw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words<<1);
 }
 static void
 output_data(int dev, ulong *sect_buf, int words)
 {
        outsw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words<<1);
 }
-#endif /* __PPC__ */
+#endif /* CONFIG_IDE_SWAP_IO */
 
 
-#if defined(__PPC__) || defined(CONFIG_PXA_PCMCIA) || defined(CONFIG_SH)
+#if defined(CONFIG_IDE_SWAP_IO)
 static void
 input_data(int dev, ulong *sect_buf, int words)
 {
 static void
 input_data(int dev, ulong *sect_buf, int words)
 {
@@ -949,14 +949,14 @@ input_data(int dev, ulong *sect_buf, int words)
        }
 #endif
 }
        }
 #endif
 }
-#else  /* ! __PPC__ */
+#else  /* ! CONFIG_IDE_SWAP_IO */
 static void
 input_data(int dev, ulong *sect_buf, int words)
 {
        insw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words << 1);
 }
 
 static void
 input_data(int dev, ulong *sect_buf, int words)
 {
        insw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words << 1);
 }
 
-#endif /* __PPC__ */
+#endif /* CONFIG_IDE_SWAP_IO */
 
 /* -------------------------------------------------------------------------
  */
 
 /* -------------------------------------------------------------------------
  */
@@ -1573,7 +1573,7 @@ int ide_device_present(int dev)
  * ATAPI Support
  */
 
  * ATAPI Support
  */
 
-#if defined(__PPC__) || defined(CONFIG_PXA_PCMCIA)
+#if defined(CONFIG_IDE_SWAP_IO)
 /* since ATAPI may use commands with not 4 bytes alligned length
  * we have our own transfer functions, 2 bytes alligned */
 static void
 /* since ATAPI may use commands with not 4 bytes alligned length
  * we have our own transfer functions, 2 bytes alligned */
 static void
@@ -1640,7 +1640,7 @@ input_data_shorts(int dev, ushort *sect_buf, int shorts)
 #endif
 }
 
 #endif
 }
 
-#else  /* ! __PPC__ */
+#else  /* ! CONFIG_IDE_SWAP_IO */
 static void
 output_data_shorts(int dev, ushort *sect_buf, int shorts)
 {
 static void
 output_data_shorts(int dev, ushort *sect_buf, int shorts)
 {
@@ -1653,7 +1653,7 @@ input_data_shorts(int dev, ushort *sect_buf, int shorts)
        insw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, shorts);
 }
 
        insw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, shorts);
 }
 
-#endif /* __PPC__ */
+#endif /* CONFIG_IDE_SWAP_IO */
 
 /*
  * Wait until (Status & mask) == res, or timeout (in ms)
 
 /*
  * Wait until (Status & mask) == res, or timeout (in ms)
index 6a0f236d3ca8e66555aaca60d46a37ceff508693..1d76b32dd7ad22a51c7473c25acea850ee23847c 100644 (file)
@@ -6,6 +6,14 @@ follow the connections of the standard lubbock. Anyway just the block
 marked memory configuration should be touched since the other parameters
 are imposed by the PXA architecture.
 
 marked memory configuration should be touched since the other parameters
 are imposed by the PXA architecture.
 
+EDIT 2010-07-01: in common/cmd_ide.c, having CONFIG_PXA_PCMCIA defined
+would cause looping on inw()/outw() rather than using insw()/outsw(),
+thus making sure IDE / ATA bytes are properly swapped. This behaviour
+is now controlled by CONFIG_IDE_SWAP_IO, therefore PXA boards with
+PCMCIA should #define CONFIG_IDE_SWAP_IO.
+
+#define CONFIG_IDE_SWAP_IO
+
 #define CONFIG_PXA_PCMCIA 1
 #define CONFIG_PXA_IDE 1
 
 #define CONFIG_PXA_PCMCIA 1
 #define CONFIG_PXA_IDE 1
 
index 70dd47ecb56b0886fd03b385fa9ff437fa54de13..80a5797493da1960605cf4d6f6a4e5d66dbce812 100644 (file)
 #define CONFIG_SYS_ATA_DATA_OFFSET     0x200   /* data reg offset */
 #define CONFIG_SYS_ATA_REG_OFFSET      0x200   /* reg offset */
 #define CONFIG_SYS_ATA_ALT_OFFSET      0x210   /* alternate register offset */
 #define CONFIG_SYS_ATA_DATA_OFFSET     0x200   /* data reg offset */
 #define CONFIG_SYS_ATA_REG_OFFSET      0x200   /* reg offset */
 #define CONFIG_SYS_ATA_ALT_OFFSET      0x210   /* alternate register offset */
+#define CONFIG_IDE_SWAP_IO
 
 /* if you use all NOR Flash , you change dip-switch. Please see Manual. */
 #define CONFIG_SYS_MAX_FLASH_BANKS     1
 
 /* if you use all NOR Flash , you change dip-switch. Please see Manual. */
 #define CONFIG_SYS_MAX_FLASH_BANKS     1
index ba0a3f8043dfd9a6bb037958a9ecda16d3e7e5dc..0ea3527e30b0821ca886bf9bd9d18d08ff2f06cb 100644 (file)
 #define CONFIG_SYS_ATA_DATA_OFFSET     0               /* data reg offset */
 #define CONFIG_SYS_ATA_REG_OFFSET      0               /* reg offset */
 #define CONFIG_SYS_ATA_ALT_OFFSET      0x200           /* alternate register offset */
 #define CONFIG_SYS_ATA_DATA_OFFSET     0               /* data reg offset */
 #define CONFIG_SYS_ATA_REG_OFFSET      0               /* reg offset */
 #define CONFIG_SYS_ATA_ALT_OFFSET      0x200           /* alternate register offset */
+#define CONFIG_IDE_SWAP_IO
 
 #endif /* __MS7720SE_H */
 
 #endif /* __MS7720SE_H */
index 8931b974aa24a8b36e310b50fe8acac334a0b9ea..955f3ff57fed8d46af1f9cdc74f6b343b9a7b482 100644 (file)
@@ -96,6 +96,7 @@
 #define CONFIG_SYS_ATA_DATA_OFFSET     0x1000  /* data reg offset */
 #define CONFIG_SYS_ATA_REG_OFFSET      0x1000  /* reg offset */
 #define CONFIG_SYS_ATA_ALT_OFFSET      0x800   /* alternate register offset */
 #define CONFIG_SYS_ATA_DATA_OFFSET     0x1000  /* data reg offset */
 #define CONFIG_SYS_ATA_REG_OFFSET      0x1000  /* reg offset */
 #define CONFIG_SYS_ATA_ALT_OFFSET      0x800   /* alternate register offset */
+#define CONFIG_IDE_SWAP_IO
 
 /*
  * SuperH PCI Bridge Configration
 
 /*
  * SuperH PCI Bridge Configration
index 71c570eee90772bff1274eacec5fb1d37b4800ed..3afe93a67163cd118f29928f972585933f02b4d9 100644 (file)
 #define CONFIG_SYS_ATA_DATA_OFFSET     0x1000          /* data reg offset */
 #define CONFIG_SYS_ATA_REG_OFFSET      0x1000          /* reg offset */
 #define CONFIG_SYS_ATA_ALT_OFFSET      0x800           /* alternate register offset */
 #define CONFIG_SYS_ATA_DATA_OFFSET     0x1000          /* data reg offset */
 #define CONFIG_SYS_ATA_REG_OFFSET      0x1000          /* reg offset */
 #define CONFIG_SYS_ATA_ALT_OFFSET      0x800           /* alternate register offset */
+#define CONFIG_IDE_SWAP_IO
 #endif /* CONFIG_CMD_IDE */
 
 #endif /* __R7780RP_H */
 #endif /* CONFIG_CMD_IDE */
 
 #endif /* __R7780RP_H */