summaryrefslogtreecommitdiff
path: root/drivers/i2c/mxc_i2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/i2c/mxc_i2c.c')
-rw-r--r--drivers/i2c/mxc_i2c.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c
index eb789f5..f1cff75 100644
--- a/drivers/i2c/mxc_i2c.c
+++ b/drivers/i2c/mxc_i2c.c
@@ -4,6 +4,8 @@
* (c) 2007 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
* (c) 2011 Marek Vasut <marek.vasut@gmail.com>
*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
* Based on i2c-imx.c from linux kernel:
* Copyright (C) 2005 Torsten Koschorrek <koschorrek at synertronixx.de>
* Copyright (C) 2005 Matthias Blaschke <blaschke at synertronixx.de>
@@ -25,6 +27,7 @@
#include <dm.h>
#include <dm/pinctrl.h>
#include <fdtdec.h>
+#include <asm/arch/sys_proto.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -647,6 +650,14 @@ void bus_i2c_init(int index, int speed, int unused,
return;
}
+#ifdef CONFIG_MX6
+ if (mx6_i2c_fused((u32)mxc_i2c_buses[index].base)) {
+ printf("I2C@0x%x is fused, disable it\n",
+ (u32)mxc_i2c_buses[index].base);
+ return;
+ }
+#endif
+
/*
* Warning: Be careful to allow the assignment to a static
* variable here. This function could be called while U-Boot is
@@ -760,6 +771,13 @@ static int mxc_i2c_probe(struct udevice *bus)
if (addr == FDT_ADDR_T_NONE)
return -ENODEV;
+#ifdef CONFIG_MX6
+ if (mx6_i2c_fused(addr)) {
+ printf("I2C@0x%lx is fused, disable it\n", addr);
+ return -ENODEV;
+ }
+#endif
+
i2c_bus->base = addr;
i2c_bus->index = bus->seq;
i2c_bus->bus = bus;