drivers: gpio: xec: Apply initialization value after pin config.

Update GPIO grouped output after pin control is updated.

Signed-off-by: Jose Alberto Meza <jose.a.meza.arellano@intel.com>
This commit is contained in:
Jose Alberto Meza 2020-05-06 21:32:07 -07:00 committed by Andrew Boie
commit 8fa9659aea

View file

@ -75,11 +75,6 @@ static int gpio_xec_configure(struct device *dev,
mask |= MCHP_GPIO_CTRL_DIR_MASK; mask |= MCHP_GPIO_CTRL_DIR_MASK;
mask |= MCHP_GPIO_CTRL_INPAD_DIS_MASK; mask |= MCHP_GPIO_CTRL_INPAD_DIS_MASK;
if ((flags & GPIO_OUTPUT) != 0U) { if ((flags & GPIO_OUTPUT) != 0U) {
if ((flags & GPIO_OUTPUT_INIT_HIGH) != 0U) {
*gpio_out_reg |= BIT(pin);
} else if ((flags & GPIO_OUTPUT_INIT_LOW) != 0U) {
*gpio_out_reg &= ~BIT(pin);
}
pcr1 |= MCHP_GPIO_CTRL_DIR_OUTPUT; pcr1 |= MCHP_GPIO_CTRL_DIR_OUTPUT;
} else { } else {
/* GPIO_INPUT */ /* GPIO_INPUT */
@ -122,6 +117,14 @@ static int gpio_xec_configure(struct device *dev,
current_pcr1 = config->pcr1_base + pin; current_pcr1 = config->pcr1_base + pin;
*current_pcr1 = (*current_pcr1 & ~mask) | pcr1; *current_pcr1 = (*current_pcr1 & ~mask) | pcr1;
if ((flags & GPIO_OUTPUT) != 0U) {
if ((flags & GPIO_OUTPUT_INIT_HIGH) != 0U) {
*gpio_out_reg |= BIT(pin);
} else if ((flags & GPIO_OUTPUT_INIT_LOW) != 0U) {
*gpio_out_reg &= ~BIT(pin);
}
}
return 0; return 0;
} }