[U-Boot] [PATCH v2 2/4] i2c: mxc: add fuse check
Heiko Schocher
hs at denx.de
Thu Aug 1 11:04:10 UTC 2019
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 at 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 at 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 at 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 at denx.de>
bye,
Heiko
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-52 Fax: +49-8142-66989-80 Email: hs at denx.de
More information about the U-Boot
mailing list