tests: psci: Introduce PSCI test
Add a simple test to the the PSCI driver Signed-off-by: Carlo Caione <ccaione@baylibre.com>
This commit is contained in:
parent
57f7e31017
commit
9efc7b661e
4 changed files with 65 additions and 0 deletions
12
tests/arch/arm/arm_psci/CMakeLists.txt
Normal file
12
tests/arch/arm/arm_psci/CMakeLists.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
cmake_minimum_required(VERSION 3.13.1)
|
||||
|
||||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
||||
project(arm_psci)
|
||||
|
||||
FILE(GLOB app_sources src/*.c)
|
||||
target_sources(app PRIVATE ${app_sources})
|
||||
target_include_directories(app PRIVATE
|
||||
${ARCH_DIR}/${ARCH}/include
|
||||
)
|
2
tests/arch/arm/arm_psci/prj.conf
Normal file
2
tests/arch/arm/arm_psci/prj.conf
Normal file
|
@ -0,0 +1,2 @@
|
|||
CONFIG_TEST_USERSPACE=y
|
||||
CONFIG_ZTEST=y
|
46
tests/arch/arm/arm_psci/src/main.c
Normal file
46
tests/arch/arm/arm_psci/src/main.c
Normal file
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright (c) 2020 Carlo Caione <ccaione@baylibre.com>
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <ztest.h>
|
||||
#include <drivers/psci.h>
|
||||
|
||||
#define PSCI_DEV_NAME "PSCI"
|
||||
|
||||
void test_psci_func(void)
|
||||
{
|
||||
const struct device *psci;
|
||||
uint32_t ver;
|
||||
int ret;
|
||||
|
||||
psci = device_get_binding(PSCI_DEV_NAME);
|
||||
zassert_not_null(psci, "Could not get psci device");
|
||||
|
||||
/* This should return 2 for v0.2 */
|
||||
ver = psci_get_version(psci);
|
||||
zassert_false((PSCI_VERSION_MAJOR(ver) == 0 &&
|
||||
PSCI_VERSION_MINOR(ver) < 2),
|
||||
"Wrong PSCI firware version");
|
||||
|
||||
/* This should return 0: (one core in the affinity instance is ON) */
|
||||
ret = psci_affinity_info(psci, 0, 0);
|
||||
zassert_true(ret == 0, "Wrong return code from psci_affinity_info");
|
||||
|
||||
/* This should return -PSCI_RET_ALREADY_ON that is mapped to -EINVAL */
|
||||
ret = psci_cpu_on(psci, 0, 0);
|
||||
zassert_true(ret == -EINVAL, "Wrong return code from psci_cpu_on");
|
||||
}
|
||||
|
||||
void test_main(void)
|
||||
{
|
||||
const struct device *psci = device_get_binding(PSCI_DEV_NAME);
|
||||
zassert_not_null(psci, "Could not get psci device");
|
||||
|
||||
k_object_access_grant(psci, k_current_get());
|
||||
|
||||
ztest_test_suite(psci_func,
|
||||
ztest_user_unit_test(test_psci_func));
|
||||
ztest_run_test_suite(psci_func);
|
||||
}
|
5
tests/arch/arm/arm_psci/testcase.yaml
Normal file
5
tests/arch/arm/arm_psci/testcase.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
tests:
|
||||
arch.arm64.psci:
|
||||
arch_allow: arm
|
||||
tags: arm psci drivers userspace
|
||||
filter: CONFIG_ARM_PSCI
|
Loading…
Add table
Add a link
Reference in a new issue