blob: 36a00c39b7f9883bc3483224c320ab0bec662abc [file] [log] [blame]
Dinh Nguyenad51f7c2012-10-04 06:46:02 +00001/*
2 * Copyright (C) 2012 Altera Corporation <www.altera.com>
3 *
Wolfgang Denkd79de1d2013-07-08 09:37:19 +02004 * SPDX-License-Identifier: GPL-2.0+
Dinh Nguyenad51f7c2012-10-04 06:46:02 +00005 */
6
7#include <common.h>
8#include <asm/io.h>
9#include <asm/u-boot.h>
10#include <asm/utils.h>
11#include <version.h>
12#include <image.h>
Dinh Nguyenad51f7c2012-10-04 06:46:02 +000013#include <asm/arch/reset_manager.h>
14#include <spl.h>
Chin Liang See70fa4e72013-09-11 11:24:48 -050015#include <asm/arch/system_manager.h>
Chin Liang See6ae44732013-12-02 12:01:39 -060016#include <asm/arch/freeze_controller.h>
Dinh Nguyenad51f7c2012-10-04 06:46:02 +000017
18DECLARE_GLOBAL_DATA_PTR;
19
20u32 spl_boot_device(void)
21{
22 return BOOT_DEVICE_RAM;
23}
24
25/*
26 * Board initialization after bss clearance
27 */
28void spl_board_init(void)
29{
Chin Liang See70fa4e72013-09-11 11:24:48 -050030#ifndef CONFIG_SOCFPGA_VIRTUAL_TARGET
Chin Liang See6ae44732013-12-02 12:01:39 -060031 debug("Freezing all I/O banks\n");
32 /* freeze all IO banks */
33 sys_mgr_frzctrl_freeze_req();
34
Chin Liang See70fa4e72013-09-11 11:24:48 -050035 /* configure the pin muxing through system manager */
36 sysmgr_pinmux_init();
37#endif /* CONFIG_SOCFPGA_VIRTUAL_TARGET */
38
Dinh Nguyenad51f7c2012-10-04 06:46:02 +000039 /* de-assert reset for peripherals and bridges based on handoff */
40 reset_deassert_peripherals_handoff();
41
Chin Liang See6ae44732013-12-02 12:01:39 -060042 debug("Unfreezing/Thaw all I/O banks\n");
43 /* unfreeze / thaw all IO banks */
44 sys_mgr_frzctrl_thaw_req();
45
Dinh Nguyenad51f7c2012-10-04 06:46:02 +000046 /* enable console uart printing */
47 preloader_console_init();
48}