diff options
| -rw-r--r-- | arch/powerpc/include/asm/config.h | 3 | ||||
| -rw-r--r-- | common/cmd_ide.c | 18 | ||||
| -rw-r--r-- | doc/README.PXA_CF | 8 | ||||
| -rw-r--r-- | include/configs/ap325rxa.h | 1 | ||||
| -rw-r--r-- | include/configs/ms7720se.h | 1 | ||||
| -rw-r--r-- | include/configs/r2dplus.h | 1 | ||||
| -rw-r--r-- | include/configs/r7780mp.h | 1 | 
7 files changed, 24 insertions, 9 deletions
| diff --git a/arch/powerpc/include/asm/config.h b/arch/powerpc/include/asm/config.h index f70699de2..d0986570e 100644 --- a/arch/powerpc/include/asm/config.h +++ b/arch/powerpc/include/asm/config.h @@ -95,4 +95,7 @@  #define CONFIG_FSL_LBC  #endif +/* All PPC boards must swap IDE bytes */ +#define CONFIG_IDE_SWAP_IO +  #endif /* _ASM_CONFIG_H_ */ diff --git a/common/cmd_ide.c b/common/cmd_ide.c index c0fb88dbc..d423e53fe 100644 --- a/common/cmd_ide.c +++ b/common/cmd_ide.c @@ -847,7 +847,7 @@ input_swap_data(int dev, ulong *sect_buf, int words)  #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)  { @@ -891,15 +891,15 @@ output_data(int dev, ulong *sect_buf, int words)  	}  #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);  } -#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)  { @@ -949,14 +949,14 @@ input_data(int dev, ulong *sect_buf, int words)  	}  #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);  } -#endif	/* __PPC__ */ +#endif	/* CONFIG_IDE_SWAP_IO */  /* -------------------------------------------------------------------------   */ @@ -1573,7 +1573,7 @@ int ide_device_present(int dev)   * 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 @@ -1640,7 +1640,7 @@ input_data_shorts(int dev, ushort *sect_buf, int shorts)  #endif  } -#else	/* ! __PPC__ */ +#else	/* ! CONFIG_IDE_SWAP_IO */  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);  } -#endif	/* __PPC__ */ +#endif	/* CONFIG_IDE_SWAP_IO */  /*   * Wait until (Status & mask) == res, or timeout (in ms) diff --git a/doc/README.PXA_CF b/doc/README.PXA_CF index 6a0f236d3..1d76b32dd 100644 --- a/doc/README.PXA_CF +++ b/doc/README.PXA_CF @@ -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. +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 diff --git a/include/configs/ap325rxa.h b/include/configs/ap325rxa.h index 70dd47ecb..80a579749 100644 --- a/include/configs/ap325rxa.h +++ b/include/configs/ap325rxa.h @@ -138,6 +138,7 @@  #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 diff --git a/include/configs/ms7720se.h b/include/configs/ms7720se.h index ba0a3f804..0ea3527e3 100644 --- a/include/configs/ms7720se.h +++ b/include/configs/ms7720se.h @@ -122,5 +122,6 @@  #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 */ diff --git a/include/configs/r2dplus.h b/include/configs/r2dplus.h index 8931b974a..955f3ff57 100644 --- a/include/configs/r2dplus.h +++ b/include/configs/r2dplus.h @@ -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_IDE_SWAP_IO  /*   * SuperH PCI Bridge Configration diff --git a/include/configs/r7780mp.h b/include/configs/r7780mp.h index 71c570eee..3afe93a67 100644 --- a/include/configs/r7780mp.h +++ b/include/configs/r7780mp.h @@ -171,6 +171,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_IDE_SWAP_IO  #endif /* CONFIG_CMD_IDE */  #endif /* __R7780RP_H */ |