xref: /rk3399_ARM-atf/plat/socionext/uniphier/uniphier.h (revision 93c78ed231a6ea30f1c30ecbbb0f245fa9d75075)
1d8e919c7SMasahiro Yamada /*
2247fc043SMasahiro Yamada  * Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
3d8e919c7SMasahiro Yamada  *
4d8e919c7SMasahiro Yamada  * SPDX-License-Identifier: BSD-3-Clause
5d8e919c7SMasahiro Yamada  */
6d8e919c7SMasahiro Yamada 
7d8e919c7SMasahiro Yamada #ifndef __UNIPHIER_H__
8d8e919c7SMasahiro Yamada #define __UNIPHIER_H__
9d8e919c7SMasahiro Yamada 
10d8e919c7SMasahiro Yamada #include <stdint.h>
11*93c78ed2SAntonio Nino Diaz #include <string.h>
12d8e919c7SMasahiro Yamada 
13d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_type(void);
14d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_model(void);
15d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_revision(void);
16d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_id(void);
17d8e919c7SMasahiro Yamada 
18d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_LD11		0
19d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_LD20		1
20d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_PXS3		2
21d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_UNKNOWN		0xffffffff
22d8e919c7SMasahiro Yamada 
23d8e919c7SMasahiro Yamada unsigned int uniphier_get_boot_device(unsigned int soc);
24d8e919c7SMasahiro Yamada 
25d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_EMMC	0
26d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_NAND	1
27d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_NOR	2
28d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_USB	3
29d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_RSV	0xffffffff
30d8e919c7SMasahiro Yamada 
31d8e919c7SMasahiro Yamada unsigned int uniphier_get_boot_master(unsigned int soc);
32d8e919c7SMasahiro Yamada 
33d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_THIS	0
34d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_SCP	1
35d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_EXT	2
36d8e919c7SMasahiro Yamada 
37d8e919c7SMasahiro Yamada void uniphier_console_setup(void);
38d8e919c7SMasahiro Yamada 
39d8e919c7SMasahiro Yamada int uniphier_emmc_init(uintptr_t *block_dev_spec);
40d8e919c7SMasahiro Yamada int uniphier_nand_init(uintptr_t *block_dev_spec);
41d8e919c7SMasahiro Yamada int uniphier_usb_init(unsigned int soc, uintptr_t *block_dev_spec);
42d8e919c7SMasahiro Yamada 
43d8e919c7SMasahiro Yamada int uniphier_io_setup(unsigned int soc);
44d8e919c7SMasahiro Yamada int uniphier_check_image(unsigned int image_id);
450ac60c08SMasahiro Yamada 
460ac60c08SMasahiro Yamada struct image_info;
470ac60c08SMasahiro Yamada struct image_info *uniphier_get_image_info(unsigned int image_id);
48d8e919c7SMasahiro Yamada 
49d8e919c7SMasahiro Yamada int uniphier_scp_is_running(void);
50d8e919c7SMasahiro Yamada void uniphier_scp_start(void);
51d8e919c7SMasahiro Yamada void uniphier_scp_open_com(void);
52d8e919c7SMasahiro Yamada void uniphier_scp_system_off(void);
53d8e919c7SMasahiro Yamada void uniphier_scp_system_reset(void);
54d8e919c7SMasahiro Yamada 
55d8e919c7SMasahiro Yamada struct mmap_region;
56d8e919c7SMasahiro Yamada void uniphier_mmap_setup(uintptr_t total_base, size_t total_size,
57d8e919c7SMasahiro Yamada 			 const struct mmap_region *mmap);
58d8e919c7SMasahiro Yamada 
59d8e919c7SMasahiro Yamada void uniphier_cci_init(unsigned int soc);
60d8e919c7SMasahiro Yamada void uniphier_cci_enable(void);
61d8e919c7SMasahiro Yamada void uniphier_cci_disable(void);
62d8e919c7SMasahiro Yamada 
63d8e919c7SMasahiro Yamada void uniphier_gic_driver_init(unsigned int soc);
64d8e919c7SMasahiro Yamada void uniphier_gic_init(void);
65d8e919c7SMasahiro Yamada void uniphier_gic_cpuif_enable(void);
66d8e919c7SMasahiro Yamada void uniphier_gic_cpuif_disable(void);
67d8e919c7SMasahiro Yamada void uniphier_gic_pcpu_init(void);
68d8e919c7SMasahiro Yamada 
69d8e919c7SMasahiro Yamada unsigned int uniphier_calc_core_pos(u_register_t mpidr);
70d8e919c7SMasahiro Yamada 
71d8e919c7SMasahiro Yamada #define UNIPHIER_NS_DRAM_BASE		0x84000000
72247fc043SMasahiro Yamada #define UNIPHIER_NS_DRAM_LIMIT		0x85000000
73247fc043SMasahiro Yamada #define UNIPHIER_NS_DRAM_SIZE		((UNIPHIER_NS_DRAM_LIMIT) - \
74247fc043SMasahiro Yamada 					 (UNIPHIER_NS_DRAM_BASE))
75d8e919c7SMasahiro Yamada 
76d8e919c7SMasahiro Yamada #define UNIPHIER_BL33_BASE		(UNIPHIER_NS_DRAM_BASE)
77d8e919c7SMasahiro Yamada #define UNIPHIER_BL33_MAX_SIZE		0x00100000
78d8e919c7SMasahiro Yamada 
79d8e919c7SMasahiro Yamada #define UNIPHIER_SCP_BASE		((UNIPHIER_BL33_BASE) + \
80d8e919c7SMasahiro Yamada 					 (UNIPHIER_BL33_MAX_SIZE))
81d8e919c7SMasahiro Yamada #define UNIPHIER_SCP_MAX_SIZE		0x00020000
82d8e919c7SMasahiro Yamada 
83247fc043SMasahiro Yamada #define UNIPHIER_BLOCK_BUF_BASE		((UNIPHIER_SCP_BASE) + \
84247fc043SMasahiro Yamada 					 (UNIPHIER_SCP_MAX_SIZE))
858951b058SMasahiro Yamada #define UNIPHIER_BLOCK_BUF_SIZE		0x00100000
868951b058SMasahiro Yamada 
878951b058SMasahiro Yamada #define UNIPHIER_IMAGE_BUF_BASE		((UNIPHIER_BLOCK_BUF_BASE) + \
888951b058SMasahiro Yamada 					 (UNIPHIER_BLOCK_BUF_SIZE))
898951b058SMasahiro Yamada #define UNIPHIER_IMAGE_BUF_SIZE		((UNIPHIER_NS_DRAM_LIMIT) - \
908951b058SMasahiro Yamada 					 (UNIPHIER_IMAGE_BUF_BASE))
91247fc043SMasahiro Yamada 
92d8e919c7SMasahiro Yamada #endif /* __UNIPHIER_H__ */
93