Message ID | 20190801090117.24692-2-peng.fan@nxp.com |
---|---|
State | Superseded |
Delegated to: | Stefano Babic |
Headers | show |
Series | [U-Boot,v2,1/4] imx: add module fuse support | expand |
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
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;
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(+)