1 /* 2 * Copyright (c) 2015-2020, Renesas Electronics Corporation. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef RCAR_PRIVATE_H 8 #define RCAR_PRIVATE_H 9 10 #include <common/bl_common.h> 11 #include <lib/bakery_lock.h> 12 #include <lib/el3_runtime/cpu_data.h> 13 14 #include <platform_def.h> 15 16 typedef volatile struct mailbox { 17 unsigned long value __aligned(CACHE_WRITEBACK_GRANULE); 18 } mailbox_t; 19 20 /* 21 * This structure represents the superset of information that is passed to 22 * BL31 e.g. while passing control to it from BL2 which is bl31_params 23 * and bl31_plat_params and its elements 24 */ 25 typedef struct bl2_to_bl31_params_mem { 26 image_info_t bl32_image_info; 27 image_info_t bl33_image_info; 28 entry_point_info_t bl33_ep_info; 29 entry_point_info_t bl32_ep_info; 30 } bl2_to_bl31_params_mem_t; 31 32 #if USE_COHERENT_MEM 33 #define RCAR_INSTANTIATE_LOCK DEFINE_BAKERY_LOCK(rcar_lock); 34 #define rcar_lock_init() bakery_lock_init(&rcar_lock) 35 #define rcar_lock_get() bakery_lock_get(&rcar_lock) 36 #define rcar_lock_release() bakery_lock_release(&rcar_lock) 37 #else 38 /* 39 * Constants to specify how many bakery locks this platform implements. These 40 * are used if the platform chooses not to use coherent memory for bakery lock 41 * data structures. 42 */ 43 #define RCAR_MAX_BAKERIES 2 44 #define RCAR_PWRC_BAKERY_ID 0 45 46 /* 47 * Definition of structure which holds platform specific per-cpu data. Currently 48 * it holds only the bakery lock information for each cpu. Constants to 49 * specify how many bakeries this platform implements and bakery ids are 50 * specified in rcar_def.h 51 */ 52 typedef struct rcar_cpu_data { 53 bakery_info_t pcpu_bakery_info[RCAR_MAX_BAKERIES]; 54 } rcar_cpu_data_t; 55 #endif 56 /* 57 * Function and variable prototypes 58 */ 59 void rcar_configure_mmu_el3(unsigned long total_base, 60 unsigned long total_size, 61 unsigned long ro_start, unsigned long ro_limit 62 #if USE_COHERENT_MEM 63 , unsigned long coh_start, unsigned long coh_limit 64 #endif 65 ); 66 67 void rcar_setup_topology(void); 68 void rcar_cci_disable(void); 69 void rcar_cci_enable(void); 70 void rcar_cci_init(void); 71 72 void plat_invalidate_icache(void); 73 void plat_cci_disable(void); 74 void plat_cci_enable(void); 75 void plat_cci_init(void); 76 77 void mstpcr_write(uint32_t mstpcr, uint32_t mstpsr, uint32_t target_bit); 78 void cpg_write(uintptr_t regadr, uint32_t regval); 79 80 void rcar_console_boot_init(void); 81 void rcar_console_boot_end(void); 82 void rcar_console_runtime_init(void); 83 void rcar_console_runtime_end(void); 84 85 #endif /* RCAR_PRIVATE_H */ 86