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