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