blob: 3ab164aaf334dac761559bce5cfdabd9f86edcf6 [file]
/*
* Copyright (c) 2025 Microchip Technology Inc.
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/drivers/pinctrl.h>
#include <zephyr/ztest.h>
/* Pin configuration for test device */
#define TEST_DEVICE DT_NODELABEL(test_device)
PINCTRL_DT_DEV_CONFIG_DECLARE(TEST_DEVICE);
static const struct pinctrl_dev_config *pcfg = PINCTRL_DT_DEV_CONFIG_GET(TEST_DEVICE);
#define MCHP_PINCTRL_FLAG_GET(pincfg, pos) (((pincfg.pinflag) >> pos) & MCHP_PINCTRL_FLAG_MASK)
ZTEST(pinctrl_mchp, test_pullup_pulldown_none)
{
const struct pinctrl_state *scfg;
scfg = &pcfg->states[0];
zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[0], MCHP_PINCTRL_PULLUP_POS), 0);
zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[0], MCHP_PINCTRL_PULLDOWN_POS), 0);
zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[1], MCHP_PINCTRL_PULLUP_POS), 0);
zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[1], MCHP_PINCTRL_PULLDOWN_POS), 0);
}
ZTEST(pinctrl_mchp, test_pullup)
{
const struct pinctrl_state *scfg;
scfg = &pcfg->states[0];
zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[2], MCHP_PINCTRL_PULLUP_POS), 1);
}
ZTEST(pinctrl_mchp, test_pulldown)
{
const struct pinctrl_state *scfg;
scfg = &pcfg->states[0];
zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[3], MCHP_PINCTRL_PULLDOWN_POS), 1);
}
ZTEST(pinctrl_mchp, test_input_output_enable)
{
const struct pinctrl_state *scfg;
scfg = &pcfg->states[0];
zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[4], MCHP_PINCTRL_INPUTENABLE_POS), 1);
zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[4], MCHP_PINCTRL_OUTPUTENABLE_POS), 1);
}
#if defined(CONFIG_TEST_PINCTRL_MCHP_SAM)
ZTEST(pinctrl_mchp, test_drive_strength)
{
const struct pinctrl_state *scfg;
scfg = &pcfg->states[0];
zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[5], MCHP_PINCTRL_DRIVESTRENGTH_POS), 1);
}
#endif
ZTEST(pinctrl_mchp, test_apply_state)
{
int ret;
ret = pinctrl_apply_state(pcfg, PINCTRL_STATE_DEFAULT);
zassert_equal(ret, 0);
}
ZTEST_SUITE(pinctrl_mchp, NULL, NULL, NULL, NULL, NULL);