diff options
author | Heiko Schocher <hs@pollux.denx.de> | 2007-08-28 17:39:14 +0200 |
---|---|---|
committer | Heiko Schocher <hs@pollux.denx.de> | 2007-08-28 17:39:14 +0200 |
commit | f98984cb194bb34dbe1db9429d3b51133af30d07 (patch) | |
tree | fb9ea2be94607a89a36ce0e1a02279bb98aa20f1 /board/pcs440ep | |
parent | 3e66c078003607a7d1d214c15a5f262bc1b4032f (diff) |
IDE: - make ide_inb () and ide_outb () "weak", so boards can
define there own I/O functions.
(Needed for the pcs440ep board).
- The default I/O Functions are again 8 Bit accesses.
- Added CONFIG_CMD_IDE for the pcs440ep Board.
Signed-off-by: Heiko Schocher <hs@denx.de>
Diffstat (limited to 'board/pcs440ep')
-rw-r--r-- | board/pcs440ep/pcs440ep.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/board/pcs440ep/pcs440ep.c b/board/pcs440ep/pcs440ep.c index e247fee0c17..90e99d3dca8 100644 --- a/board/pcs440ep/pcs440ep.c +++ b/board/pcs440ep/pcs440ep.c @@ -30,6 +30,7 @@ #include <spd_sdram.h> #include <status_led.h> #include <sha1.h> +#include <asm/io.h> DECLARE_GLOBAL_DATA_PTR; @@ -867,6 +868,29 @@ U_BOOT_CMD( ); #endif +#if defined (CONFIG_CMD_IDE) +/* These addresses need to be shifted one place to the left + * ( bus per_addr 20 -30 is connectsd on CF bus A10-A0) + * These values are shifted + */ +extern ulong *ide_bus_offset; +void inline ide_outb(int dev, int port, unsigned char val) +{ + debug ("ide_outb (dev= %d, port= 0x%x, val= 0x%02x) : @ 0x%08lx\n", + dev, port, val, (ATA_CURR_BASE(dev)+port)); + + out_be16((u16 *)(ATA_CURR_BASE(dev)+(port << 1)), val); +} +unsigned char inline ide_inb(int dev, int port) +{ + uchar val; + val = in_be16((u16 *)(ATA_CURR_BASE(dev)+(port << 1))); + debug ("ide_inb (dev= %d, port= 0x%x) : @ 0x%08lx -> 0x%02x\n", + dev, port, (ATA_CURR_BASE(dev)+port), val); + return (val); +} +#endif + #ifdef CONFIG_IDE_PREINIT int ide_preinit (void) { |