Blackfin: bf537-stamp: split CF/IDE code out into dedicated cf-ide.c
authorMike Frysinger <vapier@gentoo.org>
Sun, 22 Feb 2009 21:30:38 +0000 (16:30 -0500)
committerMike Frysinger <vapier@gentoo.org>
Thu, 2 Apr 2009 10:42:00 +0000 (06:42 -0400)
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
board/bf537-stamp/Makefile
board/bf537-stamp/bf537-stamp.c
board/bf537-stamp/ide-cf.c [new file with mode: 0644]

index 3b875a322bface8aa5f0f39777a96a7103d5c106..1dbf406b29d27522a46dcce563e1c704cd446a8c 100644 (file)
@@ -30,6 +30,7 @@ include $(TOPDIR)/config.mk
 LIB    = $(obj)lib$(BOARD).a
 
 COBJS-y        := $(BOARD).o cmd_bf537led.o
+COBJS-$(CONFIG_BFIN_IDE)   += ide-cf.o
 COBJS-$(CONFIG_CMD_EEPROM) += spi_flash.o
 COBJS-$(CONFIG_CMD_NAND)   += nand.o
 COBJS-$(CONFIG_POST)       += post.o post-memory.o
index 16ffe2f1d14af9c749c515f08fee107358af1111..28597c9e69dc9bf0caac14bf20e79f3a762b3139 100644 (file)
@@ -43,43 +43,6 @@ int checkboard(void)
        return 0;
 }
 
-#if defined(CONFIG_BFIN_IDE)
-
-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();
-}
-#endif                         /* CONFIG_BFIN_IDE */
-
 phys_size_t initdram(int board_type)
 {
        gd->bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
@@ -130,7 +93,6 @@ int board_eth_init(bd_t *bis)
 }
 #endif
 
-#if defined(CONFIG_MISC_INIT_R)
 /* miscellaneous platform dependent initialisations */
 int misc_init_r(void)
 {
@@ -146,22 +108,9 @@ int misc_init_r(void)
        flash_protect(FLAG_PROTECT_SET, 0x203F0000, 0x203FFFFF, &flash_info[0]);
 #endif
 
-#if defined(CONFIG_BFIN_IDE)
-#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");
+#ifdef CONFIG_BFIN_IDE
+       cf_ide_init();
 #endif
-       ide_init();
-#endif                         /* CONFIG_BFIN_IDE */
+
        return 0;
 }
-#endif                         /* CONFIG_MISC_INIT_R */
diff --git a/board/bf537-stamp/ide-cf.c b/board/bf537-stamp/ide-cf.c
new file mode 100644 (file)
index 0000000..5a3720d
--- /dev/null
@@ -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();
+}