/* * Copyright (c) 2017 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ /* Include esp-idf headers first to avoid redefining BIT() macro */ #include #include #include #include static unsigned char esp32_uart_tx(struct device *dev, unsigned char c) { ARG_UNUSED(dev); esp32_rom_uart_tx_one_char(c); return c; } static int esp32_uart_rx(struct device *dev, unsigned char *p_char) { ARG_UNUSED(dev); switch (esp32_rom_uart_rx_one_char(p_char)) { case OK: return 0; case PENDING: return -EINPROGRESS; case BUSY: return -EBUSY; case CANCEL: return -ECANCELED; default: return -EIO; } } static int esp32_uart_init(struct device *dev) { ARG_UNUSED(dev); esp32_rom_uart_attach(); return 0; } static const struct uart_driver_api esp32_uart_api = { .poll_in = &esp32_uart_rx, .poll_out = &esp32_uart_tx, .err_check = NULL, }; DEVICE_AND_API_INIT(esp32_uart, "ROMUART", esp32_uart_init, NULL, NULL, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE, &esp32_uart_api);