
Hello Peng,
Am 01.08.2019 um 10:45 schrieb Peng Fan:
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
V2: Fix build for aarch64
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..7a259547bd 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((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
@@ -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((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;
Reviewed-by: Heiko Schocher hs@denx.de
bye, Heiko