diff mbox series

[U-Boot,v2,2/4] i2c: mxc: add fuse check

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

Commit Message

Peng Fan Aug. 1, 2019, 8:45 a.m. UTC
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(+)

Comments

Heiko Schocher Aug. 1, 2019, 11:04 a.m. UTC | #1
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 mbox series

Patch

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;