summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlbert ARIBAUD <albert.u.boot@aribaud.net>2013-07-12 13:20:35 +0200
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2013-07-12 13:20:35 +0200
commitefc284e32503b240dbd35c6e8b8d098d702b4be7 (patch)
tree6331525bc0342e3f3fa0615905851a8a5673142e
parentd035fcf9b6a5a0d7ce8d3d5f3ef960618deea47e (diff)
parenta3f170cdbf7ae0bd24c94c2f46725699bbd69f05 (diff)
downloadtalos-obmc-uboot-efc284e32503b240dbd35c6e8b8d098d702b4be7.tar.gz
talos-obmc-uboot-efc284e32503b240dbd35c6e8b8d098d702b4be7.zip
Merge branch 'u-boot-imx/master' into 'u-boot-arm/master'
-rw-r--r--drivers/net/fec_mxc.c23
-rw-r--r--include/configs/m28evk.h1
-rw-r--r--include/configs/mx51evk.h4
-rw-r--r--include/configs/mx53ard.h4
-rw-r--r--include/configs/mx53loco.h4
-rw-r--r--include/configs/mx6qsabrelite.h4
-rw-r--r--include/configs/mx6slevk.h4
-rw-r--r--include/configs/wandboard.h4
8 files changed, 35 insertions, 13 deletions
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index da95e285b7..ec5b9db660 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -560,7 +560,6 @@ static int fec_init(struct eth_device *dev, bd_t* bd)
}
memset(fec->tbd_base, 0, size);
fec_tbd_init(fec);
- flush_dcache_range((unsigned)fec->tbd_base, size);
}
/*
@@ -738,6 +737,28 @@ static int fec_send(struct eth_device *dev, void *packet, int length)
flush_dcache_range(addr, addr + size);
/*
+ * Below we read the DMA descriptor's last four bytes back from the
+ * DRAM. This is important in order to make sure that all WRITE
+ * operations on the bus that were triggered by previous cache FLUSH
+ * have completed.
+ *
+ * Otherwise, on MX28, it is possible to observe a corruption of the
+ * DMA descriptors. Please refer to schematic "Figure 1-2" in MX28RM
+ * for the bus structure of MX28. The scenario is as follows:
+ *
+ * 1) ARM core triggers a series of WRITEs on the AHB_ARB2 bus going
+ * to DRAM due to flush_dcache_range()
+ * 2) ARM core writes the FEC registers via AHB_ARB2
+ * 3) FEC DMA starts reading/writing from/to DRAM via AHB_ARB3
+ *
+ * Note that 2) does sometimes finish before 1) due to reordering of
+ * WRITE accesses on the AHB bus, therefore triggering 3) before the
+ * DMA descriptor is fully written into DRAM. This results in occasional
+ * corruption of the DMA descriptor.
+ */
+ readl(addr + size - 4);
+
+ /*
* Enable SmartDMA transmit task
*/
fec_tx_task_enable(fec);
diff --git a/include/configs/m28evk.h b/include/configs/m28evk.h
index 5b3fa43eb4..10ccc3bc37 100644
--- a/include/configs/m28evk.h
+++ b/include/configs/m28evk.h
@@ -70,6 +70,7 @@
#define CONFIG_CMD_MII
#define CONFIG_CMD_MMC
#define CONFIG_CMD_NAND
+#define CONFIG_CMD_NAND_TRIMFFS
#define CONFIG_CMD_NET
#define CONFIG_CMD_NFS
#define CONFIG_CMD_PING
diff --git a/include/configs/mx51evk.h b/include/configs/mx51evk.h
index 13d1839ebe..4383375d02 100644
--- a/include/configs/mx51evk.h
+++ b/include/configs/mx51evk.h
@@ -162,8 +162,8 @@
"boot_fdt=try\0" \
"ip_dyn=yes\0" \
"mmcdev=0\0" \
- "mmcpart=2\0" \
- "mmcroot=/dev/mmcblk0p3 rootwait rw\0" \
+ "mmcpart=1\0" \
+ "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
"mmcargs=setenv bootargs console=ttymxc0,${baudrate} " \
"root=${mmcroot}\0" \
"loadbootscript=" \
diff --git a/include/configs/mx53ard.h b/include/configs/mx53ard.h
index b0a965fbba..fa160e4154 100644
--- a/include/configs/mx53ard.h
+++ b/include/configs/mx53ard.h
@@ -118,8 +118,8 @@
"boot_fdt=try\0" \
"ip_dyn=yes\0" \
"mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
- "mmcpart=2\0" \
- "mmcroot=/dev/mmcblk0p3 rootwait rw\0" \
+ "mmcpart=1\0" \
+ "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
"update_sd_firmware_filename=u-boot.imx\0" \
"update_sd_firmware=" \
"if test ${ip_dyn} = yes; then " \
diff --git a/include/configs/mx53loco.h b/include/configs/mx53loco.h
index a4b610f9b7..cc31e9b4e7 100644
--- a/include/configs/mx53loco.h
+++ b/include/configs/mx53loco.h
@@ -124,8 +124,8 @@
"boot_fdt=try\0" \
"ip_dyn=yes\0" \
"mmcdev=0\0" \
- "mmcpart=2\0" \
- "mmcroot=/dev/mmcblk0p3 rw rootwait\0" \
+ "mmcpart=1\0" \
+ "mmcroot=/dev/mmcblk0p2 rw rootwait\0" \
"mmcargs=setenv bootargs console=ttymxc0,${baudrate} root=${mmcroot}\0" \
"loadbootscript=" \
"fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
diff --git a/include/configs/mx6qsabrelite.h b/include/configs/mx6qsabrelite.h
index b814418481..c7db81d0d8 100644
--- a/include/configs/mx6qsabrelite.h
+++ b/include/configs/mx6qsabrelite.h
@@ -170,8 +170,8 @@
"boot_fdt=try\0" \
"ip_dyn=yes\0" \
"mmcdev=0\0" \
- "mmcpart=2\0" \
- "mmcroot=/dev/mmcblk0p3 rootwait rw\0" \
+ "mmcpart=1\0" \
+ "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
"mmcargs=setenv bootargs console=${console},${baudrate} " \
"root=${mmcroot}\0" \
"loadbootscript=" \
diff --git a/include/configs/mx6slevk.h b/include/configs/mx6slevk.h
index 19dcdd605c..55e3ad97a1 100644
--- a/include/configs/mx6slevk.h
+++ b/include/configs/mx6slevk.h
@@ -73,8 +73,8 @@
"boot_fdt=try\0" \
"ip_dyn=yes\0" \
"mmcdev=0\0" \
- "mmcpart=2\0" \
- "mmcroot=/dev/mmcblk0p3 rootwait rw\0" \
+ "mmcpart=1\0" \
+ "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
"mmcargs=setenv bootargs console=${console},${baudrate} " \
"root=${mmcroot}\0" \
"loadbootscript=" \
diff --git a/include/configs/wandboard.h b/include/configs/wandboard.h
index b2995d8ea9..ee6bf216bd 100644
--- a/include/configs/wandboard.h
+++ b/include/configs/wandboard.h
@@ -120,8 +120,8 @@
"boot_fdt=try\0" \
"ip_dyn=yes\0" \
"mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
- "mmcpart=2\0" \
- "mmcroot=/dev/mmcblk0p3 rootwait rw\0" \
+ "mmcpart=1\0" \
+ "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
"update_sd_firmware_filename=u-boot.imx\0" \
"update_sd_firmware=" \
"if test ${ip_dyn} = yes; then " \
OpenPOWER on IntegriCloud