summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorHeiko Schocher <hs@pollux.denx.de>2007-08-28 17:39:14 +0200
committerHeiko Schocher <hs@pollux.denx.de>2007-08-28 17:39:14 +0200
commitf98984cb194bb34dbe1db9429d3b51133af30d07 (patch)
treefb9ea2be94607a89a36ce0e1a02279bb98aa20f1 /board
parent3e66c078003607a7d1d214c15a5f262bc1b4032f (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')
-rw-r--r--board/pcs440ep/pcs440ep.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/board/pcs440ep/pcs440ep.c b/board/pcs440ep/pcs440ep.c
index e247fee0c1..90e99d3dca 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)
{