diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-02-22 16:30:38 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-04-02 06:42:00 -0400 |
commit | d248cfb2d940b742f6bfdba9b832a3df96da3101 (patch) | |
tree | 87b21625755f07aa3ef0c84ed721db89cf7f95ad /board/bf537-stamp/ide-cf.c | |
parent | ad9073211ca9e62162a39851e082b8d07a662fb6 (diff) | |
download | u-boot-imx-d248cfb2d940b742f6bfdba9b832a3df96da3101.zip u-boot-imx-d248cfb2d940b742f6bfdba9b832a3df96da3101.tar.gz u-boot-imx-d248cfb2d940b742f6bfdba9b832a3df96da3101.tar.bz2 |
Blackfin: bf537-stamp: split CF/IDE code out into dedicated cf-ide.c
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'board/bf537-stamp/ide-cf.c')
-rw-r--r-- | board/bf537-stamp/ide-cf.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/board/bf537-stamp/ide-cf.c b/board/bf537-stamp/ide-cf.c new file mode 100644 index 0000000..5a3720d --- /dev/null +++ b/board/bf537-stamp/ide-cf.c @@ -0,0 +1,66 @@ +/* + * CF IDE addon card code + * + * Enter bugs at http://blackfin.uclinux.org/ + * + * Copyright (c) 2005-2009 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <config.h> +#include <command.h> +#include <asm/blackfin.h> + +void cf_outb(unsigned char val, volatile unsigned char *addr) +{ + *(addr) = val; + SSYNC(); +} + +unsigned char cf_inb(volatile unsigned char *addr) +{ + volatile unsigned char c; + + c = *(addr); + SSYNC(); + + return c; +} + +void cf_insw(unsigned short *sect_buf, unsigned short *addr, int words) +{ + int i; + + for (i = 0; i < words; i++) + *(sect_buf + i) = *(addr); + SSYNC(); +} + +void cf_outsw(unsigned short *addr, unsigned short *sect_buf, int words) +{ + int i; + + for (i = 0; i < words; i++) + *(addr) = *(sect_buf + i); + SSYNC(); +} + +void cf_ide_init(void) +{ +#if defined(CONFIG_BFIN_TRUE_IDE) + /* Enable ATASEL when in True IDE mode */ + printf("Using CF True IDE Mode\n"); + cf_outb(0, (unsigned char *)CONFIG_CF_ATASEL_ENA); + udelay(1000); +#elif defined(CONFIG_BFIN_CF_IDE) + /* Disable ATASEL when we're in Common Memory Mode */ + printf("Using CF Common Memory Mode\n"); + cf_outb(0, (unsigned char *)CONFIG_CF_ATASEL_DIS); + udelay(1000); +#elif defined(CONFIG_BFIN_HDD_IDE) + printf("Using HDD IDE Mode\n"); +#endif + ide_init(); +} |