diff options
Diffstat (limited to 'board/atmel/at91rm9200ek/mux.c')
| -rw-r--r-- | board/atmel/at91rm9200ek/mux.c | 38 | 
1 files changed, 38 insertions, 0 deletions
| diff --git a/board/atmel/at91rm9200ek/mux.c b/board/atmel/at91rm9200ek/mux.c new file mode 100644 index 000000000..bdd44e8cf --- /dev/null +++ b/board/atmel/at91rm9200ek/mux.c @@ -0,0 +1,38 @@ +#include <config.h> +#include <common.h> +#include <asm/hardware.h> +#include <asm/io.h> +#include <dataflash.h> + +int AT91F_GetMuxStatus(void) +{ +	/* Set in PIO mode */ +	writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_PER); +	/* Configure in output */ +	writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_OER); + +	if(readl(AT91C_BASE_PIOB->PIO_ODSR) & CONFIG_SYS_DATAFLASH_MMC_PIO) +		return 1; + +	return 0; +} + +void AT91F_SelectMMC(void) +{ +	/* Set in PIO mode */ +	writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_PER); +	/* Configure in output */ +	writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_OER); +	/* Set Output */ +	writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_SODR); +} + +void AT91F_SelectSPI(void) +{ +	/* Set in PIO mode */ +	writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_PER); +	/* Configure in output */ +	writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_OER); +	/* Clear Output */ +	writel(CONFIG_SYS_DATAFLASH_MMC_PIO, AT91C_BASE_PIOB->PIO_CODR); +} |