xref: /rk3399_rockchip-uboot/board/samsung/smdk5420/smdk5420_spl.c (revision 7f673c99c2d8d1aa21996c5b914f06d784b080ca)
1*e106bd9bSRajeshwari Birje /*
2*e106bd9bSRajeshwari Birje  * Copyright (C) 2013 The Chromium OS Authors.
3*e106bd9bSRajeshwari Birje  *
4*e106bd9bSRajeshwari Birje  * SPDX-License-Identifier:	GPL-2.0+
5*e106bd9bSRajeshwari Birje  */
6*e106bd9bSRajeshwari Birje 
7*e106bd9bSRajeshwari Birje #include <common.h>
8*e106bd9bSRajeshwari Birje #include <asm/arch/cpu.h>
9*e106bd9bSRajeshwari Birje #include <asm/arch/spl.h>
10*e106bd9bSRajeshwari Birje #include <asm/arch/clk.h>
11*e106bd9bSRajeshwari Birje 
12*e106bd9bSRajeshwari Birje #define SIGNATURE	0xdeadbeef
13*e106bd9bSRajeshwari Birje 
14*e106bd9bSRajeshwari Birje /* Parameters of early board initialization in SPL */
15*e106bd9bSRajeshwari Birje static struct spl_machine_param machine_param
16*e106bd9bSRajeshwari Birje 		__attribute__((section(".machine_param"))) = {
17*e106bd9bSRajeshwari Birje 	.signature	= SIGNATURE,
18*e106bd9bSRajeshwari Birje 	.version	= 1,
19*e106bd9bSRajeshwari Birje 	.params		= "vmubfasirM",
20*e106bd9bSRajeshwari Birje 	.size		= sizeof(machine_param),
21*e106bd9bSRajeshwari Birje 
22*e106bd9bSRajeshwari Birje 	.mem_iv_size	= 0x1f,
23*e106bd9bSRajeshwari Birje 	.mem_type	= DDR_MODE_DDR3,
24*e106bd9bSRajeshwari Birje 
25*e106bd9bSRajeshwari Birje 	/*
26*e106bd9bSRajeshwari Birje 	 * Set uboot_size to 0x100000 bytes.
27*e106bd9bSRajeshwari Birje 	 *
28*e106bd9bSRajeshwari Birje 	 * This is an overly conservative value chosen to accommodate all
29*e106bd9bSRajeshwari Birje 	 * possible U-Boot image.  You are advised to set this value to a
30*e106bd9bSRajeshwari Birje 	 * smaller realistic size via scripts that modifies the .machine_param
31*e106bd9bSRajeshwari Birje 	 * section of output U-Boot image.
32*e106bd9bSRajeshwari Birje 	 */
33*e106bd9bSRajeshwari Birje 	.uboot_size	= 0x100000,
34*e106bd9bSRajeshwari Birje 
35*e106bd9bSRajeshwari Birje 	.boot_source	= BOOT_MODE_OM,
36*e106bd9bSRajeshwari Birje 	.frequency_mhz	= 800,
37*e106bd9bSRajeshwari Birje 	.arm_freq_mhz	= 900,
38*e106bd9bSRajeshwari Birje 	.serial_base	= 0x12c30000,
39*e106bd9bSRajeshwari Birje 	.i2c_base	= 0x12c60000,
40*e106bd9bSRajeshwari Birje 	.mem_manuf	= MEM_MANUF_SAMSUNG,
41*e106bd9bSRajeshwari Birje };
42*e106bd9bSRajeshwari Birje 
spl_get_machine_params(void)43*e106bd9bSRajeshwari Birje struct spl_machine_param *spl_get_machine_params(void)
44*e106bd9bSRajeshwari Birje {
45*e106bd9bSRajeshwari Birje 	if (machine_param.signature != SIGNATURE) {
46*e106bd9bSRajeshwari Birje 		/* Will hang if SIGNATURE dont match */
47*e106bd9bSRajeshwari Birje 		while (1)
48*e106bd9bSRajeshwari Birje 			;
49*e106bd9bSRajeshwari Birje 	}
50*e106bd9bSRajeshwari Birje 
51*e106bd9bSRajeshwari Birje 	return &machine_param;
52*e106bd9bSRajeshwari Birje }
53