xref: /arm-trusted-firmware/plat/hisilicon/hikey/hikey_private.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #ifndef HIKEY_PRIVATE_H
8*91f16700Schasinglulu #define HIKEY_PRIVATE_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #include <common/bl_common.h>
11*91f16700Schasinglulu 
12*91f16700Schasinglulu #define RANDOM_MAX		0x7fffffffffffffff
13*91f16700Schasinglulu #define RANDOM_MAGIC		0x9a4dbeaf
14*91f16700Schasinglulu 
15*91f16700Schasinglulu enum {
16*91f16700Schasinglulu 	DDR_FREQ_150M = 150 * 1000,
17*91f16700Schasinglulu 	DDR_FREQ_266M = 266 * 1000,
18*91f16700Schasinglulu 	DDR_FREQ_400M = 400 * 1000,
19*91f16700Schasinglulu 	DDR_FREQ_533M = 533 * 1000,
20*91f16700Schasinglulu 	DDR_FREQ_800M = 800 * 1000
21*91f16700Schasinglulu };
22*91f16700Schasinglulu 
23*91f16700Schasinglulu struct random_serial_num {
24*91f16700Schasinglulu 	uint64_t	magic;
25*91f16700Schasinglulu 	uint64_t	data;
26*91f16700Schasinglulu 	char		serialno[32];
27*91f16700Schasinglulu };
28*91f16700Schasinglulu 
29*91f16700Schasinglulu /*
30*91f16700Schasinglulu  * Function and variable prototypes
31*91f16700Schasinglulu  */
32*91f16700Schasinglulu void hikey_init_mmu_el1(unsigned long total_base,
33*91f16700Schasinglulu 			unsigned long total_size,
34*91f16700Schasinglulu 			unsigned long ro_start,
35*91f16700Schasinglulu 			unsigned long ro_limit,
36*91f16700Schasinglulu 			unsigned long coh_start,
37*91f16700Schasinglulu 			unsigned long coh_limit);
38*91f16700Schasinglulu void hikey_init_mmu_el3(unsigned long total_base,
39*91f16700Schasinglulu 			unsigned long total_size,
40*91f16700Schasinglulu 			unsigned long ro_start,
41*91f16700Schasinglulu 			unsigned long ro_limit,
42*91f16700Schasinglulu 			unsigned long coh_start,
43*91f16700Schasinglulu 			unsigned long coh_limit);
44*91f16700Schasinglulu 
45*91f16700Schasinglulu void hikey_ddr_init(unsigned int ddr_freq);
46*91f16700Schasinglulu void hikey_io_setup(void);
47*91f16700Schasinglulu 
48*91f16700Schasinglulu void hikey_sp804_init(void);
49*91f16700Schasinglulu void hikey_gpio_init(void);
50*91f16700Schasinglulu void hikey_pmussi_init(void);
51*91f16700Schasinglulu void hikey_hi6553_init(void);
52*91f16700Schasinglulu void init_mmc0_pll(void);
53*91f16700Schasinglulu void reset_mmc0_clk(void);
54*91f16700Schasinglulu void init_media_clk(void);
55*91f16700Schasinglulu void init_mmc1_pll(void);
56*91f16700Schasinglulu void reset_mmc1_clk(void);
57*91f16700Schasinglulu void hikey_mmc_pll_init(void);
58*91f16700Schasinglulu void hikey_rtc_init(void);
59*91f16700Schasinglulu 
60*91f16700Schasinglulu int hikey_get_partition_size(const char *arg, int left, char *response);
61*91f16700Schasinglulu int hikey_get_partition_type(const char *arg, int left, char *response);
62*91f16700Schasinglulu 
63*91f16700Schasinglulu int hikey_erase(const char *arg);
64*91f16700Schasinglulu int hikey_flash(const char *arg);
65*91f16700Schasinglulu int hikey_oem(const char *arg);
66*91f16700Schasinglulu int hikey_reboot(const char *arg);
67*91f16700Schasinglulu void hikey_security_setup(void);
68*91f16700Schasinglulu 
69*91f16700Schasinglulu const char *hikey_init_serialno(void);
70*91f16700Schasinglulu int hikey_read_serialno(struct random_serial_num *serialno);
71*91f16700Schasinglulu int hikey_write_serialno(struct random_serial_num *serialno);
72*91f16700Schasinglulu 
73*91f16700Schasinglulu void init_acpu_dvfs(void);
74*91f16700Schasinglulu 
75*91f16700Schasinglulu int hikey_set_fip_addr(unsigned int image_id, const char *name);
76*91f16700Schasinglulu 
77*91f16700Schasinglulu #endif /* HIKEY_PRIVATE_H */
78