[PATCH 2/3 v2] gpmc: Add reset to gpmc_generic_init
Sascha Hauer
s.hauer at pengutronix.de
Fri Jul 20 03:20:13 EDT 2012
Hi Jan,
On Thu, Jul 19, 2012 at 09:58:18AM +0200, Jan Weitzel wrote:
> 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>
Applied this one. I think the rest needs another round.
Sascha
> ---
> 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
>
>
> _______________________________________________
> barebox mailing list
> barebox at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list