[PATCH 2/3 v2] gpmc: Add reset to gpmc_generic_init
Jan Weitzel
j.weitzel at phytec.de
Thu Jul 19 03:58:18 EDT 2012
Add reset to gpmc_generic_init as proposed by TRM.
This also fixes some strange timing issue while GPMC Initialization for
NAND OMAP4460
Signed-off-by: Jan Weitzel <j.weitzel at phytec.de>
---
v2: fix timeout endless loop
arch/arm/mach-omap/gpmc.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-omap/gpmc.c b/arch/arm/mach-omap/gpmc.c
index 399f68a..b3fa56c 100644
--- a/arch/arm/mach-omap/gpmc.c
+++ b/arch/arm/mach-omap/gpmc.c
@@ -28,6 +28,7 @@
* MA 02111-1307 USA
*/
#include <common.h>
+#include <clock.h>
#include <init.h>
#include <io.h>
#include <mach/silicon.h>
@@ -48,13 +49,22 @@
*/
void gpmc_generic_init(unsigned int cfg)
{
+ uint64_t start;
unsigned int reg = GPMC_REG(CONFIG7_0);
char x = 0;
debug("gpmccfg=%x\n", cfg);
/* Generic Configurations */
+ /* reset gpmc */
+ start = get_time_ns();
/* No idle, L3 clock free running */
- writel(0x10, GPMC_REG(SYS_CONFIG));
+ writel(0x12, GPMC_REG(SYS_CONFIG));
+ while (!readl(GPMC_REG(SYS_STATUS)))
+ if (is_timeout(start, MSECOND)) {
+ printf("timeout on gpmc reset\n");
+ break;
+ }
+
/* No Timeout */
writel(0x00, GPMC_REG(TIMEOUT_CONTROL));
/* No IRQs */
--
1.7.0.4
More information about the barebox
mailing list