diff options
author | Thomas Chou <thomas@wytron.com.tw> | 2010-03-31 08:36:24 +0800 |
---|---|---|
committer | Scott McNutt <smcnutt@psyent.com> | 2010-04-24 18:21:22 -0400 |
commit | e4bf588609d8d9cefbc312a6c6b8bb309b194fd5 (patch) | |
tree | 09e0f1596233a7aeb24d286a02eb20142966f55a /board/altera/common/cfide.c | |
parent | dd168ef5b82255401e46a27faae09e39c66967fe (diff) | |
download | u-boot-imx-e4bf588609d8d9cefbc312a6c6b8bb309b194fd5.zip u-boot-imx-e4bf588609d8d9cefbc312a6c6b8bb309b194fd5.tar.gz u-boot-imx-e4bf588609d8d9cefbc312a6c6b8bb309b194fd5.tar.bz2 |
nios2: add altera cf reset
This patch toggles power to reset the cf card.
Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
Signed-off-by: Scott McNutt <smcnutt@psyent.com>
Diffstat (limited to 'board/altera/common/cfide.c')
-rw-r--r-- | board/altera/common/cfide.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/board/altera/common/cfide.c b/board/altera/common/cfide.c new file mode 100644 index 0000000..40d6a12 --- /dev/null +++ b/board/altera/common/cfide.c @@ -0,0 +1,33 @@ +/* + * Altera CF drvier + * + * (C) Copyright 2010, Thomas Chou <thomas@wytron.com.tw> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +#include <common.h> +#include <asm/io.h> + +#if defined(CONFIG_IDE_RESET) && defined(CONFIG_SYS_CF_CTL_BASE) +/* ide_set_reset for Altera CF interface */ +#define ALTERA_CF_CTL_STATUS 0 +#define ALTERA_CF_IDE_CTL 4 +#define ALTERA_CF_CTL_STATUS_PRESENT_MSK (0x1) +#define ALTERA_CF_CTL_STATUS_POWER_MSK (0x2) +#define ALTERA_CF_CTL_STATUS_RESET_MSK (0x4) +#define ALTERA_CF_CTL_STATUS_IRQ_EN_MSK (0x8) +#define ALTERA_CF_IDE_CTL_IRQ_EN_MSK (0x1) + +void ide_set_reset(int idereset) +{ + int i; + writel(idereset ? ALTERA_CF_CTL_STATUS_RESET_MSK : + ALTERA_CF_CTL_STATUS_POWER_MSK, + CONFIG_SYS_CF_CTL_BASE + ALTERA_CF_CTL_STATUS); + /* wait 500 ms for power to stabilize */ + for (i = 0; i < 500; i++) + udelay(1000); +} +#endif |