1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
2cb82a532SUlf Samuelsson /*
309c2b8f3SAndreas Bießmann  * (C) Copyright 2010 Andreas Bießmann <andreas@biessmann.org>
499fa97e9SAndreas Bießmann  *
599fa97e9SAndreas Bießmann  * derived from previous work
699fa97e9SAndreas Bießmann  *
7cb82a532SUlf Samuelsson  * (C) Copyright 2002
8cb82a532SUlf Samuelsson  * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
9cb82a532SUlf Samuelsson  * Marius Groeger <mgroeger@sysgo.de>
10cb82a532SUlf Samuelsson  */
11cb82a532SUlf Samuelsson 
12cb82a532SUlf Samuelsson #include <common.h>
13c041e9d2SJens Scharsig #include <netdev.h>
14c62db35dSSimon Glass #include <asm/mach-types.h>
1599fa97e9SAndreas Bießmann #include <asm/arch/hardware.h>
1699fa97e9SAndreas Bießmann #include <asm/arch/at91_pio.h>
173432a93bSAndreas Bießmann #include <asm/arch/at91_common.h>
18c041e9d2SJens Scharsig #include <asm/io.h>
19cb82a532SUlf Samuelsson 
20cb82a532SUlf Samuelsson DECLARE_GLOBAL_DATA_PTR;
21cb82a532SUlf Samuelsson 
22cb82a532SUlf Samuelsson /* ------------------------------------------------------------------------- */
board_init(void)23cb82a532SUlf Samuelsson int board_init(void)
24cb82a532SUlf Samuelsson {
2599fa97e9SAndreas Bießmann 	at91_pio_t *pio = (at91_pio_t *)AT91_PIO_BASE;
26cb82a532SUlf Samuelsson 
27cb82a532SUlf Samuelsson 	/*
28cb82a532SUlf Samuelsson 	 * Correct IRDA resistor problem
29cb82a532SUlf Samuelsson 	 * Set PA23_TXD in Output
30cb82a532SUlf Samuelsson 	 */
3180733994SJens Scharsig 	writel(ATMEL_PMX_AA_TXD2, &pio->pioa.oer);
32cb82a532SUlf Samuelsson 
33cb82a532SUlf Samuelsson 	/* arch number of AT91RM9200EK-Board */
34cb82a532SUlf Samuelsson 	gd->bd->bi_arch_number = MACH_TYPE_AT91RM9200EK;
35cb82a532SUlf Samuelsson 	/* adress of boot parameters */
3699fa97e9SAndreas Bießmann 	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
37cb82a532SUlf Samuelsson 
38cb82a532SUlf Samuelsson 	return 0;
39cb82a532SUlf Samuelsson }
40cb82a532SUlf Samuelsson 
board_early_init_f(void)413432a93bSAndreas Bießmann int board_early_init_f(void)
423432a93bSAndreas Bießmann {
433432a93bSAndreas Bießmann 	at91_seriald_hw_init();
443432a93bSAndreas Bießmann 	return 0;
453432a93bSAndreas Bießmann }
463432a93bSAndreas Bießmann 
dram_init(void)47cb82a532SUlf Samuelsson int dram_init (void)
48cb82a532SUlf Samuelsson {
4999fa97e9SAndreas Bießmann 	/* dram_init must store complete ramsize in gd->ram_size */
50a55d23ccSAlbert ARIBAUD 	gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
5199fa97e9SAndreas Bießmann 			CONFIG_SYS_SDRAM_SIZE);
52cb82a532SUlf Samuelsson 	return 0;
53cb82a532SUlf Samuelsson }
54cb82a532SUlf Samuelsson 
55c041e9d2SJens Scharsig #ifdef CONFIG_DRIVER_AT91EMAC
board_eth_init(bd_t * bis)56c041e9d2SJens Scharsig int board_eth_init(bd_t *bis)
57c041e9d2SJens Scharsig {
5880733994SJens Scharsig 	return at91emac_register(bis, (u32) ATMEL_BASE_EMAC);
59c041e9d2SJens Scharsig }
60c041e9d2SJens Scharsig #endif
61