diff --git a/include/asm-nios/io.h b/include/asm-nios/io.h
index 3cdb703..07499d9 100644
--- a/include/asm-nios/io.h
+++ b/include/asm-nios/io.h
@@ -1 +1,100 @@
-/*FIXME: Implement this! */
+/*
+ * (C) Copyright 2003, Psyent Corporation <www.psyent.com>
+ * Scott McNutt <smcnutt@psyent.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#ifndef __ASM_NIOS_IO_H_
+#define __ASM_NIOS_IO_H_
+
+#define readb(addr)\
+	({unsigned char val;\
+	 asm volatile(  "	pfxio	0		\n"\
+		 	"	ld	%0, [%1]	\n"\
+			"	ext8d	%0, %1		\n"\
+			:"=r"(val) : "r" (addr)); val;})
+
+#define readw(addr)\
+	({unsigned short val;\
+	 asm volatile(  "	pfxio	0		\n"\
+		 	"	ld	%0, [%1]	\n"\
+			"	ext16d	%0, %1		\n"\
+			:"=r"(val) : "r" (addr)); val;})
+
+#define readl(addr)\
+	({unsigned long val;\
+	 asm volatile(  "	pfxio	0		\n"\
+		 	"	ld	%0, [%1]	\n"\
+			:"=r"(val) : "r" (addr)); val;})
+
+#define writeb(addr,val)\
+	asm volatile (	"	fill8	%%r0, %1	\n"\
+			"	st8d	[%0], %%r0	\n"\
+			: : "r" (addr), "r" (val) : "r0")
+
+#define writew(addr,val)\
+	asm volatile (	"	fill16	%%r0, %1	\n"\
+			"	st16d	[%0], %%r0	\n"\
+			: : "r" (addr), "r" (val) : "r0")
+
+#define writel(addr,val)\
+	asm volatile (	"	st	[%0], %1	\n"\
+			: : "r" (addr), "r" (val))
+
+#define inb(addr)	readb(addr)
+#define inw(addr)	readw(addr)
+#define inl(addr)	readl(addr)
+#define outb(val,addr)	writeb(addr,val)
+#define outw(val,addr)	writew(addr,val)
+#define outl(val,addr)	writel(addr,val)
+
+static inline void insb (unsigned long port, void *dst, unsigned long count)
+{
+	unsigned char *p = dst;
+	while (count--) *p++ = inb (port);
+}
+static inline void insw (unsigned long port, void *dst, unsigned long count)
+{
+	unsigned short *p = dst;
+	while (count--) *p++ = inw (port);
+}
+static inline void insl (unsigned long port, void *dst, unsigned long count)
+{
+	unsigned long *p = dst;
+	while (count--) *p++ = inl (port);
+}
+
+static inline void outsb (unsigned long port, const void *src, unsigned long count)
+{
+	const unsigned char *p = src;
+	while (count--) outb (*p++, port);
+}
+
+static inline void outsw (unsigned long port, const void *src, unsigned long count)
+{
+	const unsigned short *p = src;
+	while (count--) outw (*p++, port);
+}
+static inline void outsl (unsigned long port, const void *src, unsigned long count)
+{
+	const unsigned long *p = src;
+	while (count--) outl (*p++, port);
+}
+
+#endif /* __ASM_NIOS_IO_H_ */
diff --git a/include/configs/DK1C20.h b/include/configs/DK1C20.h
index b758e94..14a09b6 100644
--- a/include/configs/DK1C20.h
+++ b/include/configs/DK1C20.h
@@ -3,6 +3,9 @@
  * Scott McNutt <smcnutt@psyent.com>
  * Stephan Linz <linz@li-pro.net>
  *
+ * CompactFlash/IDE:
+ * (C) Copyright 2004, Shlomo Kut <skut@vyyo.com>
+ *
  * See file CREDITS for list of people who contributed to this
  * project.
  *
@@ -457,11 +460,9 @@
 				 CFG_CMD_DTT	| \
 				 CFG_CMD_EEPROM | \
 				 CFG_CMD_ELF    | \
-				 CFG_CMD_FAT	| \
 				 CFG_CMD_FDC	| \
 				 CFG_CMD_FDOS	| \
 				 CFG_CMD_HWFLOW	| \
-				 CFG_CMD_IDE	| \
 				 CFG_CMD_I2C	| \
 				 CFG_CMD_JFFS2	| \
 				 CFG_CMD_KGDB	| \
@@ -482,6 +483,29 @@
 #include <cmd_confdefs.h>
 
 /*------------------------------------------------------------------------
+ * COMPACT FLASH
+ *----------------------------------------------------------------------*/
+#if (CONFIG_COMMANDS & CFG_CMD_IDE)
+#define CONFIG_IDE_PREINIT			/* Implement id_preinit	*/
+#define CFG_IDE_MAXBUS		1		/* 1 IDE bus		*/
+#define CFG_IDE_MAXDEVICE	1		/* 1 drive per IDE bus	*/
+
+#define CFG_ATA_BASE_ADDR	0x00920a00	/* IDE/ATA base addr	*/
+#define CFG_ATA_IDE0_OFFSET	0x0000		/* IDE0 offset		*/
+#define CFG_ATA_DATA_OFFSET	0x0040		/* Data IO offset	*/
+#define CFG_ATA_REG_OFFSET	0x0040		/* Register offset	*/
+#define CFG_ATA_ALT_OFFSET	0x0100		/* Alternate reg offset	*/
+#define CFG_ATA_STRIDE          4		/* Width betwix addrs	*/
+#define CONFIG_DOS_PARTITION
+
+/* Board-specific cf regs */
+#define CFG_CF_PRESENT		0x009209b0	/* CF Present PIO base	*/
+#define CFG_CF_POWER		0x009209c0	/* CF Power FET PIO base*/
+#define CFG_CF_ATASEL		0x009209d0	/* CF ATASEL PIO base	*/
+
+#endif /* CONFIG_COMMANDS & CFG_CMD_IDE */
+
+/*------------------------------------------------------------------------
  * KGDB
  *----------------------------------------------------------------------*/
 #if (CONFIG_COMMANDS & CFG_CMD_KGDB)
