ide: add configuration
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>
This commit is contained in:
parent
9efac4a1eb
commit
f2a37fcd9b
|
@ -95,4 +95,7 @@
|
||||||
#define CONFIG_FSL_LBC
|
#define CONFIG_FSL_LBC
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* All PPC boards must swap IDE bytes */
|
||||||
|
#define CONFIG_IDE_SWAP_IO
|
||||||
|
|
||||||
#endif /* _ASM_CONFIG_H_ */
|
#endif /* _ASM_CONFIG_H_ */
|
||||||
|
|
|
@ -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
|
static void
|
||||||
output_data(int dev, ulong *sect_buf, int words)
|
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
|
static void
|
||||||
output_data(int dev, ulong *sect_buf, int words)
|
output_data(int dev, ulong *sect_buf, int words)
|
||||||
{
|
{
|
||||||
outsw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words<<1);
|
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
|
static void
|
||||||
input_data(int dev, ulong *sect_buf, int words)
|
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
|
static void
|
||||||
input_data(int dev, ulong *sect_buf, int words)
|
input_data(int dev, ulong *sect_buf, int words)
|
||||||
{
|
{
|
||||||
insw(ATA_CURR_BASE(dev)+ATA_DATA_REG, sect_buf, words << 1);
|
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
|
/* since ATAPI may use commands with not 4 bytes alligned length
|
||||||
* we have our own transfer functions, 2 bytes alligned */
|
* we have our own transfer functions, 2 bytes alligned */
|
||||||
static void
|
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
|
static void
|
||||||
output_data_shorts(int dev, ushort *sect_buf, int shorts)
|
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)
|
||||||
|
|
|
@ -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
|
marked memory configuration should be touched since the other parameters
|
||||||
are imposed by the PXA architecture.
|
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_PCMCIA 1
|
||||||
#define CONFIG_PXA_IDE 1
|
#define CONFIG_PXA_IDE 1
|
||||||
|
|
||||||
|
|
|
@ -138,6 +138,7 @@
|
||||||
#define CONFIG_SYS_ATA_DATA_OFFSET 0x200 /* data reg offset */
|
#define CONFIG_SYS_ATA_DATA_OFFSET 0x200 /* data reg offset */
|
||||||
#define CONFIG_SYS_ATA_REG_OFFSET 0x200 /* 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_ALT_OFFSET 0x210 /* alternate register offset */
|
||||||
|
#define CONFIG_IDE_SWAP_IO
|
||||||
|
|
||||||
/* if you use all NOR Flash , you change dip-switch. Please see Manual. */
|
/* if you use all NOR Flash , you change dip-switch. Please see Manual. */
|
||||||
#define CONFIG_SYS_MAX_FLASH_BANKS 1
|
#define CONFIG_SYS_MAX_FLASH_BANKS 1
|
||||||
|
|
|
@ -122,5 +122,6 @@
|
||||||
#define CONFIG_SYS_ATA_DATA_OFFSET 0 /* data reg offset */
|
#define CONFIG_SYS_ATA_DATA_OFFSET 0 /* data reg offset */
|
||||||
#define CONFIG_SYS_ATA_REG_OFFSET 0 /* 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_ALT_OFFSET 0x200 /* alternate register offset */
|
||||||
|
#define CONFIG_IDE_SWAP_IO
|
||||||
|
|
||||||
#endif /* __MS7720SE_H */
|
#endif /* __MS7720SE_H */
|
||||||
|
|
|
@ -96,6 +96,7 @@
|
||||||
#define CONFIG_SYS_ATA_DATA_OFFSET 0x1000 /* data reg offset */
|
#define CONFIG_SYS_ATA_DATA_OFFSET 0x1000 /* data reg offset */
|
||||||
#define CONFIG_SYS_ATA_REG_OFFSET 0x1000 /* 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_ALT_OFFSET 0x800 /* alternate register offset */
|
||||||
|
#define CONFIG_IDE_SWAP_IO
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SuperH PCI Bridge Configration
|
* SuperH PCI Bridge Configration
|
||||||
|
|
|
@ -171,6 +171,7 @@
|
||||||
#define CONFIG_SYS_ATA_DATA_OFFSET 0x1000 /* data reg offset */
|
#define CONFIG_SYS_ATA_DATA_OFFSET 0x1000 /* data reg offset */
|
||||||
#define CONFIG_SYS_ATA_REG_OFFSET 0x1000 /* 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_ALT_OFFSET 0x800 /* alternate register offset */
|
||||||
|
#define CONFIG_IDE_SWAP_IO
|
||||||
#endif /* CONFIG_CMD_IDE */
|
#endif /* CONFIG_CMD_IDE */
|
||||||
|
|
||||||
#endif /* __R7780RP_H */
|
#endif /* __R7780RP_H */
|
||||||
|
|
Loading…
Reference in New Issue