]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - board/atmel/at91rm9200ek/at91rm9200ek.c
at91rm9200ek: use atmel_usart
[karo-tx-uboot.git] / board / atmel / at91rm9200ek / at91rm9200ek.c
index 570a09a0741b2ed7c1cd2d4e88c1f7bb663979d7..ec0dabaaaa318432bb05375e37f288a0d83a13eb 100644 (file)
@@ -1,4 +1,8 @@
 /*
+ * (C) Copyright 2010 Andreas Bießmann <andreas.devel@gmail.com>
+ *
+ * derived from previous work
+ *
  * (C) Copyright 2002
  * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
  * Marius Groeger <mgroeger@sysgo.de>
  */
 
 #include <common.h>
-#include <exports.h>
 #include <netdev.h>
-#include <asm/arch/AT91RM9200.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/at91_pio.h>
+#include <asm/arch/at91_pmc.h>
+#include <asm/arch/at91_common.h>
 #include <asm/io.h>
-#if defined(CONFIG_DRIVER_ETHER)
-#include <at91rm9200_net.h>
-#include <dm9161.h>
-#endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
 /* ------------------------------------------------------------------------- */
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
+int board_init(void)
 {
-       /* Enable Ctrlc */
-       console_init_f ();
+       at91_pio_t *pio = (at91_pio_t *)AT91_PIO_BASE;
 
        /*
         * Correct IRDA resistor problem
         * Set PA23_TXD in Output
         */
-       writel(AT91C_PA23_TXD2, ((AT91PS_PIO) AT91C_BASE_PIOA)->PIO_OER);
-
-       /*
-        * memory and cpu-speed are setup before relocation
-        * so we do _nothing_ here
-        */
+       writel(ATMEL_PMX_AA_TXD2, &pio->pioa.oer);
 
        /* arch number of AT91RM9200EK-Board */
        gd->bd->bi_arch_number = MACH_TYPE_AT91RM9200EK;
        /* adress of boot parameters */
-       gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
        return 0;
 }
 
-int dram_init (void)
+int board_early_init_f(void)
 {
-       gd->bd->bi_dram[0].start = PHYS_SDRAM;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
+       at91_seriald_hw_init();
        return 0;
 }
 
-#if defined(CONFIG_DRIVER_ETHER) && defined(CONFIG_CMD_NET)
-/*
- * Name:
- *     at91rm9200_GetPhyInterface
- * Description:
- *     Initialise the interface functions to the PHY
- * Arguments:
- *     None
- * Return value:
- *     None
- */
-void at91rm9200_GetPhyInterface(AT91PS_PhyOps p_phyops)
+int dram_init (void)
 {
-       p_phyops->Init = dm9161_InitPhy;
-       p_phyops->IsPhyConnected = dm9161_IsPhyConnected;
-       p_phyops->GetLinkSpeed = dm9161_GetLinkSpeed;
-       p_phyops->AutoNegotiate = dm9161_AutoNegotiate;
+       /* dram_init must store complete ramsize in gd->ram_size */
+       gd->ram_size = get_ram_size((volatile long *)CONFIG_SYS_SDRAM_BASE,
+                       CONFIG_SYS_SDRAM_SIZE);
+       return 0;
 }
-#endif
 
 #ifdef CONFIG_DRIVER_AT91EMAC
 int board_eth_init(bd_t *bis)
 {
-       int rc = 0;
-       rc = at91emac_register(bis, 0);
-       return rc;
+       return at91emac_register(bis, (u32) ATMEL_BASE_EMAC);
 }
 #endif