xref: /rk3399_ARM-atf/plat/qti/common/inc/qti_plat.h (revision 1c63cd61495542b0b52e1b6e484c59ce5c26e0d2)
15bd9c17dSSaurabh Gorecha /*
25bd9c17dSSaurabh Gorecha  * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
35bd9c17dSSaurabh Gorecha  * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
45bd9c17dSSaurabh Gorecha  *
55bd9c17dSSaurabh Gorecha  * SPDX-License-Identifier: BSD-3-Clause
65bd9c17dSSaurabh Gorecha  */
75bd9c17dSSaurabh Gorecha 
85bd9c17dSSaurabh Gorecha #ifndef QTI_PLAT_H
95bd9c17dSSaurabh Gorecha #define QTI_PLAT_H
105bd9c17dSSaurabh Gorecha 
115bd9c17dSSaurabh Gorecha #include <stdint.h>
125bd9c17dSSaurabh Gorecha 
135bd9c17dSSaurabh Gorecha #include <common/bl_common.h>
145bd9c17dSSaurabh Gorecha #include <lib/cassert.h>
155bd9c17dSSaurabh Gorecha #include <lib/el3_runtime/cpu_data.h>
165bd9c17dSSaurabh Gorecha #include <lib/xlat_tables/xlat_tables_v2.h>
175bd9c17dSSaurabh Gorecha 
185bd9c17dSSaurabh Gorecha /*
195bd9c17dSSaurabh Gorecha  * Utility functions common to QTI platforms
205bd9c17dSSaurabh Gorecha  */
215bd9c17dSSaurabh Gorecha int qti_mmap_add_dynamic_region(uintptr_t base_pa, size_t size,
225bd9c17dSSaurabh Gorecha 				unsigned int attr);
235bd9c17dSSaurabh Gorecha int qti_mmap_remove_dynamic_region(uintptr_t base_va, size_t size);
245bd9c17dSSaurabh Gorecha 
255bd9c17dSSaurabh Gorecha /*
265bd9c17dSSaurabh Gorecha  * Utility functions common to ARM standard platforms
275bd9c17dSSaurabh Gorecha  */
286cc743cfSSaurabh Gorecha void qti_setup_page_tables(
296cc743cfSSaurabh Gorecha 			   uintptr_t total_base,
305bd9c17dSSaurabh Gorecha 			   size_t total_size,
315bd9c17dSSaurabh Gorecha 			   uintptr_t code_start,
325bd9c17dSSaurabh Gorecha 			   uintptr_t code_limit,
335bd9c17dSSaurabh Gorecha 			   uintptr_t rodata_start,
346cc743cfSSaurabh Gorecha 			   uintptr_t rodata_limit
356cc743cfSSaurabh Gorecha 			  );
36*c48d0aefSSumit Garg int qti_io_setup(void);
37*c48d0aefSSumit Garg struct image_info *qti_get_image_info(unsigned int image_id);
385bd9c17dSSaurabh Gorecha 
395bd9c17dSSaurabh Gorecha /*
405bd9c17dSSaurabh Gorecha  * Mandatory functions required in ARM standard platforms
415bd9c17dSSaurabh Gorecha  */
425bd9c17dSSaurabh Gorecha void plat_qti_gic_driver_init(void);
435bd9c17dSSaurabh Gorecha void plat_qti_gic_init(void);
445bd9c17dSSaurabh Gorecha void plat_qti_gic_cpuif_enable(void);
455bd9c17dSSaurabh Gorecha void plat_qti_gic_cpuif_disable(void);
465bd9c17dSSaurabh Gorecha void plat_qti_gic_pcpu_init(void);
475bd9c17dSSaurabh Gorecha 
485bd9c17dSSaurabh Gorecha /*
495bd9c17dSSaurabh Gorecha  * Optional functions required in ARM standard platforms
505bd9c17dSSaurabh Gorecha  */
515bd9c17dSSaurabh Gorecha unsigned int plat_qti_core_pos_by_mpidr(u_register_t mpidr);
525bd9c17dSSaurabh Gorecha unsigned int plat_qti_my_cluster_pos(void);
535bd9c17dSSaurabh Gorecha 
545bd9c17dSSaurabh Gorecha void gic_set_spi_routing(unsigned int id, unsigned int irm, u_register_t mpidr);
555bd9c17dSSaurabh Gorecha 
56522a2277SJulius Werner void qti_pmic_prepare_reset(void);
57522a2277SJulius Werner void qti_pmic_prepare_shutdown(void);
58522a2277SJulius Werner 
5939fdd3d8SBharath N typedef struct chip_id_info {
6039fdd3d8SBharath N 	uint16_t jtag_id;
6139fdd3d8SBharath N 	uint16_t chipinfo_id;
6239fdd3d8SBharath N } chip_id_info_t;
6339fdd3d8SBharath N 
645bd9c17dSSaurabh Gorecha #endif /* QTI_PLAT_H */
65