xref: /rk3399_ARM-atf/plat/intel/soc/common/include/socfpga_handoff.h (revision 328718f2545a9aa2e731e141deb965baf8b6c6e6)
1*328718f2SHadi Asyrafi /*
2*328718f2SHadi Asyrafi  * Copyright (c) 2019, Intel Corporation. All rights reserved.
3*328718f2SHadi Asyrafi  *
4*328718f2SHadi Asyrafi  * SPDX-License-Identifier: BSD-3-Clause
5*328718f2SHadi Asyrafi  */
6*328718f2SHadi Asyrafi 
7*328718f2SHadi Asyrafi #ifndef	HANDOFF_H
8*328718f2SHadi Asyrafi #define	HANDOFF_H
9*328718f2SHadi Asyrafi 
10*328718f2SHadi Asyrafi #define HANDOFF_MAGIC_HEADER		0x424f4f54	/* BOOT */
11*328718f2SHadi Asyrafi #define HANDOFF_MAGIC_PINMUX_SEL	0x504d5558	/* PMUX */
12*328718f2SHadi Asyrafi #define HANDOFF_MAGIC_IOCTLR		0x494f4354	/* IOCT */
13*328718f2SHadi Asyrafi #define HANDOFF_MAGIC_FPGA		0x46504741	/* FPGA */
14*328718f2SHadi Asyrafi #define HANDOFF_MAGIC_IODELAY		0x444c4159	/* DLAY */
15*328718f2SHadi Asyrafi #define HANDOFF_MAGIC_CLOCK		0x434c4b53	/* CLKS */
16*328718f2SHadi Asyrafi #define HANDOFF_MAGIC_MISC		0x4d495343	/* MISC */
17*328718f2SHadi Asyrafi 
18*328718f2SHadi Asyrafi #include <socfpga_plat_def.h>
19*328718f2SHadi Asyrafi 
20*328718f2SHadi Asyrafi typedef struct handoff_t {
21*328718f2SHadi Asyrafi 	/* header */
22*328718f2SHadi Asyrafi 	uint32_t	header_magic;
23*328718f2SHadi Asyrafi 	uint32_t	header_device;
24*328718f2SHadi Asyrafi 	uint32_t	_pad_0x08_0x10[2];
25*328718f2SHadi Asyrafi 
26*328718f2SHadi Asyrafi 	/* pinmux configuration - select */
27*328718f2SHadi Asyrafi 	uint32_t	pinmux_sel_magic;
28*328718f2SHadi Asyrafi 	uint32_t	pinmux_sel_length;
29*328718f2SHadi Asyrafi 	uint32_t	_pad_0x18_0x20[2];
30*328718f2SHadi Asyrafi 	uint32_t	pinmux_sel_array[96];	/* offset, value */
31*328718f2SHadi Asyrafi 
32*328718f2SHadi Asyrafi 	/* pinmux configuration - io control */
33*328718f2SHadi Asyrafi 	uint32_t	pinmux_io_magic;
34*328718f2SHadi Asyrafi 	uint32_t	pinmux_io_length;
35*328718f2SHadi Asyrafi 	uint32_t	_pad_0x1a8_0x1b0[2];
36*328718f2SHadi Asyrafi 	uint32_t	pinmux_io_array[96];	/* offset, value */
37*328718f2SHadi Asyrafi 
38*328718f2SHadi Asyrafi 	/* pinmux configuration - use fpga switch */
39*328718f2SHadi Asyrafi 	uint32_t	pinmux_fpga_magic;
40*328718f2SHadi Asyrafi 	uint32_t	pinmux_fpga_length;
41*328718f2SHadi Asyrafi 	uint32_t	_pad_0x338_0x340[2];
42*328718f2SHadi Asyrafi 	uint32_t	pinmux_fpga_array[42];	/* offset, value */
43*328718f2SHadi Asyrafi 	uint32_t	_pad_0x3e8_0x3f0[2];
44*328718f2SHadi Asyrafi 
45*328718f2SHadi Asyrafi 	/* pinmux configuration - io delay */
46*328718f2SHadi Asyrafi 	uint32_t	pinmux_delay_magic;
47*328718f2SHadi Asyrafi 	uint32_t	pinmux_delay_length;
48*328718f2SHadi Asyrafi 	uint32_t	_pad_0x3f8_0x400[2];
49*328718f2SHadi Asyrafi 	uint32_t	pinmux_iodelay_array[96];	/* offset, value */
50*328718f2SHadi Asyrafi 
51*328718f2SHadi Asyrafi 	/* clock configuration */
52*328718f2SHadi Asyrafi 
53*328718f2SHadi Asyrafi #if PLATFORM_MODEL == PLAT_SOCFPGA_STRATIX10
54*328718f2SHadi Asyrafi 	uint32_t	clock_magic;
55*328718f2SHadi Asyrafi 	uint32_t	clock_length;
56*328718f2SHadi Asyrafi 	uint32_t	_pad_0x588_0x590[2];
57*328718f2SHadi Asyrafi 	uint32_t	main_pll_mpuclk;
58*328718f2SHadi Asyrafi 	uint32_t	main_pll_nocclk;
59*328718f2SHadi Asyrafi 	uint32_t	main_pll_cntr2clk;
60*328718f2SHadi Asyrafi 	uint32_t	main_pll_cntr3clk;
61*328718f2SHadi Asyrafi 	uint32_t	main_pll_cntr4clk;
62*328718f2SHadi Asyrafi 	uint32_t	main_pll_cntr5clk;
63*328718f2SHadi Asyrafi 	uint32_t	main_pll_cntr6clk;
64*328718f2SHadi Asyrafi 	uint32_t	main_pll_cntr7clk;
65*328718f2SHadi Asyrafi 	uint32_t	main_pll_cntr8clk;
66*328718f2SHadi Asyrafi 	uint32_t	main_pll_cntr9clk;
67*328718f2SHadi Asyrafi 	uint32_t	main_pll_nocdiv;
68*328718f2SHadi Asyrafi 	uint32_t	main_pll_pllglob;
69*328718f2SHadi Asyrafi 	uint32_t	main_pll_fdbck;
70*328718f2SHadi Asyrafi 	uint32_t	main_pll_pllc0;
71*328718f2SHadi Asyrafi 	uint32_t	main_pll_pllc1;
72*328718f2SHadi Asyrafi 	uint32_t	_pad_0x5cc_0x5d0[1];
73*328718f2SHadi Asyrafi 	uint32_t	per_pll_cntr2clk;
74*328718f2SHadi Asyrafi 	uint32_t	per_pll_cntr3clk;
75*328718f2SHadi Asyrafi 	uint32_t	per_pll_cntr4clk;
76*328718f2SHadi Asyrafi 	uint32_t	per_pll_cntr5clk;
77*328718f2SHadi Asyrafi 	uint32_t	per_pll_cntr6clk;
78*328718f2SHadi Asyrafi 	uint32_t	per_pll_cntr7clk;
79*328718f2SHadi Asyrafi 	uint32_t	per_pll_cntr8clk;
80*328718f2SHadi Asyrafi 	uint32_t	per_pll_cntr9clk;
81*328718f2SHadi Asyrafi 	uint32_t	per_pll_emacctl;
82*328718f2SHadi Asyrafi 	uint32_t	per_pll_gpiodiv;
83*328718f2SHadi Asyrafi 	uint32_t	per_pll_pllglob;
84*328718f2SHadi Asyrafi 	uint32_t	per_pll_fdbck;
85*328718f2SHadi Asyrafi 	uint32_t	per_pll_pllc0;
86*328718f2SHadi Asyrafi 	uint32_t	per_pll_pllc1;
87*328718f2SHadi Asyrafi 	uint32_t	hps_osc_clk_h;
88*328718f2SHadi Asyrafi 	uint32_t	fpga_clk_hz;
89*328718f2SHadi Asyrafi #elif PLATFORM_MODEL == PLAT_SOCFPGA_AGILEX
90*328718f2SHadi Asyrafi 	uint32_t	clock_magic;
91*328718f2SHadi Asyrafi 	uint32_t	clock_length;
92*328718f2SHadi Asyrafi 	uint32_t	_pad_0x588_0x590[2];
93*328718f2SHadi Asyrafi 	uint32_t	main_pll_mpuclk;
94*328718f2SHadi Asyrafi 	uint32_t	main_pll_nocclk;
95*328718f2SHadi Asyrafi 	uint32_t	main_pll_nocdiv;
96*328718f2SHadi Asyrafi 	uint32_t	main_pll_pllglob;
97*328718f2SHadi Asyrafi 	uint32_t	main_pll_fdbck;
98*328718f2SHadi Asyrafi 	uint32_t	main_pll_pllc0;
99*328718f2SHadi Asyrafi 	uint32_t	main_pll_pllc1;
100*328718f2SHadi Asyrafi 	uint32_t	main_pll_pllc2;
101*328718f2SHadi Asyrafi 	uint32_t	main_pll_pllc3;
102*328718f2SHadi Asyrafi 	uint32_t	main_pll_pllm;
103*328718f2SHadi Asyrafi 	uint32_t	per_pll_emacctl;
104*328718f2SHadi Asyrafi 	uint32_t	per_pll_gpiodiv;
105*328718f2SHadi Asyrafi 	uint32_t	per_pll_pllglob;
106*328718f2SHadi Asyrafi 	uint32_t	per_pll_fdbck;
107*328718f2SHadi Asyrafi 	uint32_t	per_pll_pllc0;
108*328718f2SHadi Asyrafi 	uint32_t	per_pll_pllc1;
109*328718f2SHadi Asyrafi 	uint32_t	per_pll_pllc2;
110*328718f2SHadi Asyrafi 	uint32_t	per_pll_pllc3;
111*328718f2SHadi Asyrafi 	uint32_t	per_pll_pllm;
112*328718f2SHadi Asyrafi 	uint32_t	alt_emacactr;
113*328718f2SHadi Asyrafi 	uint32_t	alt_emacbctr;
114*328718f2SHadi Asyrafi 	uint32_t	alt_emacptpctr;
115*328718f2SHadi Asyrafi 	uint32_t	alt_gpiodbctr;
116*328718f2SHadi Asyrafi 	uint32_t	alt_sdmmcctr;
117*328718f2SHadi Asyrafi 	uint32_t	alt_s2fuser0ctr;
118*328718f2SHadi Asyrafi 	uint32_t	alt_s2fuser1ctr;
119*328718f2SHadi Asyrafi 	uint32_t	alt_psirefctr;
120*328718f2SHadi Asyrafi 	uint32_t	hps_osc_clk_h;
121*328718f2SHadi Asyrafi 	uint32_t	fpga_clk_hz;
122*328718f2SHadi Asyrafi 	uint32_t	_pad_0x604_0x610[3];
123*328718f2SHadi Asyrafi #endif
124*328718f2SHadi Asyrafi 	/* misc configuration */
125*328718f2SHadi Asyrafi 	uint32_t	misc_magic;
126*328718f2SHadi Asyrafi 	uint32_t	misc_length;
127*328718f2SHadi Asyrafi 	uint32_t	_pad_0x618_0x620[2];
128*328718f2SHadi Asyrafi 	uint32_t	boot_source;
129*328718f2SHadi Asyrafi } handoff;
130*328718f2SHadi Asyrafi 
131*328718f2SHadi Asyrafi int verify_handoff_image(handoff *hoff_ptr, handoff *reverse_hoff_ptr);
132*328718f2SHadi Asyrafi int socfpga_get_handoff(handoff *hoff_ptr);
133*328718f2SHadi Asyrafi 
134*328718f2SHadi Asyrafi #endif
135*328718f2SHadi Asyrafi 
136*328718f2SHadi Asyrafi 
137