xref: /openbmc/u-boot/board/samsung/arndale/arndale.c (revision cc2b1012cbdb0422fc96d6e6c813baed0722f373)
1a2ac68fbSChander Kashyap /*
2a2ac68fbSChander Kashyap  * Copyright (C) 2013 Samsung Electronics
3a2ac68fbSChander Kashyap  *
4a2ac68fbSChander Kashyap  * SPDX-License-Identifier:	GPL-2.0+
5a2ac68fbSChander Kashyap  */
6a2ac68fbSChander Kashyap 
7a2ac68fbSChander Kashyap #include <common.h>
8a2ac68fbSChander Kashyap #include <asm/arch/pinmux.h>
9*cc2b1012SInderpal Singh #include <asm/arch/dwmmc.h>
10a2ac68fbSChander Kashyap #include <asm/arch/power.h>
11a2ac68fbSChander Kashyap 
12a2ac68fbSChander Kashyap DECLARE_GLOBAL_DATA_PTR;
13a2ac68fbSChander Kashyap 
14a2ac68fbSChander Kashyap int board_init(void)
15a2ac68fbSChander Kashyap {
16a2ac68fbSChander Kashyap 	gd->bd->bi_boot_params = (PHYS_SDRAM_1 + 0x100UL);
17a2ac68fbSChander Kashyap 	return 0;
18a2ac68fbSChander Kashyap }
19a2ac68fbSChander Kashyap 
20a2ac68fbSChander Kashyap int dram_init(void)
21a2ac68fbSChander Kashyap {
22a2ac68fbSChander Kashyap 	int i;
23a2ac68fbSChander Kashyap 	u32 addr;
24a2ac68fbSChander Kashyap 
25a2ac68fbSChander Kashyap 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
26a2ac68fbSChander Kashyap 		addr = CONFIG_SYS_SDRAM_BASE + (i * SDRAM_BANK_SIZE);
27a2ac68fbSChander Kashyap 		gd->ram_size += get_ram_size((long *)addr, SDRAM_BANK_SIZE);
28a2ac68fbSChander Kashyap 	}
29a2ac68fbSChander Kashyap 	return 0;
30a2ac68fbSChander Kashyap }
31a2ac68fbSChander Kashyap 
32a2ac68fbSChander Kashyap int power_init_board(void)
33a2ac68fbSChander Kashyap {
34a2ac68fbSChander Kashyap 	set_ps_hold_ctrl();
35a2ac68fbSChander Kashyap 	return 0;
36a2ac68fbSChander Kashyap }
37a2ac68fbSChander Kashyap 
38a2ac68fbSChander Kashyap void dram_init_banksize(void)
39a2ac68fbSChander Kashyap {
40a2ac68fbSChander Kashyap 	int i;
41a2ac68fbSChander Kashyap 	u32 addr, size;
42a2ac68fbSChander Kashyap 
43a2ac68fbSChander Kashyap 	for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
44a2ac68fbSChander Kashyap 		addr = CONFIG_SYS_SDRAM_BASE + (i * SDRAM_BANK_SIZE);
45a2ac68fbSChander Kashyap 		size = get_ram_size((long *)addr, SDRAM_BANK_SIZE);
46a2ac68fbSChander Kashyap 
47a2ac68fbSChander Kashyap 		gd->bd->bi_dram[i].start = addr;
48a2ac68fbSChander Kashyap 		gd->bd->bi_dram[i].size = size;
49a2ac68fbSChander Kashyap 	}
50a2ac68fbSChander Kashyap }
51a2ac68fbSChander Kashyap 
52*cc2b1012SInderpal Singh #ifdef CONFIG_GENERIC_MMC
53*cc2b1012SInderpal Singh int board_mmc_init(bd_t *bis)
54*cc2b1012SInderpal Singh {
55*cc2b1012SInderpal Singh 	int ret;
56*cc2b1012SInderpal Singh 	/* dwmmc initializattion for available channels */
57*cc2b1012SInderpal Singh 	ret = exynos_dwmmc_init(gd->fdt_blob);
58*cc2b1012SInderpal Singh 	if (ret)
59*cc2b1012SInderpal Singh 		debug("dwmmc init failed\n");
60*cc2b1012SInderpal Singh 
61*cc2b1012SInderpal Singh 	return ret;
62*cc2b1012SInderpal Singh }
63*cc2b1012SInderpal Singh #endif
64*cc2b1012SInderpal Singh 
65a2ac68fbSChander Kashyap static int board_uart_init(void)
66a2ac68fbSChander Kashyap {
67a2ac68fbSChander Kashyap 	int err = 0, uart_id;
68a2ac68fbSChander Kashyap 
69a2ac68fbSChander Kashyap 	for (uart_id = PERIPH_ID_UART0; uart_id <= PERIPH_ID_UART3; uart_id++) {
70a2ac68fbSChander Kashyap 		err = exynos_pinmux_config(uart_id, PINMUX_FLAG_NONE);
71a2ac68fbSChander Kashyap 		if (err) {
72a2ac68fbSChander Kashyap 			debug("UART%d not configured\n",
73a2ac68fbSChander Kashyap 			      (uart_id - PERIPH_ID_UART0));
74a2ac68fbSChander Kashyap 			return err;
75a2ac68fbSChander Kashyap 		}
76a2ac68fbSChander Kashyap 	}
77a2ac68fbSChander Kashyap 	return err;
78a2ac68fbSChander Kashyap }
79a2ac68fbSChander Kashyap 
80a2ac68fbSChander Kashyap #ifdef CONFIG_BOARD_EARLY_INIT_F
81a2ac68fbSChander Kashyap int board_early_init_f(void)
82a2ac68fbSChander Kashyap {
83a2ac68fbSChander Kashyap 	int err;
84a2ac68fbSChander Kashyap 
85a2ac68fbSChander Kashyap 	err = board_uart_init();
86a2ac68fbSChander Kashyap 	if (err) {
87a2ac68fbSChander Kashyap 		debug("UART init failed\n");
88a2ac68fbSChander Kashyap 		return err;
89a2ac68fbSChander Kashyap 	}
90a2ac68fbSChander Kashyap 	return err;
91a2ac68fbSChander Kashyap }
92a2ac68fbSChander Kashyap #endif
93a2ac68fbSChander Kashyap 
94a2ac68fbSChander Kashyap #ifdef CONFIG_DISPLAY_BOARDINFO
95a2ac68fbSChander Kashyap int checkboard(void)
96a2ac68fbSChander Kashyap {
97a2ac68fbSChander Kashyap 	printf("\nBoard: Arndale\n");
98a2ac68fbSChander Kashyap 
99a2ac68fbSChander Kashyap 	return 0;
100a2ac68fbSChander Kashyap }
101a2ac68fbSChander Kashyap #endif
102