blob: fe19ae60bf07b0491838bc6b97fa664a749bca78 [file] [log] [blame]
/*
* Copyright (c) 2021-2022 Actinius
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/init.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(board_control, CONFIG_BOARD_ICARUS_SOM_LOG_LEVEL);
static int board_actinius_icarus_som_init(const struct device *dev)
{
const struct gpio_dt_spec sim =
GPIO_DT_SPEC_GET(DT_NODELABEL(sim_select), sim_gpios);
ARG_UNUSED(dev);
if (!device_is_ready(sim.port)) {
LOG_ERR("The SIM Select Pin port is not ready");
return -ENODEV;
}
if (DT_ENUM_IDX(DT_NODELABEL(sim_select), sim) == 0) {
(void)gpio_pin_configure_dt(&sim, GPIO_OUTPUT_HIGH);
LOG_INF("eSIM is selected");
} else {
(void)gpio_pin_configure_dt(&sim, GPIO_OUTPUT_LOW);
LOG_INF("External SIM is selected");
}
return 0;
}
/* Needs to happen after GPIO driver init */
SYS_INIT(board_actinius_icarus_som_init, POST_KERNEL, 99);