xref: /rk3399_ARM-atf/plat/amlogic/gxbb/gxbb_common.c (revision 1ac928ce41ec86df3b5b62d007cace35c309e85a)
14a079c75SCarlo Caione /*
24a079c75SCarlo Caione  * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved.
34a079c75SCarlo Caione  *
44a079c75SCarlo Caione  * SPDX-License-Identifier: BSD-3-Clause
54a079c75SCarlo Caione  */
64a079c75SCarlo Caione 
74a079c75SCarlo Caione #include <assert.h>
84a079c75SCarlo Caione #include <bl31/interrupt_mgmt.h>
94a079c75SCarlo Caione #include <common/bl_common.h>
104a079c75SCarlo Caione #include <common/ep_info.h>
114a079c75SCarlo Caione #include <lib/mmio.h>
124a079c75SCarlo Caione #include <lib/xlat_tables/xlat_tables_v2.h>
13*b5621874SCarlo Caione #include <platform_def.h>
14*b5621874SCarlo Caione #include <stdint.h>
154a079c75SCarlo Caione 
164a079c75SCarlo Caione /*******************************************************************************
174a079c75SCarlo Caione  * Platform memory map regions
184a079c75SCarlo Caione  ******************************************************************************/
199158854aSCarlo Caione #define MAP_NSDRAM0	MAP_REGION_FLAT(AML_NSDRAM0_BASE,		\
209158854aSCarlo Caione 					AML_NSDRAM0_SIZE,		\
214a079c75SCarlo Caione 					MT_MEMORY | MT_RW | MT_NS)
224a079c75SCarlo Caione 
239158854aSCarlo Caione #define MAP_NSDRAM1	MAP_REGION_FLAT(AML_NSDRAM1_BASE,		\
249158854aSCarlo Caione 					AML_NSDRAM1_SIZE,		\
254a079c75SCarlo Caione 					MT_MEMORY | MT_RW | MT_NS)
264a079c75SCarlo Caione 
279158854aSCarlo Caione #define MAP_SEC_DEVICE0	MAP_REGION_FLAT(AML_SEC_DEVICE0_BASE,		\
289158854aSCarlo Caione 					AML_SEC_DEVICE0_SIZE,		\
294a079c75SCarlo Caione 					MT_DEVICE | MT_RW | MT_SECURE)
304a079c75SCarlo Caione 
319158854aSCarlo Caione #define MAP_SEC_DEVICE1	MAP_REGION_FLAT(AML_SEC_DEVICE1_BASE,		\
329158854aSCarlo Caione 					AML_SEC_DEVICE1_SIZE,		\
334a079c75SCarlo Caione 					MT_DEVICE | MT_RW | MT_SECURE)
344a079c75SCarlo Caione 
359158854aSCarlo Caione #define MAP_TZRAM	MAP_REGION_FLAT(AML_TZRAM_BASE,			\
369158854aSCarlo Caione 					AML_TZRAM_SIZE,			\
374a079c75SCarlo Caione 					MT_DEVICE | MT_RW | MT_SECURE)
384a079c75SCarlo Caione 
399158854aSCarlo Caione #define MAP_SEC_DEVICE2	MAP_REGION_FLAT(AML_SEC_DEVICE2_BASE,		\
409158854aSCarlo Caione 					AML_SEC_DEVICE2_SIZE,		\
414a079c75SCarlo Caione 					MT_DEVICE | MT_RW | MT_SECURE)
424a079c75SCarlo Caione 
439158854aSCarlo Caione #define MAP_SEC_DEVICE3	MAP_REGION_FLAT(AML_SEC_DEVICE3_BASE,		\
449158854aSCarlo Caione 					AML_SEC_DEVICE3_SIZE,		\
454a079c75SCarlo Caione 					MT_DEVICE | MT_RW | MT_SECURE)
464a079c75SCarlo Caione 
474a079c75SCarlo Caione static const mmap_region_t gxbb_mmap[] = {
484a079c75SCarlo Caione 	MAP_NSDRAM0,
494a079c75SCarlo Caione 	MAP_NSDRAM1,
504a079c75SCarlo Caione 	MAP_SEC_DEVICE0,
514a079c75SCarlo Caione 	MAP_SEC_DEVICE1,
524a079c75SCarlo Caione 	MAP_TZRAM,
534a079c75SCarlo Caione 	MAP_SEC_DEVICE2,
544a079c75SCarlo Caione 	MAP_SEC_DEVICE3,
554a079c75SCarlo Caione 	{0}
564a079c75SCarlo Caione };
574a079c75SCarlo Caione 
584a079c75SCarlo Caione /*******************************************************************************
594a079c75SCarlo Caione  * Per-image regions
604a079c75SCarlo Caione  ******************************************************************************/
614a079c75SCarlo Caione #define MAP_BL31	MAP_REGION_FLAT(BL31_BASE,			\
624a079c75SCarlo Caione 				BL31_END - BL31_BASE,			\
634a079c75SCarlo Caione 				MT_MEMORY | MT_RW | MT_SECURE)
644a079c75SCarlo Caione 
654a079c75SCarlo Caione #define MAP_BL_CODE	MAP_REGION_FLAT(BL_CODE_BASE,			\
664a079c75SCarlo Caione 				BL_CODE_END - BL_CODE_BASE,		\
674a079c75SCarlo Caione 				MT_CODE | MT_SECURE)
684a079c75SCarlo Caione 
694a079c75SCarlo Caione #define MAP_BL_RO_DATA	MAP_REGION_FLAT(BL_RO_DATA_BASE,		\
704a079c75SCarlo Caione 				BL_RO_DATA_END - BL_RO_DATA_BASE,	\
714a079c75SCarlo Caione 				MT_RO_DATA | MT_SECURE)
724a079c75SCarlo Caione 
734a079c75SCarlo Caione #define MAP_BL_COHERENT	MAP_REGION_FLAT(BL_COHERENT_RAM_BASE,		\
744a079c75SCarlo Caione 				BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE, \
754a079c75SCarlo Caione 				MT_DEVICE | MT_RW | MT_SECURE)
764a079c75SCarlo Caione 
774a079c75SCarlo Caione /*******************************************************************************
784a079c75SCarlo Caione  * Function that sets up the translation tables.
794a079c75SCarlo Caione  ******************************************************************************/
aml_setup_page_tables(void)80010fdc1bSCarlo Caione void aml_setup_page_tables(void)
814a079c75SCarlo Caione {
824a079c75SCarlo Caione #if IMAGE_BL31
834a079c75SCarlo Caione 	const mmap_region_t gxbb_bl_mmap[] = {
844a079c75SCarlo Caione 		MAP_BL31,
854a079c75SCarlo Caione 		MAP_BL_CODE,
864a079c75SCarlo Caione 		MAP_BL_RO_DATA,
874a079c75SCarlo Caione #if USE_COHERENT_MEM
884a079c75SCarlo Caione 		MAP_BL_COHERENT,
894a079c75SCarlo Caione #endif
904a079c75SCarlo Caione 		{0}
914a079c75SCarlo Caione 	};
924a079c75SCarlo Caione #endif
934a079c75SCarlo Caione 
944a079c75SCarlo Caione 	mmap_add(gxbb_bl_mmap);
954a079c75SCarlo Caione 
964a079c75SCarlo Caione 	mmap_add(gxbb_mmap);
974a079c75SCarlo Caione 
984a079c75SCarlo Caione 	init_xlat_tables();
994a079c75SCarlo Caione }
1004a079c75SCarlo Caione 
1014a079c75SCarlo Caione /*******************************************************************************
1024a079c75SCarlo Caione  * Function that returns the system counter frequency
1034a079c75SCarlo Caione  ******************************************************************************/
plat_get_syscnt_freq2(void)1044a079c75SCarlo Caione unsigned int plat_get_syscnt_freq2(void)
1054a079c75SCarlo Caione {
1064a079c75SCarlo Caione 	uint32_t val;
1074a079c75SCarlo Caione 
1089158854aSCarlo Caione 	val = mmio_read_32(AML_SYS_CPU_CFG7);
1094a079c75SCarlo Caione 	val &= 0xFDFFFFFF;
1109158854aSCarlo Caione 	mmio_write_32(AML_SYS_CPU_CFG7, val);
1114a079c75SCarlo Caione 
1129158854aSCarlo Caione 	val = mmio_read_32(AML_AO_TIMESTAMP_CNTL);
1134a079c75SCarlo Caione 	val &= 0xFFFFFE00;
1149158854aSCarlo Caione 	mmio_write_32(AML_AO_TIMESTAMP_CNTL, val);
1154a079c75SCarlo Caione 
1169158854aSCarlo Caione 	return AML_OSC24M_CLK_IN_HZ;
1174a079c75SCarlo Caione }
118