xref: /rk3399_ARM-atf/plat/socionext/uniphier/uniphier.h (revision d8e919c7b81a2739300912d6edbd3f929a136dbf)
1*d8e919c7SMasahiro Yamada /*
2*d8e919c7SMasahiro Yamada  * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
3*d8e919c7SMasahiro Yamada  *
4*d8e919c7SMasahiro Yamada  * SPDX-License-Identifier: BSD-3-Clause
5*d8e919c7SMasahiro Yamada  */
6*d8e919c7SMasahiro Yamada 
7*d8e919c7SMasahiro Yamada #ifndef __UNIPHIER_H__
8*d8e919c7SMasahiro Yamada #define __UNIPHIER_H__
9*d8e919c7SMasahiro Yamada 
10*d8e919c7SMasahiro Yamada #include <stdint.h>
11*d8e919c7SMasahiro Yamada #include <types.h>
12*d8e919c7SMasahiro Yamada 
13*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_type(void);
14*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_model(void);
15*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_revision(void);
16*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_id(void);
17*d8e919c7SMasahiro Yamada 
18*d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_LD11		0
19*d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_LD20		1
20*d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_PXS3		2
21*d8e919c7SMasahiro Yamada #define UNIPHIER_SOC_UNKNOWN		0xffffffff
22*d8e919c7SMasahiro Yamada 
23*d8e919c7SMasahiro Yamada unsigned int uniphier_get_boot_device(unsigned int soc);
24*d8e919c7SMasahiro Yamada 
25*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_EMMC	0
26*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_NAND	1
27*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_NOR	2
28*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_USB	3
29*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_DEVICE_RSV	0xffffffff
30*d8e919c7SMasahiro Yamada 
31*d8e919c7SMasahiro Yamada unsigned int uniphier_get_boot_master(unsigned int soc);
32*d8e919c7SMasahiro Yamada 
33*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_THIS	0
34*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_SCP	1
35*d8e919c7SMasahiro Yamada #define UNIPHIER_BOOT_MASTER_EXT	2
36*d8e919c7SMasahiro Yamada 
37*d8e919c7SMasahiro Yamada void uniphier_console_setup(void);
38*d8e919c7SMasahiro Yamada 
39*d8e919c7SMasahiro Yamada int uniphier_emmc_init(uintptr_t *block_dev_spec);
40*d8e919c7SMasahiro Yamada int uniphier_nand_init(uintptr_t *block_dev_spec);
41*d8e919c7SMasahiro Yamada int uniphier_usb_init(unsigned int soc, uintptr_t *block_dev_spec);
42*d8e919c7SMasahiro Yamada 
43*d8e919c7SMasahiro Yamada int uniphier_io_setup(unsigned int soc);
44*d8e919c7SMasahiro Yamada int uniphier_check_image(unsigned int image_id);
45*d8e919c7SMasahiro Yamada void uniphier_image_descs_fixup(void);
46*d8e919c7SMasahiro Yamada 
47*d8e919c7SMasahiro Yamada int uniphier_scp_is_running(void);
48*d8e919c7SMasahiro Yamada void uniphier_scp_start(void);
49*d8e919c7SMasahiro Yamada void uniphier_scp_open_com(void);
50*d8e919c7SMasahiro Yamada void uniphier_scp_system_off(void);
51*d8e919c7SMasahiro Yamada void uniphier_scp_system_reset(void);
52*d8e919c7SMasahiro Yamada 
53*d8e919c7SMasahiro Yamada struct mmap_region;
54*d8e919c7SMasahiro Yamada void uniphier_mmap_setup(uintptr_t total_base, size_t total_size,
55*d8e919c7SMasahiro Yamada 			 const struct mmap_region *mmap);
56*d8e919c7SMasahiro Yamada 
57*d8e919c7SMasahiro Yamada void uniphier_cci_init(unsigned int soc);
58*d8e919c7SMasahiro Yamada void uniphier_cci_enable(void);
59*d8e919c7SMasahiro Yamada void uniphier_cci_disable(void);
60*d8e919c7SMasahiro Yamada 
61*d8e919c7SMasahiro Yamada void uniphier_gic_driver_init(unsigned int soc);
62*d8e919c7SMasahiro Yamada void uniphier_gic_init(void);
63*d8e919c7SMasahiro Yamada void uniphier_gic_cpuif_enable(void);
64*d8e919c7SMasahiro Yamada void uniphier_gic_cpuif_disable(void);
65*d8e919c7SMasahiro Yamada void uniphier_gic_pcpu_init(void);
66*d8e919c7SMasahiro Yamada 
67*d8e919c7SMasahiro Yamada unsigned int uniphier_calc_core_pos(u_register_t mpidr);
68*d8e919c7SMasahiro Yamada 
69*d8e919c7SMasahiro Yamada #define UNIPHIER_NS_DRAM_BASE		0x84000000
70*d8e919c7SMasahiro Yamada #define UNIPHIER_NS_DRAM_SIZE		0x01000000
71*d8e919c7SMasahiro Yamada 
72*d8e919c7SMasahiro Yamada #define UNIPHIER_BL33_BASE		(UNIPHIER_NS_DRAM_BASE)
73*d8e919c7SMasahiro Yamada #define UNIPHIER_BL33_MAX_SIZE		0x00100000
74*d8e919c7SMasahiro Yamada 
75*d8e919c7SMasahiro Yamada #define UNIPHIER_SCP_BASE		((UNIPHIER_BL33_BASE) + \
76*d8e919c7SMasahiro Yamada 					 (UNIPHIER_BL33_MAX_SIZE))
77*d8e919c7SMasahiro Yamada #define UNIPHIER_SCP_MAX_SIZE		0x00020000
78*d8e919c7SMasahiro Yamada 
79*d8e919c7SMasahiro Yamada #endif /* __UNIPHIER_H__ */
80