diff options
| -rw-r--r-- | arch/arm/cpu/arm926ejs/at91/at91sam9263_devices.c | 25 | ||||
| -rw-r--r-- | board/atmel/at91sam9263ek/at91sam9263ek.c | 10 | ||||
| -rw-r--r-- | include/configs/at91sam9263ek.h | 13 | 
3 files changed, 48 insertions, 0 deletions
| diff --git a/arch/arm/cpu/arm926ejs/at91/at91sam9263_devices.c b/arch/arm/cpu/arm926ejs/at91/at91sam9263_devices.c index 99a39134d..6b51d5f35 100644 --- a/arch/arm/cpu/arm926ejs/at91/at91sam9263_devices.c +++ b/arch/arm/cpu/arm926ejs/at91/at91sam9263_devices.c @@ -143,6 +143,31 @@ void at91_spi1_hw_init(unsigned long cs_mask)  }  #endif +#if defined(CONFIG_GENERIC_ATMEL_MCI) +void at91_mci_hw_init(void) +{ +	/* Enable mci clock */ +	struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; +	writel(1 << ATMEL_ID_MCI1, &pmc->pcer); + +	at91_set_a_periph(AT91_PIO_PORTA, 6, PUP);	/* MCI1_CK */ + +#if defined(CONFIG_ATMEL_MCI_PORTB) +	at91_set_a_periph(AT91_PIO_PORTA, 21, PUP);	/* MCI1_CDB */ +	at91_set_a_periph(AT91_PIO_PORTA, 22, PUP);	/* MCI1_DB0 */ +	at91_set_a_periph(AT91_PIO_PORTA, 23, PUP);	/* MCI1_DB1 */ +	at91_set_a_periph(AT91_PIO_PORTA, 24, PUP);	/* MCI1_DB2 */ +	at91_set_a_periph(AT91_PIO_PORTA, 25, PUP);	/* MCI1_DB3 */ +#else +	at91_set_a_periph(AT91_PIO_PORTA, 7, PUP);	/* MCI1_CDA */ +	at91_set_a_periph(AT91_PIO_PORTA, 8, PUP);	/* MCI1_DA0 */ +	at91_set_a_periph(AT91_PIO_PORTA, 9, PUP);	/* MCI1_DA1 */ +	at91_set_a_periph(AT91_PIO_PORTA, 10, PUP);	/* MCI1_DA2 */ +	at91_set_a_periph(AT91_PIO_PORTA, 11, PUP);	/* MCI1_DA3 */ +#endif +} +#endif +  #ifdef CONFIG_MACB  void at91_macb_hw_init(void)  { diff --git a/board/atmel/at91sam9263ek/at91sam9263ek.c b/board/atmel/at91sam9263ek/at91sam9263ek.c index d42a1730c..4b1455465 100644 --- a/board/atmel/at91sam9263ek/at91sam9263ek.c +++ b/board/atmel/at91sam9263ek/at91sam9263ek.c @@ -24,6 +24,7 @@  #include <net.h>  #endif  #include <netdev.h> +#include <atmel_mci.h>  DECLARE_GLOBAL_DATA_PTR; @@ -214,6 +215,15 @@ void lcd_show_board_info(void)  #endif /* CONFIG_LCD_INFO */  #endif +#ifdef CONFIG_GENERIC_ATMEL_MCI +int board_mmc_init(bd_t *bd) +{ +	at91_mci_hw_init(); + +	return atmel_mci_init((void *)ATMEL_BASE_MCI1); +} +#endif +  int board_early_init_f(void)  {  	struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; diff --git a/include/configs/at91sam9263ek.h b/include/configs/at91sam9263ek.h index b9aa03603..48c12ea88 100644 --- a/include/configs/at91sam9263ek.h +++ b/include/configs/at91sam9263ek.h @@ -103,6 +103,7 @@  #define CONFIG_CMD_PING		1  #define CONFIG_CMD_DHCP		1  #define CONFIG_CMD_NAND		1 +#define CONFIG_CMD_MMC  #define CONFIG_CMD_USB		1  /* SDRAM */ @@ -123,6 +124,18 @@  #define DATAFLASH_TCSS			(0x1a << 16)  #define DATAFLASH_TCHS			(0x1 << 24) +/* MMC */ +#ifdef CONFIG_CMD_MMC +#define CONFIG_MMC +#define CONFIG_GENERIC_MMC +#define CONFIG_GENERIC_ATMEL_MCI +#endif + +/* FAT */ +#ifdef CONFIG_CMD_FAT +#define CONFIG_DOS_PARTITION +#endif +  /* NOR flash, if populated */  #ifdef CONFIG_SYS_USE_NORFLASH  #define CONFIG_SYS_FLASH_CFI			1 |