diff --git a/post/drivers/i2c.c b/post/drivers/i2c.c
new file mode 100644
index 0000000..1b2e644
--- /dev/null
+++ b/post/drivers/i2c.c
@@ -0,0 +1,94 @@
+/*
+ * (C) Copyright 2002
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * 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
+ */
+
+#include <common.h>
+
+#ifdef CONFIG_POST
+
+/*
+ * I2C test
+ *
+ * For verifying the I2C bus, a full I2C bus scanning is performed.
+ *
+ * #ifdef I2C_ADDR_LIST
+ *   The test is considered as passed if all the devices and
+ *   only the devices in the list are found.
+ * #else [ ! I2C_ADDR_LIST ]
+ *   The test is considered as passed if any I2C device is found.
+ * #endif
+ */
+
+#include <post.h>
+#include <i2c.h>
+
+#if CONFIG_POST & CFG_POST_I2C
+
+int i2c_post_test (int flags)
+{
+	unsigned int i;
+	unsigned int good = 0;
+#ifdef I2C_ADDR_LIST
+	unsigned int bad  = 0;
+	int j;
+	unsigned char i2c_addr_list[] = I2C_ADDR_LIST;
+	unsigned char i2c_miss_list[] = I2C_ADDR_LIST;
+#endif
+
+	for (i = 0; i < 128; i++) {
+		if (i2c_probe (i) == 0) {
+#ifndef	I2C_ADDR_LIST
+			good++;
+#else	/* I2C_ADDR_LIST */
+			for (j=0; j<sizeof(i2c_addr_list); ++j) {
+				if (i == i2c_addr_list[j]) {
+					good++;
+					i2c_miss_list[j] = 0xFF;
+					break;
+				}
+			}
+			if (j == sizeof(i2c_addr_list)) {
+				bad++;
+				post_log ("I2C: addr %02X not expected\n",
+						i);
+			}
+#endif	/* I2C_ADDR_LIST */
+		}
+	}
+
+#ifndef	I2C_ADDR_LIST
+	return good > 0 ? 0 : -1;
+#else	/* I2C_ADDR_LIST */
+	if (good != sizeof(i2c_addr_list)) {
+		for (j=0; j<sizeof(i2c_miss_list); ++j) {
+			if (i2c_miss_list[j] != 0xFF) {
+				post_log ("I2C: addr %02X did not respond\n",
+						i2c_miss_list[j]);
+			}
+		}
+	}
+	return ((good == sizeof(i2c_addr_list)) && (bad == 0)) ? 0 : -1;
+#endif
+}
+
+#endif /* CONFIG_POST & CFG_POST_I2C */
+#endif /* CONFIG_POST */
