1 /*
2 * Copyright (c) 2025 Microchip Technology Inc.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7 #include <zephyr/drivers/pinctrl.h>
8 #include <zephyr/ztest.h>
9
10 /* Pin configuration for test device */
11 #define TEST_DEVICE DT_NODELABEL(test_device)
12 PINCTRL_DT_DEV_CONFIG_DECLARE(TEST_DEVICE);
13 static const struct pinctrl_dev_config *pcfg = PINCTRL_DT_DEV_CONFIG_GET(TEST_DEVICE);
14
15 #define MCHP_PINCTRL_FLAG_GET(pincfg, pos) (((pincfg.pinflag) >> pos) & MCHP_PINCTRL_FLAG_MASK)
16
ZTEST(pinctrl_mchp,test_pullup_pulldown_none)17 ZTEST(pinctrl_mchp, test_pullup_pulldown_none)
18 {
19 const struct pinctrl_state *scfg;
20
21 scfg = &pcfg->states[0];
22
23 zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[0], MCHP_PINCTRL_PULLUP_POS), 0);
24 zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[0], MCHP_PINCTRL_PULLDOWN_POS), 0);
25 zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[1], MCHP_PINCTRL_PULLUP_POS), 0);
26 zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[1], MCHP_PINCTRL_PULLDOWN_POS), 0);
27 }
28
ZTEST(pinctrl_mchp,test_pullup)29 ZTEST(pinctrl_mchp, test_pullup)
30 {
31 const struct pinctrl_state *scfg;
32
33 scfg = &pcfg->states[0];
34
35 zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[2], MCHP_PINCTRL_PULLUP_POS), 1);
36 }
37
ZTEST(pinctrl_mchp,test_pulldown)38 ZTEST(pinctrl_mchp, test_pulldown)
39 {
40 const struct pinctrl_state *scfg;
41
42 scfg = &pcfg->states[0];
43
44 zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[3], MCHP_PINCTRL_PULLDOWN_POS), 1);
45 }
46
ZTEST(pinctrl_mchp,test_input_output_enable)47 ZTEST(pinctrl_mchp, test_input_output_enable)
48 {
49 const struct pinctrl_state *scfg;
50
51 scfg = &pcfg->states[0];
52
53 zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[4], MCHP_PINCTRL_INPUTENABLE_POS), 1);
54 zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[4], MCHP_PINCTRL_OUTPUTENABLE_POS), 1);
55 }
56
57 #if defined(CONFIG_TEST_PINCTRL_MCHP_SAM)
ZTEST(pinctrl_mchp,test_drive_strength)58 ZTEST(pinctrl_mchp, test_drive_strength)
59 {
60 const struct pinctrl_state *scfg;
61
62 scfg = &pcfg->states[0];
63
64 zassert_equal(MCHP_PINCTRL_FLAG_GET(scfg->pins[5], MCHP_PINCTRL_DRIVESTRENGTH_POS), 1);
65 }
66 #endif
67
ZTEST(pinctrl_mchp,test_apply_state)68 ZTEST(pinctrl_mchp, test_apply_state)
69 {
70 int ret;
71
72 ret = pinctrl_apply_state(pcfg, PINCTRL_STATE_DEFAULT);
73 zassert_equal(ret, 0);
74 }
75
76 ZTEST_SUITE(pinctrl_mchp, NULL, NULL, NULL, NULL, NULL);
77