From 7342974b173f28ca16eba3f8c87f639e642ef788 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Mon, 12 Jun 2017 17:32:54 +0200 Subject: [PATCH] cpu/ezr32wg/gpio: do not clear output pin on init --- cpu/ezr32wg/periph/gpio.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cpu/ezr32wg/periph/gpio.c b/cpu/ezr32wg/periph/gpio.c index 34e3b1ffeb..2ab3c3e62c 100644 --- a/cpu/ezr32wg/periph/gpio.c +++ b/cpu/ezr32wg/periph/gpio.c @@ -60,17 +60,21 @@ int gpio_init(gpio_t pin, gpio_mode_t mode) GPIO_P_TypeDef *port = _port(pin); uint32_t pin_pos = _pin_pos(pin); + if (mode == GPIO_IN_PD) { + return -1; + } + /* enable power for the GPIO module */ CMU->HFPERCLKEN0 |= CMU_HFPERCLKEN0_GPIO; /* configure the mode */ port->MODE[pin_pos >> 3] &= ~(0xf << ((pin_pos & 0x7) * 4)); port->MODE[pin_pos >> 3] |= (mode << ((pin_pos & 0x7) * 4)); - /* reset output register */ - port->DOUTCLR = (1 << pin_pos); /* if input with pull-up, set the data out register */ if (mode == GPIO_IN_PU) { port->DOUTSET = (1 << pin_pos); + } else if (mode == GPIO_IN) { + port->DOUTCLR = (1 << pin_pos); } return 0;