drivers: serial: add a dummy driver for vnd,serial

This commit adds a serial dummy driver compatible to vnd,serial.
This is needed that devices can access the uart device in tests
like tests/drivers/build_all/... .

Add myself as codeowner to avoid complicance check failure.

Signed-off-by: Thomas Stranger <thomas.stranger@outlook.com>
This commit is contained in:
Thomas Stranger 2021-07-08 17:15:52 +02:00 committed by Kumar Gala
parent f7efacf441
commit 94f7ed356f
5 changed files with 81 additions and 0 deletions

View file

@ -301,6 +301,8 @@
/drivers/serial/*nuvoton* @ssekar15
/drivers/serial/*apbuart* @martin-aberg
/drivers/serial/*rcar* @aaillet
/drivers/serial/Kconfig.test @str4t0m
/drivers/serial/serial_test.c @str4t0m
/drivers/disk/ @jfischer-no
/drivers/disk/sdmmc_sdhc.h @JunYangNXP
/drivers/disk/sdmmc_spi.c @JunYangNXP

View file

@ -46,3 +46,5 @@ if(CONFIG_UART_NATIVE_POSIX)
zephyr_library_compile_definitions(NO_POSIX_CHEATS)
zephyr_library_sources(uart_native_posix.c)
endif()
zephyr_library_sources_ifdef(CONFIG_SERIAL_TEST serial_test.c)

View file

@ -151,4 +151,6 @@ source "drivers/serial/Kconfig.apbuart"
source "drivers/serial/Kconfig.rcar"
source "drivers/serial/Kconfig.test"
endif # SERIAL

View file

@ -0,0 +1,8 @@
# Copyright (c) 2021, Thomas Stranger
# SPDX-License-Identifier: Apache-2.0
DT_COMPAT_VND_SERIAL := vnd,serial
# Hidden option to enable the vnd,serial dummy driver used in testing.
config SERIAL_TEST
def_bool $(dt_compat_enabled,$(DT_COMPAT_VND_SERIAL))

View file

@ -0,0 +1,67 @@
/*
* Copyright (c) 2021, Thomas Stranger
*
* SPDX-License-Identifier: Apache-2.0
*/
/*
* This is not a real serial driver. It is used to instantiate struct
* devices for the "vnd,serial" devicetree compatible used in test code.
*/
#include <zephyr.h>
#include <drivers/uart.h>
#define DT_DRV_COMPAT vnd_serial
static int serial_vnd_poll_in(const struct device *dev, unsigned char *c)
{
return -ENOTSUP;
}
static void serial_vnd_poll_out(const struct device *dev, unsigned char c)
{
}
static int serial_vnd_err_check(const struct device *dev)
{
return -ENOTSUP;
}
#ifdef CONFIG_UART_USE_RUNTIME_CONFIGURE
static int serial_vnd_configure(const struct device *dev,
const struct uart_config *cfg)
{
return -ENOTSUP;
}
static int serial_vnd_config_get(const struct device *dev,
struct uart_config *cfg)
{
return -ENOTSUP;
}
#endif /* CONFIG_UART_USE_RUNTIME_CONFIGURE */
static const struct uart_driver_api serial_vnd_api = {
.poll_in = serial_vnd_poll_in,
.poll_out = serial_vnd_poll_out,
.err_check = serial_vnd_err_check,
#ifdef CONFIG_UART_USE_RUNTIME_CONFIGURE
.configure = serial_vnd_configure,
.config_get = serial_vnd_config_get,
#endif /* CONFIG_UART_USE_RUNTIME_CONFIGURE */
};
static int serial_vnd_init(const struct device *dev)
{
return 0;
}
#define VND_SERIAL_INIT(n) \
DEVICE_DT_INST_DEFINE(n, &serial_vnd_init, NULL, \
NULL, NULL, POST_KERNEL, \
CONFIG_KERNEL_INIT_PRIORITY_DEVICE, \
&serial_vnd_api);
DT_INST_FOREACH_STATUS_OKAY(VND_SERIAL_INIT)