Home | History | Annotate | Download | only in scp
      1 /*
      2  * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
      3  *
      4  * SPDX-License-Identifier: BSD-3-Clause
      5  */
      6 
      7 #ifndef __CSS_SCP_H__
      8 #define __CSS_SCP_H__
      9 
     10 #include <cassert.h>
     11 #include <platform_def.h>
     12 #include <types.h>
     13 
     14 /* Forward declarations */
     15 struct psci_power_state;
     16 
     17 /* API for power management by SCP */
     18 int css_system_reset2(int is_vendor, int reset_type, u_register_t cookie);
     19 void css_scp_suspend(const struct psci_power_state *target_state);
     20 void css_scp_off(const struct psci_power_state *target_state);
     21 void css_scp_on(u_register_t mpidr);
     22 int css_scp_get_power_state(u_register_t mpidr, unsigned int power_level);
     23 void __dead2 css_scp_sys_shutdown(void);
     24 void __dead2 css_scp_sys_reboot(void);
     25 void __dead2 css_scp_system_off(int state);
     26 
     27 /* API for SCP Boot Image transfer. Return 0 on success, -1 on error */
     28 int css_scp_boot_image_xfer(void *image, unsigned int image_size);
     29 
     30 /*
     31  * API to wait for SCP to signal till it's ready after booting the transferred
     32  * image.
     33  */
     34 int css_scp_boot_ready(void);
     35 
     36 #if CSS_LOAD_SCP_IMAGES
     37 /*
     38  * All CSS platforms load SCP_BL2/SCP_BL2U just below BL rw-data and above
     39  * BL2/BL2U (this is where BL31 usually resides except when ARM_BL31_IN_DRAM is
     40  * set. Ensure that SCP_BL2/SCP_BL2U do not overflow into BL1 rw-data nor
     41  * BL2/BL2U.
     42  */
     43 CASSERT(SCP_BL2_LIMIT <= BL1_RW_BASE, assert_scp_bl2_limit_overwrite_bl1);
     44 CASSERT(SCP_BL2U_LIMIT <= BL1_RW_BASE, assert_scp_bl2u_limit_overwrite_bl1);
     45 
     46 CASSERT(SCP_BL2_BASE >= BL2_LIMIT, assert_scp_bl2_overwrite_bl2);
     47 CASSERT(SCP_BL2U_BASE >= BL2U_LIMIT, assert_scp_bl2u_overwrite_bl2u);
     48 #endif
     49 
     50 #endif	/* __CSS_SCP_H__ */
     51