1*b45b5bacSMarek Vasut /* 2*b45b5bacSMarek Vasut * Copyright (c) 2015-2025, Renesas Electronics Corporation. All rights reserved. 3*b45b5bacSMarek Vasut * 4*b45b5bacSMarek Vasut * SPDX-License-Identifier: BSD-3-Clause 5*b45b5bacSMarek Vasut */ 6*b45b5bacSMarek Vasut 7*b45b5bacSMarek Vasut #ifndef RCAR_PRIVATE_H 8*b45b5bacSMarek Vasut #define RCAR_PRIVATE_H 9*b45b5bacSMarek Vasut 10*b45b5bacSMarek Vasut #include <common/bl_common.h> 11*b45b5bacSMarek Vasut #include <lib/bakery_lock.h> 12*b45b5bacSMarek Vasut #include <lib/el3_runtime/cpu_data.h> 13*b45b5bacSMarek Vasut #include <lib/mmio.h> 14*b45b5bacSMarek Vasut 15*b45b5bacSMarek Vasut #include <platform_def.h> 16*b45b5bacSMarek Vasut 17*b45b5bacSMarek Vasut /* 18*b45b5bacSMarek Vasut * This structure represents the superset of information that is passed to 19*b45b5bacSMarek Vasut * BL31 e.g. while passing control to it from BL2 which is bl31_params 20*b45b5bacSMarek Vasut * and bl31_plat_params and its elements 21*b45b5bacSMarek Vasut */ 22*b45b5bacSMarek Vasut typedef struct bl2_to_bl31_params_mem { 23*b45b5bacSMarek Vasut image_info_t bl32_image_info; 24*b45b5bacSMarek Vasut image_info_t bl33_image_info; 25*b45b5bacSMarek Vasut entry_point_info_t bl33_ep_info; 26*b45b5bacSMarek Vasut entry_point_info_t bl32_ep_info; 27*b45b5bacSMarek Vasut } bl2_to_bl31_params_mem_t; 28*b45b5bacSMarek Vasut 29*b45b5bacSMarek Vasut #define RCAR_INSTANTIATE_LOCK DEFINE_BAKERY_LOCK(rcar_lock) 30*b45b5bacSMarek Vasut /* 31*b45b5bacSMarek Vasut * Constants to specify how many bakery locks this platform implements. These 32*b45b5bacSMarek Vasut * are used if the platform chooses not to use coherent memory for bakery lock 33*b45b5bacSMarek Vasut * data structures. 34*b45b5bacSMarek Vasut */ 35*b45b5bacSMarek Vasut #define RCAR_MAX_BAKERIES 2 36*b45b5bacSMarek Vasut 37*b45b5bacSMarek Vasut /* 38*b45b5bacSMarek Vasut * Definition of structure which holds platform specific per-cpu data. Currently 39*b45b5bacSMarek Vasut * it holds only the bakery lock information for each cpu. Constants to 40*b45b5bacSMarek Vasut * specify how many bakeries this platform implements and bakery ids are 41*b45b5bacSMarek Vasut * specified in rcar_def.h 42*b45b5bacSMarek Vasut */ 43*b45b5bacSMarek Vasut typedef struct rcar_cpu_data { 44*b45b5bacSMarek Vasut bakery_info_t pcpu_bakery_info[RCAR_MAX_BAKERIES]; 45*b45b5bacSMarek Vasut } rcar_cpu_data_t; 46*b45b5bacSMarek Vasut 47*b45b5bacSMarek Vasut /* 48*b45b5bacSMarek Vasut * Helper macros for bakery lock api when using the above rcar_cpu_data_t for 49*b45b5bacSMarek Vasut * bakery lock data structures. It assumes that the bakery_info is at the 50*b45b5bacSMarek Vasut * beginning of the platform specific per-cpu data. 51*b45b5bacSMarek Vasut */ 52*b45b5bacSMarek Vasut #define rcar_lock_init() bakery_lock_init(&rcar_lock) 53*b45b5bacSMarek Vasut #define rcar_lock_get() bakery_lock_get(&rcar_lock) 54*b45b5bacSMarek Vasut #define rcar_lock_release() bakery_lock_release(&rcar_lock) 55*b45b5bacSMarek Vasut 56*b45b5bacSMarek Vasut /* 57*b45b5bacSMarek Vasut * Function and variable prototypes 58*b45b5bacSMarek Vasut */ 59*b45b5bacSMarek Vasut void rcar_configure_mmu_el3(uintptr_t total_base, 60*b45b5bacSMarek Vasut size_t total_size, 61*b45b5bacSMarek Vasut uintptr_t ro_start, 62*b45b5bacSMarek Vasut uintptr_t ro_limit 63*b45b5bacSMarek Vasut ); 64*b45b5bacSMarek Vasut 65*b45b5bacSMarek Vasut 66*b45b5bacSMarek Vasut void plat_invalidate_icache(void); 67*b45b5bacSMarek Vasut 68*b45b5bacSMarek Vasut void rcar_console_boot_init(void); 69*b45b5bacSMarek Vasut void rcar_console_runtime_init(void); 70*b45b5bacSMarek Vasut 71*b45b5bacSMarek Vasut int32_t rcar_cluster_pos_by_mpidr(u_register_t mpidr); 72*b45b5bacSMarek Vasut 73*b45b5bacSMarek Vasut #endif /* RCAR_PRIVATE_H */ 74