/*
 * Copyright (c) 2021 Instituto de Pesquisas Eldorado (eldorado.org.br)
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <drivers/gpio.h>

#define VEXT_PIN  DT_GPIO_PIN(DT_NODELABEL(vext), gpios)
#define OLED_RST  DT_GPIO_PIN(DT_NODELABEL(oledrst), gpios)

static int board_heltec_wifi_lora32_v2_init(const struct device *dev)
{
	ARG_UNUSED(dev);
	const struct device *gpio;

	gpio = device_get_binding(DT_LABEL(DT_NODELABEL(gpio0)));
	if (!gpio) {
		return -ENODEV;
	}

	/* turns external VCC on  */
	gpio_pin_configure(gpio, VEXT_PIN, GPIO_OUTPUT);
	gpio_pin_set_raw(gpio, VEXT_PIN, 0);

	/* turns OLED on */
	gpio_pin_configure(gpio, OLED_RST, GPIO_OUTPUT);
	gpio_pin_set_raw(gpio, OLED_RST, 1);

	return 0;
}

SYS_INIT(board_heltec_wifi_lora32_v2_init, PRE_KERNEL_2, CONFIG_PINMUX_INIT_PRIORITY);
