108b167e9SHaojian Zhuang /* 208b167e9SHaojian Zhuang * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. 308b167e9SHaojian Zhuang * 408b167e9SHaojian Zhuang * SPDX-License-Identifier: BSD-3-Clause 508b167e9SHaojian Zhuang */ 608b167e9SHaojian Zhuang 7c3cf06f1SAntonio Nino Diaz #ifndef HIKEY_PRIVATE_H 8c3cf06f1SAntonio Nino Diaz #define HIKEY_PRIVATE_H 908b167e9SHaojian Zhuang 1009d40e0eSAntonio Nino Diaz #include <common/bl_common.h> 1108b167e9SHaojian Zhuang 1208b167e9SHaojian Zhuang #define RANDOM_MAX 0x7fffffffffffffff 1308b167e9SHaojian Zhuang #define RANDOM_MAGIC 0x9a4dbeaf 1408b167e9SHaojian Zhuang 15483dce7eSHaojian Zhuang enum { 16483dce7eSHaojian Zhuang DDR_FREQ_150M = 150 * 1000, 17483dce7eSHaojian Zhuang DDR_FREQ_266M = 266 * 1000, 18483dce7eSHaojian Zhuang DDR_FREQ_400M = 400 * 1000, 19483dce7eSHaojian Zhuang DDR_FREQ_533M = 533 * 1000, 20483dce7eSHaojian Zhuang DDR_FREQ_800M = 800 * 1000 21483dce7eSHaojian Zhuang }; 22483dce7eSHaojian Zhuang 2308b167e9SHaojian Zhuang struct random_serial_num { 2408b167e9SHaojian Zhuang uint64_t magic; 2508b167e9SHaojian Zhuang uint64_t data; 2608b167e9SHaojian Zhuang char serialno[32]; 2708b167e9SHaojian Zhuang }; 2808b167e9SHaojian Zhuang 2908b167e9SHaojian Zhuang /* 3008b167e9SHaojian Zhuang * Function and variable prototypes 3108b167e9SHaojian Zhuang */ 3208b167e9SHaojian Zhuang void hikey_init_mmu_el1(unsigned long total_base, 3308b167e9SHaojian Zhuang unsigned long total_size, 3408b167e9SHaojian Zhuang unsigned long ro_start, 3508b167e9SHaojian Zhuang unsigned long ro_limit, 3608b167e9SHaojian Zhuang unsigned long coh_start, 3708b167e9SHaojian Zhuang unsigned long coh_limit); 3808b167e9SHaojian Zhuang void hikey_init_mmu_el3(unsigned long total_base, 3908b167e9SHaojian Zhuang unsigned long total_size, 4008b167e9SHaojian Zhuang unsigned long ro_start, 4108b167e9SHaojian Zhuang unsigned long ro_limit, 4208b167e9SHaojian Zhuang unsigned long coh_start, 4308b167e9SHaojian Zhuang unsigned long coh_limit); 4408b167e9SHaojian Zhuang 45483dce7eSHaojian Zhuang void hikey_ddr_init(unsigned int ddr_freq); 4608b167e9SHaojian Zhuang void hikey_io_setup(void); 4708b167e9SHaojian Zhuang 48054c3e0fSHaojian Zhuang void hikey_sp804_init(void); 49054c3e0fSHaojian Zhuang void hikey_gpio_init(void); 50054c3e0fSHaojian Zhuang void hikey_pmussi_init(void); 51054c3e0fSHaojian Zhuang void hikey_hi6553_init(void); 52054c3e0fSHaojian Zhuang void init_mmc0_pll(void); 53054c3e0fSHaojian Zhuang void reset_mmc0_clk(void); 54054c3e0fSHaojian Zhuang void init_media_clk(void); 55054c3e0fSHaojian Zhuang void init_mmc1_pll(void); 56054c3e0fSHaojian Zhuang void reset_mmc1_clk(void); 57054c3e0fSHaojian Zhuang void hikey_mmc_pll_init(void); 58054c3e0fSHaojian Zhuang void hikey_rtc_init(void); 59054c3e0fSHaojian Zhuang 6008b167e9SHaojian Zhuang int hikey_get_partition_size(const char *arg, int left, char *response); 6108b167e9SHaojian Zhuang int hikey_get_partition_type(const char *arg, int left, char *response); 6208b167e9SHaojian Zhuang 6308b167e9SHaojian Zhuang int hikey_erase(const char *arg); 6408b167e9SHaojian Zhuang int hikey_flash(const char *arg); 6508b167e9SHaojian Zhuang int hikey_oem(const char *arg); 6608b167e9SHaojian Zhuang int hikey_reboot(const char *arg); 673d5d9f5aSJerome Forissier void hikey_security_setup(void); 6808b167e9SHaojian Zhuang 6908b167e9SHaojian Zhuang const char *hikey_init_serialno(void); 7008b167e9SHaojian Zhuang int hikey_read_serialno(struct random_serial_num *serialno); 7108b167e9SHaojian Zhuang int hikey_write_serialno(struct random_serial_num *serialno); 7208b167e9SHaojian Zhuang 7308b167e9SHaojian Zhuang void init_acpu_dvfs(void); 7408b167e9SHaojian Zhuang 75*deb330cbSHaojian Zhuang int hikey_set_fip_addr(unsigned int image_id, const char *name); 76*deb330cbSHaojian Zhuang 77c3cf06f1SAntonio Nino Diaz #endif /* HIKEY_PRIVATE_H */ 78