|
@@ -62,118 +62,11 @@ void swap_to(int device_id)
|
|
|
/* miscellaneous platform dependent initialisations */
|
|
|
int misc_init_r(void)
|
|
|
{
|
|
|
- int i;
|
|
|
- int cf_stat = 0;
|
|
|
-
|
|
|
- /* Check whether CF card is inserted */
|
|
|
- *pFIO_EDGE = FIO_EDGE_CF_BITS;
|
|
|
- *pFIO_POLAR = FIO_POLAR_CF_BITS;
|
|
|
- for (i = 0; i < 0x300; i++)
|
|
|
- asm("nop;");
|
|
|
-
|
|
|
- if ((*pFIO_FLAG_S) & CF_STAT_BITS) {
|
|
|
- cf_stat = 0;
|
|
|
- } else {
|
|
|
- cf_stat = 1;
|
|
|
- }
|
|
|
-
|
|
|
- *pFIO_EDGE = FIO_EDGE_BITS;
|
|
|
- *pFIO_POLAR = FIO_POLAR_BITS;
|
|
|
-
|
|
|
- if (cf_stat) {
|
|
|
- printf("Booting from COMPACT flash\n");
|
|
|
-
|
|
|
- for (i = 0; i < 0x1000; i++)
|
|
|
- asm("nop;");
|
|
|
- for (i = 0; i < 0x1000; i++)
|
|
|
- asm("nop;");
|
|
|
- for (i = 0; i < 0x1000; i++)
|
|
|
- asm("nop;");
|
|
|
-
|
|
|
- serial_setbrg();
|
|
|
- ide_init();
|
|
|
-
|
|
|
- setenv("bootargs", "");
|
|
|
- setenv("bootcmd",
|
|
|
- "fatload ide 0:1 0x1000000 uImage-stamp;bootm 0x1000000;bootm 0x20100000");
|
|
|
- } else {
|
|
|
- printf("Booting from FLASH\n");
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
#ifdef CONFIG_STAMP_CF
|
|
|
+ cf_ide_init();
|
|
|
+#endif
|
|
|
|
|
|
-void cf_outb(unsigned char val, volatile unsigned char *addr)
|
|
|
-{
|
|
|
- /*
|
|
|
- * Set PF1 PF0 respectively to 0 1 to divert address
|
|
|
- * to the expansion memory banks
|
|
|
- */
|
|
|
- *pFIO_FLAG_S = CF_PF0;
|
|
|
- *pFIO_FLAG_C = CF_PF1;
|
|
|
- SSYNC();
|
|
|
-
|
|
|
- *(addr) = val;
|
|
|
- SSYNC();
|
|
|
-
|
|
|
- /* Setback PF1 PF0 to 0 0 to address external
|
|
|
- * memory banks */
|
|
|
- *(volatile unsigned short *)pFIO_FLAG_C = CF_PF1_PF0;
|
|
|
- SSYNC();
|
|
|
-}
|
|
|
-
|
|
|
-unsigned char cf_inb(volatile unsigned char *addr)
|
|
|
-{
|
|
|
- volatile unsigned char c;
|
|
|
-
|
|
|
- *pFIO_FLAG_S = CF_PF0;
|
|
|
- *pFIO_FLAG_C = CF_PF1;
|
|
|
- SSYNC();
|
|
|
-
|
|
|
- c = *(addr);
|
|
|
- SSYNC();
|
|
|
-
|
|
|
- *pFIO_FLAG_C = CF_PF1_PF0;
|
|
|
- SSYNC();
|
|
|
-
|
|
|
- return c;
|
|
|
-}
|
|
|
-
|
|
|
-void cf_insw(unsigned short *sect_buf, unsigned short *addr, int words)
|
|
|
-{
|
|
|
- int i;
|
|
|
-
|
|
|
- *pFIO_FLAG_S = CF_PF0;
|
|
|
- *pFIO_FLAG_C = CF_PF1;
|
|
|
- SSYNC();
|
|
|
-
|
|
|
- for (i = 0; i < words; i++) {
|
|
|
- *(sect_buf + i) = *(addr);
|
|
|
- SSYNC();
|
|
|
- }
|
|
|
-
|
|
|
- *pFIO_FLAG_C = CF_PF1_PF0;
|
|
|
- SSYNC();
|
|
|
-}
|
|
|
-
|
|
|
-void cf_outsw(unsigned short *addr, unsigned short *sect_buf, int words)
|
|
|
-{
|
|
|
- int i;
|
|
|
-
|
|
|
- *pFIO_FLAG_S = CF_PF0;
|
|
|
- *pFIO_FLAG_C = CF_PF1;
|
|
|
- SSYNC();
|
|
|
-
|
|
|
- for (i = 0; i < words; i++) {
|
|
|
- *(addr) = *(sect_buf + i);
|
|
|
- SSYNC();
|
|
|
- }
|
|
|
-
|
|
|
- *pFIO_FLAG_C = CF_PF1_PF0;
|
|
|
- SSYNC();
|
|
|
+ return 0;
|
|
|
}
|
|
|
#endif
|
|
|
|