1cb82a532SUlf Samuelsson /* 2cb82a532SUlf Samuelsson * (C) Copyright 2002 3cb82a532SUlf Samuelsson * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 4cb82a532SUlf Samuelsson * Marius Groeger <mgroeger@sysgo.de> 5cb82a532SUlf Samuelsson * 6cb82a532SUlf Samuelsson * See file CREDITS for list of people who contributed to this 7cb82a532SUlf Samuelsson * project. 8cb82a532SUlf Samuelsson * 9cb82a532SUlf Samuelsson * This program is free software; you can redistribute it and/or 10cb82a532SUlf Samuelsson * modify it under the terms of the GNU General Public License as 11cb82a532SUlf Samuelsson * published by the Free Software Foundation; either version 2 of 12cb82a532SUlf Samuelsson * the License, or (at your option) any later version. 13cb82a532SUlf Samuelsson * 14cb82a532SUlf Samuelsson * This program is distributed in the hope that it will be useful, 15cb82a532SUlf Samuelsson * but WITHOUT ANY WARRANTY; without even the implied warranty of 16cb82a532SUlf Samuelsson * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17cb82a532SUlf Samuelsson * GNU General Public License for more details. 18cb82a532SUlf Samuelsson * 19cb82a532SUlf Samuelsson * You should have received a copy of the GNU General Public License 20cb82a532SUlf Samuelsson * along with this program; if not, write to the Free Software 21cb82a532SUlf Samuelsson * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 22cb82a532SUlf Samuelsson * MA 02111-1307 USA 23cb82a532SUlf Samuelsson */ 24cb82a532SUlf Samuelsson 25cb82a532SUlf Samuelsson #include <common.h> 26*c041e9d2SJens Scharsig #include <exports.h> 27*c041e9d2SJens Scharsig #include <netdev.h> 28cb82a532SUlf Samuelsson #include <asm/arch/AT91RM9200.h> 29*c041e9d2SJens Scharsig #include <asm/io.h> 30*c041e9d2SJens Scharsig #if defined(CONFIG_DRIVER_ETHER) 31cb82a532SUlf Samuelsson #include <at91rm9200_net.h> 32cb82a532SUlf Samuelsson #include <dm9161.h> 33*c041e9d2SJens Scharsig #endif 34cb82a532SUlf Samuelsson 35cb82a532SUlf Samuelsson DECLARE_GLOBAL_DATA_PTR; 36cb82a532SUlf Samuelsson 37cb82a532SUlf Samuelsson /* ------------------------------------------------------------------------- */ 38cb82a532SUlf Samuelsson /* 39cb82a532SUlf Samuelsson * Miscelaneous platform dependent initialisations 40cb82a532SUlf Samuelsson */ 41cb82a532SUlf Samuelsson 42cb82a532SUlf Samuelsson int board_init (void) 43cb82a532SUlf Samuelsson { 44cb82a532SUlf Samuelsson /* Enable Ctrlc */ 45cb82a532SUlf Samuelsson console_init_f (); 46cb82a532SUlf Samuelsson 47cb82a532SUlf Samuelsson /* 48cb82a532SUlf Samuelsson * Correct IRDA resistor problem 49cb82a532SUlf Samuelsson * Set PA23_TXD in Output 50cb82a532SUlf Samuelsson */ 51cb82a532SUlf Samuelsson writel(AT91C_PA23_TXD2, ((AT91PS_PIO) AT91C_BASE_PIOA)->PIO_OER); 52cb82a532SUlf Samuelsson 53cb82a532SUlf Samuelsson /* 54cb82a532SUlf Samuelsson * memory and cpu-speed are setup before relocation 55cb82a532SUlf Samuelsson * so we do _nothing_ here 56cb82a532SUlf Samuelsson */ 57cb82a532SUlf Samuelsson 58cb82a532SUlf Samuelsson /* arch number of AT91RM9200EK-Board */ 59cb82a532SUlf Samuelsson gd->bd->bi_arch_number = MACH_TYPE_AT91RM9200EK; 60cb82a532SUlf Samuelsson /* adress of boot parameters */ 61cb82a532SUlf Samuelsson gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; 62cb82a532SUlf Samuelsson 63cb82a532SUlf Samuelsson return 0; 64cb82a532SUlf Samuelsson } 65cb82a532SUlf Samuelsson 66cb82a532SUlf Samuelsson int dram_init (void) 67cb82a532SUlf Samuelsson { 68cb82a532SUlf Samuelsson gd->bd->bi_dram[0].start = PHYS_SDRAM; 69cb82a532SUlf Samuelsson gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE; 70cb82a532SUlf Samuelsson return 0; 71cb82a532SUlf Samuelsson } 72cb82a532SUlf Samuelsson 73cb82a532SUlf Samuelsson #if defined(CONFIG_DRIVER_ETHER) && defined(CONFIG_CMD_NET) 74cb82a532SUlf Samuelsson /* 75cb82a532SUlf Samuelsson * Name: 76cb82a532SUlf Samuelsson * at91rm9200_GetPhyInterface 77cb82a532SUlf Samuelsson * Description: 78cb82a532SUlf Samuelsson * Initialise the interface functions to the PHY 79cb82a532SUlf Samuelsson * Arguments: 80cb82a532SUlf Samuelsson * None 81cb82a532SUlf Samuelsson * Return value: 82cb82a532SUlf Samuelsson * None 83cb82a532SUlf Samuelsson */ 84cb82a532SUlf Samuelsson void at91rm9200_GetPhyInterface(AT91PS_PhyOps p_phyops) 85cb82a532SUlf Samuelsson { 86cb82a532SUlf Samuelsson p_phyops->Init = dm9161_InitPhy; 87cb82a532SUlf Samuelsson p_phyops->IsPhyConnected = dm9161_IsPhyConnected; 88cb82a532SUlf Samuelsson p_phyops->GetLinkSpeed = dm9161_GetLinkSpeed; 89cb82a532SUlf Samuelsson p_phyops->AutoNegotiate = dm9161_AutoNegotiate; 90cb82a532SUlf Samuelsson } 91cb82a532SUlf Samuelsson #endif 92*c041e9d2SJens Scharsig 93*c041e9d2SJens Scharsig #ifdef CONFIG_DRIVER_AT91EMAC 94*c041e9d2SJens Scharsig int board_eth_init(bd_t *bis) 95*c041e9d2SJens Scharsig { 96*c041e9d2SJens Scharsig int rc = 0; 97*c041e9d2SJens Scharsig rc = at91emac_register(bis, 0); 98*c041e9d2SJens Scharsig return rc; 99*c041e9d2SJens Scharsig } 100*c041e9d2SJens Scharsig #endif 101