Skip to content
Snippets Groups Projects
Commit 1f75d6f0 authored by Mike Frysinger's avatar Mike Frysinger
Browse files

Blackfin: bf533-stamp: rewrite resource swap logic


The old swap function tended to clobber unrelated pins and screw up masks.
Rewrite the thing from scratch so it only uses the resources it needs.

Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
parent 29d4ea0a
No related branches found
No related tags found
No related merge requests found
......@@ -54,29 +54,23 @@ phys_size_t initdram(int board_type)
return gd->bd->bi_memsize;
}
/* PF0 and PF1 are used to switch between the ethernet and flash:
* PF0 PF1
* flash: 0 0
* ether: 1 0
*/
void swap_to(int device_id)
{
if (device_id == ETHERNET) {
*pFIO_DIR = PF0;
SSYNC();
*pFIO_FLAG_S = PF0;
SSYNC();
} else if (device_id == FLASH) {
*pFIO_DIR = (PF4 | PF3 | PF2 | PF1 | PF0);
*pFIO_FLAG_S = (PF4 | PF3 | PF2);
*pFIO_MASKA_D = (PF8 | PF6 | PF5);
*pFIO_MASKB_D = (PF7);
*pFIO_POLAR = (PF8 | PF6 | PF5);
*pFIO_EDGE = (PF8 | PF7 | PF6 | PF5);
*pFIO_INEN = (PF8 | PF7 | PF6 | PF5);
*pFIO_FLAG_D = (PF4 | PF3 | PF2);
SSYNC();
} else {
printf("Unknown bank to switch\n");
}
return;
bfin_write_FIO_DIR(bfin_read_FIO_DIR() | PF1 | PF0);
SSYNC();
bfin_write_FIO_FLAG_C(PF1);
if (device_id == ETHERNET)
bfin_write_FIO_FLAG_S(PF0);
else if (device_id == FLASH)
bfin_write_FIO_FLAG_C(PF0);
else
printf("Unknown device to switch\n");
SSYNC();
}
#if defined(CONFIG_MISC_INIT_R)
......@@ -104,9 +98,6 @@ int misc_init_r(void)
if (cf_stat) {
printf("Booting from COMPACT flash\n");
/* Set cycle time for CF */
*(volatile unsigned long *)ambctl1 = CF_AMBCTL1VAL;
for (i = 0; i < 0x1000; i++)
asm("nop;");
for (i = 0; i < 0x1000; i++)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment