[U-Boot] [PATCH V2 2/4] i2c: mxc: add fuse check
Peng Fan
peng.fan at nxp.com
Tue Jul 23 07:19:31 UTC 2019
Add fuse check for I2C. If the fuse indicates the module
will not work in the SoC, let's fail the initialization.
Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
V2:
Update commit and debug info
drivers/i2c/mxc_i2c.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c
index 23119cce65..c5c1190af1 100644
--- a/drivers/i2c/mxc_i2c.c
+++ b/drivers/i2c/mxc_i2c.c
@@ -18,6 +18,7 @@
#include <asm/arch/imx-regs.h>
#include <linux/errno.h>
#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/sys_proto.h>
#include <asm/io.h>
#include <i2c.h>
#include <watchdog.h>
@@ -740,6 +741,14 @@ void bus_i2c_init(int index, int speed, int unused,
return;
}
+ if (IS_ENABLED(CONFIG_IMX_MODULE_FUSE)) {
+ if (i2c_fused((u32)mxc_i2c_buses[index].base)) {
+ printf("SoC fuse indicates I2C at 0x%x is unavailable.\n",
+ (u32)mxc_i2c_buses[index].base);
+ return;
+ }
+ }
+
/*
* Warning: Be careful to allow the assignment to a static
* variable here. This function could be called while U-Boot is
@@ -885,6 +894,14 @@ static int mxc_i2c_probe(struct udevice *bus)
if (addr == FDT_ADDR_T_NONE)
return -EINVAL;
+ if (IS_ENABLED(CONFIG_IMX_MODULE_FUSE)) {
+ if (i2c_fused(addr)) {
+ printf("SoC fuse indicates I2C at 0x%lx is unavailable.\n",
+ addr);
+ return -ENODEV;
+ }
+ }
+
i2c_bus->base = addr;
i2c_bus->index = bus->seq;
i2c_bus->bus = bus;
--
2.16.4
More information about the U-Boot
mailing list