From 94f7ed356f0cb97b6cb54899e39822cba99ce964 Mon Sep 17 00:00:00 2001 From: Thomas Stranger Date: Thu, 8 Jul 2021 17:15:52 +0200 Subject: [PATCH] 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 --- CODEOWNERS | 2 ++ drivers/serial/CMakeLists.txt | 2 ++ drivers/serial/Kconfig | 2 ++ drivers/serial/Kconfig.test | 8 +++++ drivers/serial/serial_test.c | 67 +++++++++++++++++++++++++++++++++++ 5 files changed, 81 insertions(+) create mode 100644 drivers/serial/Kconfig.test create mode 100644 drivers/serial/serial_test.c diff --git a/CODEOWNERS b/CODEOWNERS index 30daa8ce994..e219714cb4a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -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 diff --git a/drivers/serial/CMakeLists.txt b/drivers/serial/CMakeLists.txt index 51f792d61ae..03cd54d84ff 100644 --- a/drivers/serial/CMakeLists.txt +++ b/drivers/serial/CMakeLists.txt @@ -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) diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index dc6b1640e2f..637c55f02b3 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig @@ -151,4 +151,6 @@ source "drivers/serial/Kconfig.apbuart" source "drivers/serial/Kconfig.rcar" +source "drivers/serial/Kconfig.test" + endif # SERIAL diff --git a/drivers/serial/Kconfig.test b/drivers/serial/Kconfig.test new file mode 100644 index 00000000000..9560b209639 --- /dev/null +++ b/drivers/serial/Kconfig.test @@ -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)) diff --git a/drivers/serial/serial_test.c b/drivers/serial/serial_test.c new file mode 100644 index 00000000000..d70e110e4b6 --- /dev/null +++ b/drivers/serial/serial_test.c @@ -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 +#include + +#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)