diff --git a/Makefile b/Makefile index 800312c94feabd1afb4e4b0d7a271ca02967d5fc..bb5098b2365b1eb4f45ff7975e788d21c8672992 100644 --- a/Makefile +++ b/Makefile @@ -226,20 +226,24 @@ BL_COMMON_SOURCES += common/bl_common.c \ plat/common/aarch64/platform_helpers.S \ ${STDLIB_SRCS} -INCLUDES += -Iinclude/bl1 \ - -Iinclude/bl31 \ - -Iinclude/bl31/services \ - -Iinclude/common \ - -Iinclude/drivers \ - -Iinclude/drivers/arm \ - -Iinclude/drivers/auth \ - -Iinclude/drivers/io \ - -Iinclude/drivers/ti/uart \ - -Iinclude/lib \ - -Iinclude/lib/aarch64 \ - -Iinclude/lib/cpus/aarch64 \ - -Iinclude/plat/common \ - ${PLAT_INCLUDES} \ +INCLUDES += -Iinclude/bl1 \ + -Iinclude/bl31 \ + -Iinclude/common \ + -Iinclude/common/aarch64 \ + -Iinclude/drivers \ + -Iinclude/drivers/arm \ + -Iinclude/drivers/auth \ + -Iinclude/drivers/io \ + -Iinclude/drivers/ti/uart \ + -Iinclude/lib \ + -Iinclude/lib/aarch64 \ + -Iinclude/lib/cpus/aarch64 \ + -Iinclude/lib/el3_runtime \ + -Iinclude/lib/el3_runtime/aarch64 \ + -Iinclude/lib/psci \ + -Iinclude/plat/common \ + -Iinclude/services \ + ${PLAT_INCLUDES} \ ${SPD_INCLUDES} diff --git a/bl1/bl1.mk b/bl1/bl1.mk index 21e87c79cf0d2e7d83c9dd285eee72af90ba3eef..591e047b44ab8b8f15ff74277a8375ee431f44fb 100644 --- a/bl1/bl1.mk +++ b/bl1/bl1.mk @@ -1,5 +1,5 @@ # -# Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. +# Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: @@ -33,9 +33,9 @@ BL1_SOURCES += bl1/bl1_main.c \ bl1/aarch64/bl1_entrypoint.S \ bl1/aarch64/bl1_exceptions.S \ bl1/bl1_context_mgmt.c \ - common/aarch64/context.S \ - common/context_mgmt.c \ lib/cpus/aarch64/cpu_helpers.S \ + lib/el3_runtime/aarch64/context.S \ + lib/el3_runtime/aarch64/context_mgmt.c \ plat/common/plat_bl1_common.c ifeq (${TRUSTED_BOARD_BOOT},1) diff --git a/bl31/bl31.mk b/bl31/bl31.mk index 8a7fccb0d7168f20e904bcbe70e5ffc35f6d71ca..dd3e4cf19935235ed3b74bb42ddb2eda38b6e3da 100644 --- a/bl31/bl31.mk +++ b/bl31/bl31.mk @@ -28,45 +28,23 @@ # POSSIBILITY OF SUCH DAMAGE. # +include lib/psci/psci_lib.mk + BL31_SOURCES += bl31/bl31_main.c \ - bl31/cpu_data_array.c \ - bl31/runtime_svc.c \ bl31/interrupt_mgmt.c \ bl31/aarch64/bl31_arch_setup.c \ bl31/aarch64/bl31_entrypoint.S \ - bl31/aarch64/cpu_data.S \ bl31/aarch64/runtime_exceptions.S \ bl31/aarch64/crash_reporting.S \ bl31/bl31_context_mgmt.c \ - common/aarch64/context.S \ - common/context_mgmt.c \ - lib/cpus/aarch64/cpu_helpers.S \ - lib/locks/exclusive/spinlock.S \ + common/runtime_svc.c \ services/std_svc/std_svc_setup.c \ - services/std_svc/psci/psci_off.c \ - services/std_svc/psci/psci_on.c \ - services/std_svc/psci/psci_suspend.c \ - services/std_svc/psci/psci_common.c \ - services/std_svc/psci/psci_entry.S \ - services/std_svc/psci/psci_helpers.S \ - services/std_svc/psci/psci_main.c \ - services/std_svc/psci/psci_setup.c \ - services/std_svc/psci/psci_system_off.c - -ifeq (${USE_COHERENT_MEM}, 1) -BL31_SOURCES += lib/locks/bakery/bakery_lock_coherent.c -else -BL31_SOURCES += lib/locks/bakery/bakery_lock_normal.c -endif + ${PSCI_LIB_SOURCES} ifeq (${ENABLE_PMF}, 1) BL31_SOURCES += lib/pmf/pmf_main.c endif -ifeq (${ENABLE_PSCI_STAT}, 1) -BL31_SOURCES += services/std_svc/psci/psci_stat.c -endif - BL31_LINKERFILE := bl31/bl31.ld.S # Flag used to indicate if Crash reporting via console should be included diff --git a/bl31/bl31_context_mgmt.c b/bl31/bl31_context_mgmt.c index ae2442471a980b030511fecb046b59980292fc7b..f8751c2ab0aa96f1e850fd2c4beaac64421ce36e 100644 --- a/bl31/bl31_context_mgmt.c +++ b/bl31/bl31_context_mgmt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -130,4 +131,4 @@ void cm_init_context(unsigned long mpidr, const entry_point_info_t *ep) else cm_init_context_by_index(platform_get_core_pos(mpidr), ep); } -#endif \ No newline at end of file +#endif diff --git a/bl31/runtime_svc.c b/common/runtime_svc.c similarity index 100% rename from bl31/runtime_svc.c rename to common/runtime_svc.c diff --git a/docs/firmware-design.md b/docs/firmware-design.md index b99a2838f905d109285d464ab383b09827cbd7cc..d9f9ff025286dd0babee6c7ebc17ec5c0bdc99a4 100644 --- a/docs/firmware-design.md +++ b/docs/firmware-design.md @@ -1779,10 +1779,11 @@ following categories (present as directories in the source code): the platform. * **Common code.** This is platform and architecture agnostic code. * **Library code.** This code comprises of functionality commonly used by all - other code. + other code. The PSCI implementation and other EL3 runtime frameworks reside + as Library components. * **Stage specific.** Code specific to a boot stage. * **Drivers.** -* **Services.** EL3 runtime services, e.g. PSCI or SPD. Specific SPD services +* **Services.** EL3 runtime services (eg: SPD). Specific SPD services reside in the `services/spd` directory (e.g. `services/spd/tspd`). Each boot loader stage uses code from one or more of the above mentioned diff --git a/docs/rt-svc-writers-guide.md b/docs/rt-svc-writers-guide.md index 856e8feba7e3b4c83705b140857de304a36ae941..7fe71851526daa258d0437370d9ff2f0ff9d5d26 100644 --- a/docs/rt-svc-writers-guide.md +++ b/docs/rt-svc-writers-guide.md @@ -95,8 +95,7 @@ handler will be responsible for all SMC Functions within a given service type. ARM Trusted Firmware has a [`services`] directory in the source tree under which each owning entity can place the implementation of its runtime service. The -[PSCI] implementation is located here in the [`services/std_svc/psci`] -directory. +[PSCI] implementation is located here in the [`lib/psci`] directory. Runtime service sources will need to include the [`runtime_svc.h`] header file. @@ -299,12 +298,11 @@ provide this information.... _Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved._ -[Firmware Design]: ./firmware-design.md - +[Firmware Design]: ./firmware-design.md [`services`]: ../services -[`services/std_svc/psci`]: ../services/std_svc/psci +[`lib/psci`]: ../lib/psci [`std_svc_setup.c`]: ../services/std_svc/std_svc_setup.c -[`runtime_svc.h`]: ../include/bl31/runtime_svc.h +[`runtime_svc.h`]: ../include/common/runtime_svc.h [`smcc_helpers.h`]: ../include/common/smcc_helpers.h [PSCI]: http://infocenter.arm.com/help/topic/com.arm.doc.den0022c/DEN0022C_Power_State_Coordination_Interface.pdf "Power State Coordination Interface PDD (ARM DEN 0022C)" [SMCCC]: http://infocenter.arm.com/help/topic/com.arm.doc.den0028a/index.html "SMC Calling Convention PDD (ARM DEN 0028A)" diff --git a/include/common/asm_macros.S b/include/common/aarch64/asm_macros.S similarity index 99% rename from include/common/asm_macros.S rename to include/common/aarch64/asm_macros.S index bd8bb70902119f03446562d8893feac76083313e..e766989908a2370d4584bc979875e817779f85ca 100644 --- a/include/common/asm_macros.S +++ b/include/common/aarch64/asm_macros.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/include/common/assert_macros.S b/include/common/aarch64/assert_macros.S similarity index 97% rename from include/common/assert_macros.S rename to include/common/aarch64/assert_macros.S index cb6c78b8af6b3f822a70b84609b1f89a3568373c..b7e536c6277a5985f06f497b8cac999ece8c35d5 100644 --- a/include/common/assert_macros.S +++ b/include/common/aarch64/assert_macros.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/include/bl31/runtime_svc.h b/include/common/runtime_svc.h similarity index 100% rename from include/bl31/runtime_svc.h rename to include/common/runtime_svc.h diff --git a/include/common/context.h b/include/lib/el3_runtime/aarch64/context.h similarity index 100% rename from include/common/context.h rename to include/lib/el3_runtime/aarch64/context.h diff --git a/include/common/context_mgmt.h b/include/lib/el3_runtime/context_mgmt.h similarity index 99% rename from include/common/context_mgmt.h rename to include/lib/el3_runtime/context_mgmt.h index 8a38ee5df5128b3474a733eaf5a5eba58b7b445b..672ea11e77cf899686e3259fccf9de7da1429d8a 100644 --- a/include/common/context_mgmt.h +++ b/include/lib/el3_runtime/context_mgmt.h @@ -32,7 +32,6 @@ #define __CM_H__ #include -#include /******************************************************************************* * Forward declarations diff --git a/include/bl31/cpu_data.h b/include/lib/el3_runtime/cpu_data.h similarity index 100% rename from include/bl31/cpu_data.h rename to include/lib/el3_runtime/cpu_data.h diff --git a/include/bl31/services/psci.h b/include/lib/psci/psci.h similarity index 100% rename from include/bl31/services/psci.h rename to include/lib/psci/psci.h diff --git a/include/bl31/services/psci_compat.h b/include/lib/psci/psci_compat.h similarity index 98% rename from include/bl31/services/psci_compat.h rename to include/lib/psci/psci_compat.h index 24bd8dccaabbda9a5fe9bd94ac58020c6f7a9561..3554667e5093cb0cf85ee280c5db944c3975041c 100644 --- a/include/bl31/services/psci_compat.h +++ b/include/lib/psci/psci_compat.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/include/bl31/services/std_svc.h b/include/services/std_svc.h similarity index 96% rename from include/bl31/services/std_svc.h rename to include/services/std_svc.h index cbd5b62087f574b007cc3cb24d9c404323590b0f..49d79f8a6cf34d504b1f590649e93e2ee531dba8 100644 --- a/include/bl31/services/std_svc.h +++ b/include/services/std_svc.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/common/aarch64/context.S b/lib/el3_runtime/aarch64/context.S similarity index 99% rename from common/aarch64/context.S rename to lib/el3_runtime/aarch64/context.S index d51daa78c801f06b60154e2be36d62850cf025f6..7982e50ba70edf8d13466d4659390452329c515f 100644 --- a/common/aarch64/context.S +++ b/lib/el3_runtime/aarch64/context.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/common/context_mgmt.c b/lib/el3_runtime/aarch64/context_mgmt.c similarity index 100% rename from common/context_mgmt.c rename to lib/el3_runtime/aarch64/context_mgmt.c diff --git a/bl31/aarch64/cpu_data.S b/lib/el3_runtime/aarch64/cpu_data.S similarity index 97% rename from bl31/aarch64/cpu_data.S rename to lib/el3_runtime/aarch64/cpu_data.S index 0842825cb78d675e8ca92b013fe0f46527d6bf01..2cc07ba54e0ff06cab80c404e7f327556f840bc0 100644 --- a/bl31/aarch64/cpu_data.S +++ b/lib/el3_runtime/aarch64/cpu_data.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/bl31/cpu_data_array.c b/lib/el3_runtime/cpu_data_array.c similarity index 95% rename from bl31/cpu_data_array.c rename to lib/el3_runtime/cpu_data_array.c index 4cba11849e57b4d45c285c93c2945e681cf66ca2..eba21a500cbb699f33efc7b3295605ffe0596bd6 100644 --- a/bl31/cpu_data_array.c +++ b/lib/el3_runtime/cpu_data_array.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/services/std_svc/psci/psci_entry.S b/lib/psci/aarch64/psci_entry.S similarity index 98% rename from services/std_svc/psci/psci_entry.S rename to lib/psci/aarch64/psci_entry.S index f8c0afa255a72f1b7899be160588a2e22a6d9db0..646ebcf80f7dd6cacf41e4402a4bac2a3ea2b966 100644 --- a/services/std_svc/psci/psci_entry.S +++ b/lib/psci/aarch64/psci_entry.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/services/std_svc/psci/psci_helpers.S b/lib/psci/aarch64/psci_helpers.S similarity index 98% rename from services/std_svc/psci/psci_helpers.S rename to lib/psci/aarch64/psci_helpers.S index 6ccf943c00235181058575d7462c32ce06c82c1f..87144dd93859f48b29464da4153a6f2ea677a9c0 100644 --- a/services/std_svc/psci/psci_helpers.S +++ b/lib/psci/aarch64/psci_helpers.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/services/std_svc/psci/psci_common.c b/lib/psci/psci_common.c similarity index 100% rename from services/std_svc/psci/psci_common.c rename to lib/psci/psci_common.c diff --git a/lib/psci/psci_lib.mk b/lib/psci/psci_lib.mk new file mode 100644 index 0000000000000000000000000000000000000000..93c7832956247973f87bf57cbd4dfada8359eaa5 --- /dev/null +++ b/lib/psci/psci_lib.mk @@ -0,0 +1,55 @@ +# +# Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# Neither the name of ARM nor the names of its contributors may be used +# to endorse or promote products derived from this software without specific +# prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# + +PSCI_LIB_SOURCES := lib/el3_runtime/cpu_data_array.c \ + lib/el3_runtime/aarch64/context.S \ + lib/el3_runtime/aarch64/cpu_data.S \ + lib/el3_runtime/aarch64/context_mgmt.c \ + lib/cpus/aarch64/cpu_helpers.S \ + lib/locks/exclusive/spinlock.S \ + lib/psci/psci_off.c \ + lib/psci/psci_on.c \ + lib/psci/psci_suspend.c \ + lib/psci/psci_common.c \ + lib/psci/psci_main.c \ + lib/psci/psci_setup.c \ + lib/psci/psci_system_off.c \ + lib/psci/aarch64/psci_entry.S \ + lib/psci/aarch64/psci_helpers.S \ + +ifeq (${USE_COHERENT_MEM}, 1) +PSCI_LIB_SOURCES += lib/locks/bakery/bakery_lock_coherent.c +else +PSCI_LIB_SOURCES += lib/locks/bakery/bakery_lock_normal.c +endif + +ifeq (${ENABLE_PSCI_STAT}, 1) +PSCI_LIB_SOURCES += lib/psci/psci_stat.c +endif diff --git a/services/std_svc/psci/psci_main.c b/lib/psci/psci_main.c similarity index 100% rename from services/std_svc/psci/psci_main.c rename to lib/psci/psci_main.c diff --git a/services/std_svc/psci/psci_off.c b/lib/psci/psci_off.c similarity index 98% rename from services/std_svc/psci/psci_off.c rename to lib/psci/psci_off.c index 36dab4972ec99f98ee8f2d06bddef78821a955cd..471141dd76c2006d92737fcfac410f07871d4e23 100644 --- a/services/std_svc/psci/psci_off.c +++ b/lib/psci/psci_off.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/services/std_svc/psci/psci_on.c b/lib/psci/psci_on.c similarity index 99% rename from services/std_svc/psci/psci_on.c rename to lib/psci/psci_on.c index c8c36cd0f0b4cd709d9dd0bbc906ca2573456486..d4826ed8aefab1c39fe547f2e293fc971bdb7eed 100644 --- a/services/std_svc/psci/psci_on.c +++ b/lib/psci/psci_on.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/services/std_svc/psci/psci_private.h b/lib/psci/psci_private.h similarity index 100% rename from services/std_svc/psci/psci_private.h rename to lib/psci/psci_private.h diff --git a/services/std_svc/psci/psci_setup.c b/lib/psci/psci_setup.c similarity index 99% rename from services/std_svc/psci/psci_setup.c rename to lib/psci/psci_setup.c index 975b25713c3747aeb69eafac7b75674d40f83844..fac0edecac0fb9eab3e373b4050e10f343a11493 100644 --- a/services/std_svc/psci/psci_setup.c +++ b/lib/psci/psci_setup.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/services/std_svc/psci/psci_stat.c b/lib/psci/psci_stat.c similarity index 100% rename from services/std_svc/psci/psci_stat.c rename to lib/psci/psci_stat.c diff --git a/services/std_svc/psci/psci_suspend.c b/lib/psci/psci_suspend.c similarity index 99% rename from services/std_svc/psci/psci_suspend.c rename to lib/psci/psci_suspend.c index e6c8cd9921f2ddcf60add0039966f71c61f9416f..ee1ccef2f13166e5e0c66edf1e48599ed0b92c13 100644 --- a/services/std_svc/psci/psci_suspend.c +++ b/lib/psci/psci_suspend.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/services/std_svc/psci/psci_system_off.c b/lib/psci/psci_system_off.c similarity index 97% rename from services/std_svc/psci/psci_system_off.c rename to lib/psci/psci_system_off.c index 28315d6b594c4fb171e975be900c83187f011241..de9ec6436dec401cbef1d75d806144a3459de60f 100644 --- a/services/std_svc/psci/psci_system_off.c +++ b/lib/psci/psci_system_off.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: diff --git a/plat/common/aarch64/plat_psci_common.c b/plat/common/aarch64/plat_psci_common.c index 0748ef4deb1722213c3ca447afa9d12d54664bfd..804da93048f6c7cc543745f5097c0a16e78b0e90 100644 --- a/plat/common/aarch64/plat_psci_common.c +++ b/plat/common/aarch64/plat_psci_common.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -28,36 +28,6 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include - -/* - * The PSCI generic code uses this API to let the platform participate in state - * coordination during a power management operation. It compares the platform - * specific local power states requested by each cpu for a given power domain - * and returns the coordinated target power state that the domain should - * enter. A platform assigns a number to a local power state. This default - * implementation assumes that the platform assigns these numbers in order of - * increasing depth of the power state i.e. for two power states X & Y, if X < Y - * then X represents a shallower power state than Y. As a result, the - * coordinated target local power state for a power domain will be the minimum - * of the requested local power states. - */ -plat_local_state_t plat_get_target_pwr_state(unsigned int lvl, - const plat_local_state_t *states, - unsigned int ncpu) -{ - plat_local_state_t target = PLAT_MAX_OFF_STATE, temp; - - assert(ncpu); - - do { - temp = *states++; - if (temp < target) - target = temp; - } while (--ncpu); - - return target; -} +#if !ERROR_DEPRECATED +#include "../plat_psci_common.c" +#endif diff --git a/plat/common/plat_psci_common.c b/plat/common/plat_psci_common.c new file mode 100644 index 0000000000000000000000000000000000000000..3eb6886edb56229deda335fd71ff09d9a4b9d55a --- /dev/null +++ b/plat/common/plat_psci_common.c @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of ARM nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include + +/* + * The PSCI generic code uses this API to let the platform participate in state + * coordination during a power management operation. It compares the platform + * specific local power states requested by each cpu for a given power domain + * and returns the coordinated target power state that the domain should + * enter. A platform assigns a number to a local power state. This default + * implementation assumes that the platform assigns these numbers in order of + * increasing depth of the power state i.e. for two power states X & Y, if X < Y + * then X represents a shallower power state than Y. As a result, the + * coordinated target local power state for a power domain will be the minimum + * of the requested local power states. + */ +plat_local_state_t plat_get_target_pwr_state(unsigned int lvl, + const plat_local_state_t *states, + unsigned int ncpu) +{ + plat_local_state_t target = PLAT_MAX_OFF_STATE, temp; + + assert(ncpu); + + do { + temp = *states++; + if (temp < target) + target = temp; + } while (--ncpu); + + return target; +}