/* * 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 #include #include #include 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(); }