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