diff --git a/drivers/gpio/gpio_mchp_xec_v2.c b/drivers/gpio/gpio_mchp_xec_v2.c index 3c89ed79c5b..67697b1e318 100644 --- a/drivers/gpio/gpio_mchp_xec_v2.c +++ b/drivers/gpio/gpio_mchp_xec_v2.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -19,6 +20,8 @@ #define XEC_GPIO_EDGE_DLY_COUNT 4 +LOG_MODULE_REGISTER(gpio, CONFIG_GPIO_LOG_LEVEL); + static const uint32_t valid_ctrl_masks[NUM_MCHP_GPIO_PORTS] = { (MCHP_GPIO_PORT_A_BITMAP), (MCHP_GPIO_PORT_B_BITMAP), @@ -141,6 +144,12 @@ static int gpio_xec_configure(const struct device *dev, pcr1_addr = pin_ctrl_addr(dev, pin); pcr1 = sys_read32(pcr1_addr); + /* Check if pin is in GPIO mode */ + if (MCHP_GPIO_CTRL_MUX_GET(pcr1) != MCHP_GPIO_CTRL_MUX_F0) { + LOG_WRN("Port:%d pin:0x%x not in GPIO mode. CTRL[%x]=%x", config->port_num, pin, + (uint32_t)pcr1_addr, pcr1); + } + if (flags == GPIO_DISCONNECTED) { pcr1 = (pcr1 & ~MCHP_GPIO_CTRL_PWRG_MASK) | MCHP_GPIO_CTRL_PWRG_OFF; sys_write32(pcr1, pcr1_addr);