1dbf8423eSJoseph Chen /* 2dbf8423eSJoseph Chen * (C) Copyright 2019 Rockchip Electronics Co., Ltd 3dbf8423eSJoseph Chen * 4dbf8423eSJoseph Chen * SPDX-License-Identifier: GPL-2.0+ 5dbf8423eSJoseph Chen */ 6dbf8423eSJoseph Chen 7dbf8423eSJoseph Chen #ifndef __ROCKCHIP_PARAM_H_ 8dbf8423eSJoseph Chen #define __ROCKCHIP_PARAM_H_ 9dbf8423eSJoseph Chen 106e15146eSJoseph Chen #include <memblk.h> 11dbf8423eSJoseph Chen 12dbf8423eSJoseph Chen /** 13*1a7a2cb2SXuhui Lin * ddr_mem_get_usable_size() - Get ddr memory region size that loader can use 14*1a7a2cb2SXuhui Lin * 15*1a7a2cb2SXuhui Lin * @base: ddr memory region base. 16*1a7a2cb2SXuhui Lin * @size: ddr memory region size. 17*1a7a2cb2SXuhui Lin * @return ddr memory region size that loader can use. 18*1a7a2cb2SXuhui Lin */ 19*1a7a2cb2SXuhui Lin phys_size_t ddr_mem_get_usable_size(u64 base, u64 size); 20*1a7a2cb2SXuhui Lin 21*1a7a2cb2SXuhui Lin /** 22b9bc76b4SJoseph Chen * param_parse_ddr_mem() - Parse ddr memory region 23b9bc76b4SJoseph Chen * 24b9bc76b4SJoseph Chen * @out_count: valid count of memblock for memblock list. 25b9bc76b4SJoseph Chen * @return memblock structure list which contains base and size info. 26b9bc76b4SJoseph Chen */ 27b9bc76b4SJoseph Chen struct memblock *param_parse_ddr_mem(int *out_count); 28b9bc76b4SJoseph Chen 29b9bc76b4SJoseph Chen /** 301a4d12c4SJoseph Chen * param_simple_parse_ddr_mem() - Simple parse ddr memory region 311a4d12c4SJoseph Chen */ 321a4d12c4SJoseph Chen #ifndef CONFIG_BIDRAM 331a4d12c4SJoseph Chen phys_size_t param_simple_parse_ddr_mem(int init_bank); 341a4d12c4SJoseph Chen #endif 351a4d12c4SJoseph Chen 361a4d12c4SJoseph Chen /** 37dbf8423eSJoseph Chen * param_parse_atf_mem() - Parse atf memory region 38dbf8423eSJoseph Chen * 396e15146eSJoseph Chen * @return memblock structure which contains base and size info. 40dbf8423eSJoseph Chen */ 416e15146eSJoseph Chen struct memblock param_parse_atf_mem(void); 42dbf8423eSJoseph Chen 43dbf8423eSJoseph Chen /** 44dbf8423eSJoseph Chen * param_parse_atf_mem() - Parse op-tee memory region 45dbf8423eSJoseph Chen * 466e15146eSJoseph Chen * @return memblock structure which contains base and size info. 47dbf8423eSJoseph Chen */ 486e15146eSJoseph Chen struct memblock param_parse_optee_mem(void); 49dbf8423eSJoseph Chen 50dbf8423eSJoseph Chen /** 51dbf8423eSJoseph Chen * param_parse_atf_mem() - Parse platform common reserved memory region 52dbf8423eSJoseph Chen * 536e15146eSJoseph Chen * @return memblock structure which contains base and size info. 54dbf8423eSJoseph Chen */ 556e15146eSJoseph Chen struct memblock param_parse_common_resv_mem(void); 56dbf8423eSJoseph Chen 57dbf8423eSJoseph Chen /** 585029b474SJoseph Chen * param_parse_atags_bootdev() - Parse boot device info from atags. 59dbf8423eSJoseph Chen * 60dbf8423eSJoseph Chen * @devtype: out data to store dev type 61dbf8423eSJoseph Chen * @devnum: out data to store dev number 62dbf8423eSJoseph Chen * 63dbf8423eSJoseph Chen * @return 0 on success, otherwise failed. 64dbf8423eSJoseph Chen */ 655029b474SJoseph Chen int param_parse_atags_bootdev(char **devtype, char **devtnum); 665029b474SJoseph Chen 675029b474SJoseph Chen /** 685029b474SJoseph Chen * param_parse_assign_bootdev() - Parse boot device info from configuration. 695029b474SJoseph Chen * 705029b474SJoseph Chen * @devtype: out data to store dev type 715029b474SJoseph Chen * @devnum: out data to store dev number 725029b474SJoseph Chen * 735029b474SJoseph Chen * @return 0 on success, otherwise failed. 745029b474SJoseph Chen */ 755029b474SJoseph Chen int param_parse_assign_bootdev(char **devtype, char **devtnum); 76dbf8423eSJoseph Chen 77045d3eaaSJoseph Chen /** 78045d3eaaSJoseph Chen * param_parse_pre_serial() - Parse and Init serial according to pre-loader serial. 79045d3eaaSJoseph Chen * 80045d3eaaSJoseph Chen * @return 0 on success, otherwise failed. 81045d3eaaSJoseph Chen */ 829d10124aSJoseph Chen int param_parse_pre_serial(int *flags); 83045d3eaaSJoseph Chen 84045d3eaaSJoseph Chen /** 85045d3eaaSJoseph Chen * param_parse_pubkey_fuse_programmed() - Parse and pass fuse programmed state. 86045d3eaaSJoseph Chen * 87045d3eaaSJoseph Chen * @return 0 on success, otherwise failed. 88045d3eaaSJoseph Chen */ 89045d3eaaSJoseph Chen int param_parse_pubkey_fuse_programmed(void); 90045d3eaaSJoseph Chen 91ad771a9cSHuibin Hong #ifdef CONFIG_PSTORE 92ad771a9cSHuibin Hong /** 93ad771a9cSHuibin Hong * param_parse_pstore() - Parse and Init pstore according to pre-loader atags. 94ad771a9cSHuibin Hong * 95ad771a9cSHuibin Hong * @return 0 on success, otherwise failed. 96ad771a9cSHuibin Hong */ 97ad771a9cSHuibin Hong int param_parse_pstore(void); 98ad771a9cSHuibin Hong #endif 99dbf8423eSJoseph Chen #endif 100