blob: 1a56df9adc07067121b46795a308e845a690ca5d [file] [log] [blame]
/*
* Copyright (c) 2023 MUNIC SA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/ztest.h>
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/drivers/gpio/gpio_utils.h>
#define TEST_GPIO_1 DT_NODELABEL(test_gpio_1)
#define TEST_GPIO_2 DT_NODELABEL(test_gpio_2)
#define TEST_GPIO_3 DT_NODELABEL(test_gpio_3)
#define TEST_GPIO_4 DT_NODELABEL(test_gpio_4)
#define TEST_GPIO_5 DT_NODELABEL(test_gpio_5)
#define TEST_GPIO_6 DT_NODELABEL(test_gpio_6)
#define DT_DRV_COMPAT vnd_gpio_device
ZTEST(gpio_reserved_ranges, test_path_props)
{
zassert_true(DT_NODE_HAS_PROP(TEST_GPIO_1, gpio_reserved_ranges), "");
zassert_true(DT_NODE_HAS_PROP(TEST_GPIO_2, gpio_reserved_ranges), "");
zassert_true(DT_NODE_HAS_PROP(TEST_GPIO_3, gpio_reserved_ranges), "");
zassert_true(DT_NODE_HAS_PROP(TEST_GPIO_4, gpio_reserved_ranges), "");
zassert_true(DT_NODE_HAS_PROP(TEST_GPIO_5, gpio_reserved_ranges), "");
zassert_false(DT_NODE_HAS_PROP(TEST_GPIO_6, gpio_reserved_ranges), "");
}
ZTEST(gpio_reserved_ranges, test_has_status)
{
zassert_equal(DT_NODE_HAS_STATUS(TEST_GPIO_1, okay), 1, "");
zassert_equal(DT_NODE_HAS_STATUS(TEST_GPIO_2, okay), 1, "");
zassert_equal(DT_NODE_HAS_STATUS(TEST_GPIO_3, okay), 1, "");
zassert_equal(DT_NODE_HAS_STATUS(TEST_GPIO_4, okay), 1, "");
zassert_equal(DT_NODE_HAS_STATUS(TEST_GPIO_5, okay), 1, "");
zassert_equal(DT_NODE_HAS_STATUS(TEST_GPIO_6, okay), 1, "");
}
ZTEST(gpio_reserved_ranges, test_reserved_ranges)
{
/* GPIO_DT_INST_RESERVED_RANGES_NGPIOS */
zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_1, 32),
0xdeadbeef, "");
zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_2, 32),
0x7fffbeff, "");
zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_3, 18),
0xfffc0418, "");
zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_4, 16),
0xfffffff0, "");
zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_5, 0),
0xffffffff, "");
zassert_equal(GPIO_DT_RESERVED_RANGES_NGPIOS(TEST_GPIO_6, 32),
0, "");
/* GPIO_DT_INST_RESERVED_RANGES_NGPIOS */
zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(0, 32), 0xdeadbeef,
"");
zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(1, 32), 0x7fffbeff,
"");
zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(2, 18), 0xfffc0418,
"");
zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(3, 16), 0xfffffff0,
"");
zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(4, 0), 0xffffffff,
"");
zassert_equal(GPIO_DT_INST_RESERVED_RANGES_NGPIOS(5, 32), 0, "");
/* GPIO_DT_RESERVED_RANGES */
zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_1), 0xdeadbeef, "");
zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_2), 0x7fffbeff, "");
zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_3), 0xfffc0418, "");
zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_4), 0xfffffff0, "");
zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_5), 0xffffffff, "");
zassert_equal(GPIO_DT_RESERVED_RANGES(TEST_GPIO_6), 0x0, "");
/* GPIO_DT_INST_RESERVED_RANGES */
zassert_equal(GPIO_DT_INST_RESERVED_RANGES(0), 0xdeadbeef, "");
zassert_equal(GPIO_DT_INST_RESERVED_RANGES(1), 0x7fffbeff, "");
zassert_equal(GPIO_DT_INST_RESERVED_RANGES(2), 0xfffc0418, "");
zassert_equal(GPIO_DT_INST_RESERVED_RANGES(3), 0xfffffff0, "");
zassert_equal(GPIO_DT_INST_RESERVED_RANGES(4), 0xffffffff, "");
zassert_equal(GPIO_DT_INST_RESERVED_RANGES(5), 0x0, "");
}
ZTEST(gpio_reserved_ranges, test_port_pin_mask_exc)
{
/* GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC */
zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_1, 32),
0x21524110, "");
zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_2, 32),
0x80004100, "");
zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_3, 18),
0x0003fbe7, "");
zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_4, 16),
0x0000000f, "");
zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_5, 0),
0x00000000, "");
zassert_equal(GPIO_DT_PORT_PIN_MASK_NGPIOS_EXC(TEST_GPIO_6, 32),
0xffffffff, "");
/* GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC */
zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(0, 32), 0x21524110,
"");
zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(1, 32), 0x80004100,
"");
zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(2, 18), 0x0003fbe7,
"");
zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(3, 16), 0x0000000f,
"");
zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(4, 0), 0x00000000,
"");
zassert_equal(GPIO_DT_INST_PORT_PIN_MASK_NGPIOS_EXC(5, 16), 0x0000ffff,
"");
/* GPIO_PORT_PIN_MASK_FROM_DT_NODE */
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_1),
0x21524110, "");
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_2),
0x80004100, "");
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_3),
0x0003fbe7, "");
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_4),
0x0000000f, "");
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_5),
0x00000000, "");
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_NODE(TEST_GPIO_6),
0xffffffff, "");
/* GPIO_PORT_PIN_MASK_FROM_DT_INST */
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(0), 0x21524110, "");
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(1), 0x80004100, "");
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(2), 0x0003fbe7, "");
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(3), 0x0000000f, "");
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(4), 0x00000000, "");
zassert_equal(GPIO_PORT_PIN_MASK_FROM_DT_INST(5), 0xffffffff, "");
}
/* Test GPIO port configuration */
ZTEST_SUITE(gpio_reserved_ranges, NULL, NULL, NULL, NULL, NULL);