i2c: mxc: add fuse check
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@nxp.com>
This commit is contained in:
parent
3c42c0f673
commit
7d1ee741d1
@ -19,6 +19,7 @@
|
||||
#include <dm/device_compat.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>
|
||||
@ -747,6 +748,14 @@ void bus_i2c_init(int index, int speed, int unused,
|
||||
return;
|
||||
}
|
||||
|
||||
if (CONFIG_IS_ENABLED(IMX_MODULE_FUSE)) {
|
||||
if (i2c_fused((ulong)mxc_i2c_buses[index].base)) {
|
||||
printf("SoC fuse indicates I2C@0x%lx is unavailable.\n",
|
||||
(ulong)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
|
||||
@ -892,6 +901,14 @@ static int mxc_i2c_probe(struct udevice *bus)
|
||||
if (addr == FDT_ADDR_T_NONE)
|
||||
return -EINVAL;
|
||||
|
||||
if (CONFIG_IS_ENABLED(IMX_MODULE_FUSE)) {
|
||||
if (i2c_fused((ulong)addr)) {
|
||||
printf("SoC fuse indicates I2C@0x%lx is unavailable.\n",
|
||||
(ulong)addr);
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
|
||||
i2c_bus->base = addr;
|
||||
i2c_bus->index = bus->seq;
|
||||
i2c_bus->bus = bus;
|
||||
|
Loading…
Reference in New Issue
Block a user