@ -10,54 +10,17 @@
# include <asm/arch/at91_common.h>
# include <asm/arch/at91_rstc.h>
# include <asm/arch/atmel_mpddrc.h>
# include <asm/arch/atmel_usba_udc.h>
# include <asm/arch/gpio.h>
# include <asm/arch/clk.h>
# include <asm/arch/sama5d3_smc.h>
# include <asm/arch/sama5d4.h>
# include <atmel_hlcdc.h>
# include <atmel_mci.h>
# include <lcd.h>
# include <mmc.h>
# include <net.h>
# include <netdev.h>
# include <nand.h>
# include <spi.h>
# include <version.h>
DECLARE_GLOBAL_DATA_PTR ;
# ifdef CONFIG_ATMEL_SPI
# ifndef CONFIG_DM_SPI
int spi_cs_is_valid ( unsigned int bus , unsigned int cs )
{
return bus = = 0 & & cs = = 0 ;
}
# endif
void spi_cs_activate ( struct spi_slave * slave )
{
at91_set_pio_output ( AT91_PIO_PORTC , 3 , 0 ) ;
}
void spi_cs_deactivate ( struct spi_slave * slave )
{
at91_set_pio_output ( AT91_PIO_PORTC , 3 , 1 ) ;
}
static void sama5d4ek_spi0_hw_init ( void )
{
at91_pio3_set_a_periph ( AT91_PIO_PORTC , 0 , 0 ) ; /* SPI0_MISO */
at91_pio3_set_a_periph ( AT91_PIO_PORTC , 1 , 0 ) ; /* SPI0_MOSI */
at91_pio3_set_a_periph ( AT91_PIO_PORTC , 2 , 0 ) ; /* SPI0_SPCK */
at91_set_pio_output ( AT91_PIO_PORTC , 3 , 1 ) ; /* SPI0_CS0 */
/* Enable clock */
at91_periph_clk_enable ( ATMEL_ID_SPI0 ) ;
}
# endif /* CONFIG_ATMEL_SPI */
# ifdef CONFIG_NAND_ATMEL
static void sama5d4ek_nand_hw_init ( void )
{
@ -198,61 +161,6 @@ void lcd_show_board_info(void)
# endif /* CONFIG_LCD */
# ifdef CONFIG_GENERIC_ATMEL_MCI
void sama5d4ek_mci1_hw_init ( void )
{
at91_pio3_set_c_periph ( AT91_PIO_PORTE , 19 , 1 ) ; /* MCI1 CDA */
at91_pio3_set_c_periph ( AT91_PIO_PORTE , 20 , 1 ) ; /* MCI1 DA0 */
at91_pio3_set_c_periph ( AT91_PIO_PORTE , 21 , 1 ) ; /* MCI1 DA1 */
at91_pio3_set_c_periph ( AT91_PIO_PORTE , 22 , 1 ) ; /* MCI1 DA2 */
at91_pio3_set_c_periph ( AT91_PIO_PORTE , 23 , 1 ) ; /* MCI1 DA3 */
at91_pio3_set_c_periph ( AT91_PIO_PORTE , 18 , 0 ) ; /* MCI1 CLK */
/*
* As the mci io internal pull down is too strong , so if the io needs
* external pull up , the pull up resistor will be very small , if so
* the power consumption will increase , so disable the interanl pull
* down to save the power .
*/
at91_pio3_set_pio_pulldown ( AT91_PIO_PORTE , 18 , 0 ) ;
at91_pio3_set_pio_pulldown ( AT91_PIO_PORTE , 19 , 0 ) ;
at91_pio3_set_pio_pulldown ( AT91_PIO_PORTE , 20 , 0 ) ;
at91_pio3_set_pio_pulldown ( AT91_PIO_PORTE , 21 , 0 ) ;
at91_pio3_set_pio_pulldown ( AT91_PIO_PORTE , 22 , 0 ) ;
at91_pio3_set_pio_pulldown ( AT91_PIO_PORTE , 23 , 0 ) ;
/* Enable clock */
at91_periph_clk_enable ( ATMEL_ID_MCI1 ) ;
}
int board_mmc_init ( bd_t * bis )
{
/* Enable power for MCI1 interface */
at91_set_pio_output ( AT91_PIO_PORTE , 15 , 0 ) ;
return atmel_mci_init ( ( void * ) ATMEL_BASE_MCI1 ) ;
}
# endif /* CONFIG_GENERIC_ATMEL_MCI */
# ifdef CONFIG_MACB
void sama5d4ek_macb0_hw_init ( void )
{
at91_pio3_set_a_periph ( AT91_PIO_PORTB , 0 , 0 ) ; /* ETXCK_EREFCK */
at91_pio3_set_a_periph ( AT91_PIO_PORTB , 6 , 0 ) ; /* ERXDV */
at91_pio3_set_a_periph ( AT91_PIO_PORTB , 8 , 0 ) ; /* ERX0 */
at91_pio3_set_a_periph ( AT91_PIO_PORTB , 9 , 0 ) ; /* ERX1 */
at91_pio3_set_a_periph ( AT91_PIO_PORTB , 7 , 0 ) ; /* ERXER */
at91_pio3_set_a_periph ( AT91_PIO_PORTB , 2 , 0 ) ; /* ETXEN */
at91_pio3_set_a_periph ( AT91_PIO_PORTB , 12 , 0 ) ; /* ETX0 */
at91_pio3_set_a_periph ( AT91_PIO_PORTB , 13 , 0 ) ; /* ETX1 */
at91_pio3_set_a_periph ( AT91_PIO_PORTB , 17 , 0 ) ; /* EMDIO */
at91_pio3_set_a_periph ( AT91_PIO_PORTB , 16 , 0 ) ; /* EMDC */
/* Enable clock */
at91_periph_clk_enable ( ATMEL_ID_GMAC0 ) ;
}
# endif
static void sama5d4ek_serial3_hw_init ( void )
{
at91_pio3_set_b_periph ( AT91_PIO_PORTE , 17 , 1 ) ; /* TXD3 */
@ -264,12 +172,6 @@ static void sama5d4ek_serial3_hw_init(void)
int board_early_init_f ( void )
{
at91_periph_clk_enable ( ATMEL_ID_PIOA ) ;
at91_periph_clk_enable ( ATMEL_ID_PIOB ) ;
at91_periph_clk_enable ( ATMEL_ID_PIOC ) ;
at91_periph_clk_enable ( ATMEL_ID_PIOD ) ;
at91_periph_clk_enable ( ATMEL_ID_PIOE ) ;
sama5d4ek_serial3_hw_init ( ) ;
return 0 ;
@ -280,27 +182,15 @@ int board_init(void)
/* adress of boot parameters */
gd - > bd - > bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100 ;
# ifdef CONFIG_ATMEL_SPI
sama5d4ek_spi0_hw_init ( ) ;
# endif
# ifdef CONFIG_NAND_ATMEL
sama5d4ek_nand_hw_init ( ) ;
# endif
# ifdef CONFIG_GENERIC_ATMEL_MCI
sama5d4ek_mci1_hw_init ( ) ;
# endif
# ifdef CONFIG_MACB
sama5d4ek_macb0_hw_init ( ) ;
# endif
# ifdef CONFIG_LCD
sama5d4ek_lcd_hw_init ( ) ;
# endif
# ifdef CONFIG_CMD_USB
sama5d4ek_usb_hw_init ( ) ;
# endif
# ifdef CONFIG_USB_GADGET_ATMEL_USBA
at91_udp_hw_init ( ) ;
# endif
return 0 ;
}
@ -312,34 +202,12 @@ int dram_init(void)
return 0 ;
}
int board_eth_init ( bd_t * bis )
{
int rc = 0 ;
# ifdef CONFIG_MACB
rc = macb_eth_initialize ( 0 , ( void * ) ATMEL_BASE_GMAC0 , 0x00 ) ;
# endif
# ifdef CONFIG_USB_GADGET_ATMEL_USBA
usba_udc_probe ( & pdata ) ;
# ifdef CONFIG_USB_ETH_RNDIS
usb_eth_initialize ( bis ) ;
# endif
# endif
return rc ;
}
/* SPL */
# ifdef CONFIG_SPL_BUILD
void spl_board_init ( void )
{
# ifdef CONFIG_SYS_USE_MMC
sama5d4ek_mci1_hw_init ( ) ;
# elif CONFIG_SYS_USE_NANDFLASH
# if CONFIG_SYS_USE_NANDFLASH
sama5d4ek_nand_hw_init ( ) ;
# elif CONFIG_SYS_USE_SERIALFLASH
sama5d4ek_spi0_hw_init ( ) ;
# endif
}