40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
/*
|
|
* Copyright (c) 2018 Christian Taedcke
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <zephyr/init.h>
|
|
#include <zephyr/drivers/gpio.h>
|
|
#include <zephyr/sys/printk.h>
|
|
|
|
/* This pin is used to enable the serial port using the board controller */
|
|
#ifdef CONFIG_BOARD_EFR32_RADIO_BRD4180A
|
|
#define VCOM_ENABLE_GPIO_NODE DT_NODELABEL(gpiod)
|
|
#define VCOM_ENABLE_GPIO_PIN 4
|
|
#else
|
|
#define VCOM_ENABLE_GPIO_NODE DT_NODELABEL(gpioa)
|
|
#define VCOM_ENABLE_GPIO_PIN 5
|
|
#endif /* CONFIG_BOARD_EFR32_RADIO_BRD4180A */
|
|
|
|
static int efr32_radio_init(const struct device *dev)
|
|
{
|
|
const struct device *vce_dev; /* Virtual COM Port Enable GPIO Device */
|
|
|
|
ARG_UNUSED(dev);
|
|
|
|
/* Enable the board controller to be able to use the serial port */
|
|
vce_dev = DEVICE_DT_GET(VCOM_ENABLE_GPIO_NODE);
|
|
if (!device_is_ready(vce_dev)) {
|
|
printk("Virtual COM Port Enable device is not ready!\n");
|
|
return -ENODEV;
|
|
}
|
|
|
|
gpio_pin_configure(vce_dev, VCOM_ENABLE_GPIO_PIN, GPIO_OUTPUT_HIGH);
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* needs to be done after GPIO driver init */
|
|
SYS_INIT(efr32_radio_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE);
|