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