summaryrefslogtreecommitdiff
path: root/drivers/spi
diff options
context:
space:
mode:
authorYe Li <ye.li@nxp.com>2016-03-16 13:50:54 +0800
committerYe Li <ye.li@nxp.com>2018-04-27 02:30:47 -0700
commit6e8c9ae136bee8ec0121c1db4b935510caad09db (patch)
treedce1ab3cbcf02f970c9265b36ff3e5875173106f /drivers/spi
parente93235cbcf624a476c95f4e9e8fd51e667ab4aa2 (diff)
MLK-12483-4 mx6: Modify drivers to disable fused modules
Add the fuse checking in drivers, when the module is disabled in fuse, the driver will not work. Changed drivers: BEE, GPMI, APBH-DMA, ESDHC, FEC, QSPI, ECSPI, I2C, USB-EHCI, GIS, LCDIF and EPDC. Signed-off-by: Ye Li <ye.li@nxp.com> (cherry picked from commit 1704e116f9b39aeb99201919a18bc2b1e19a980e) (cherry picked from commit 2d3b5df8530cd5ef883750378838dea7c40259af)
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/fsl_qspi.c15
-rw-r--r--drivers/spi/mxc_spi.c10
2 files changed, 25 insertions, 0 deletions
diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c
index 662cd1ae051..7359cb6cdc0 100644
--- a/drivers/spi/fsl_qspi.c
+++ b/drivers/spi/fsl_qspi.c
@@ -16,6 +16,7 @@
#include <watchdog.h>
#include <wait_bit.h>
#include "fsl_qspi.h"
+#include <asm/arch/sys_proto.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -944,6 +945,13 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
if (bus >= ARRAY_SIZE(spi_bases))
return NULL;
+#ifdef CONFIG_MX6
+ if (mx6_qspi_fused(spi_bases[bus])) {
+ printf("QSPI@0x%lx is fused, disable it\n", spi_bases[bus]);
+ return NULL;
+ }
+#endif
+
if (cs >= FSL_QSPI_FLASH_NUM)
return NULL;
@@ -1074,6 +1082,13 @@ static int fsl_qspi_probe(struct udevice *bus)
struct dm_spi_bus *dm_spi_bus;
int i, ret;
+#ifdef CONFIG_MX6
+ if (mx6_qspi_fused(plat->reg_base)) {
+ printf("QSPI@0x%lx is fused, disable it\n", plat->reg_base);
+ return -ENODEV;
+ }
+#endif
+
dm_spi_bus = bus->uclass_priv;
dm_spi_bus->max_hz = plat->speed_hz;
diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c
index 41f0cfcd6b7..a1147a033e5 100644
--- a/drivers/spi/mxc_spi.c
+++ b/drivers/spi/mxc_spi.c
@@ -1,6 +1,8 @@
/*
* Copyright (C) 2008, Guennadi Liakhovetski <lg@denx.de>
*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
* SPDX-License-Identifier: GPL-2.0+
*/
@@ -14,6 +16,7 @@
#include <asm/arch/imx-regs.h>
#include <asm/arch/clock.h>
#include <asm/mach-imx/spi.h>
+#include <asm/arch/sys_proto.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -450,6 +453,13 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
return NULL;
}
+#ifdef CONFIG_MX6
+ if (mx6_ecspi_fused(spi_bases[bus])) {
+ printf("ECSPI@0x%lx is fused, disable it\n", spi_bases[bus]);
+ return NULL;
+ }
+#endif
+
mxcs = spi_alloc_slave(struct mxc_spi_slave, bus, cs);
if (!mxcs) {
puts("mxc_spi: SPI Slave not allocated !\n");