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