From a757343f2e5e6b172e83ae8176939d35f07110b8 Mon Sep 17 00:00:00 2001 From: Laxman Dewangan Date: Tue, 5 Dec 2023 16:20:08 +0000 Subject: [PATCH] tty: Use conftest to find if tty_operations::write() has argument u8 ptr Use conftest to find if the function write() of tty_operations struct has the argument as U8 pointer data type. This datatype is changed from Linux 6.5 with commit 69851e4ab8feeb ("tty: propagate u8 data to tty_operations::write()") Bug 4346767 Change-Id: I49f9ef844da0dee8e209e597989f1d179a2a804b Signed-off-by: Laxman Dewangan Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3028632 Tested-by: mobile promotions Reviewed-by: mobile promotions --- Makefile | 3 --- drivers/tty/serial/wch_35x/wch_serial.c | 8 ++++---- scripts/conftest/Makefile | 1 + scripts/conftest/conftest.sh | 21 +++++++++++++++++++++ 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index a39943a1..9974bc30 100644 --- a/Makefile +++ b/Makefile @@ -40,9 +40,6 @@ ifeq ($(shell test $(LINUX_VERSION) -ge $(LINUX_VERSION_6_6); echo $$?),0) export CONFIG_SND_SOC_MOVE_DAI_PROBE_TO_OPS=y subdir-ccflags-y += -DNV_SND_SOC_DAI_OPS_STRUCT_HAS_PROBE_ARG -# API changes to replace u8 with unsigned char -subdir-ccflags-y += -DNV_TTY_SERIAL_TYPE_U8_CHANGE - # v4l2_async_subdev is renamed to v4l2_async_connection. subdir-ccflags-y += -DNV_V4L2_ASYNC_SUBDEV_RENAME diff --git a/drivers/tty/serial/wch_35x/wch_serial.c b/drivers/tty/serial/wch_35x/wch_serial.c index 67d4e23b..3a4fbbec 100644 --- a/drivers/tty/serial/wch_35x/wch_serial.c +++ b/drivers/tty/serial/wch_35x/wch_serial.c @@ -53,7 +53,7 @@ static void ser_tasklet_action(unsigned long); static int ser_startup(struct ser_state *, int); static void ser_shutdown(struct ser_state *); static _INLINE_ void _ser_put_char(struct ser_port *, struct circ_buf *, unsigned char); -#if defined(NV_TTY_SERIAL_TYPE_U8_CHANGE) +#if defined(NV_TTY_OPERATIONS_STRUCT_WRITE_HAS_U8_PTR_ARG) /* Linux 6.5 */ static int ser_put_char(struct tty_struct *, u8); #else static int ser_put_char(struct tty_struct *, unsigned char); @@ -67,7 +67,7 @@ static void ser_unthrottle(struct tty_struct *); static int ser_get_info(struct ser_state *, struct serial_struct *); static int ser_set_info(struct ser_state *, struct serial_struct *); static unsigned int ser_write_room(struct tty_struct *tty); -#if defined(NV_TTY_SERIAL_TYPE_U8_CHANGE) +#if defined(NV_TTY_OPERATIONS_STRUCT_WRITE_HAS_U8_PTR_ARG) /* Linux 6.5 */ static ssize_t ser_write(struct tty_struct *, const u8 *, size_t); #else static int ser_write(struct tty_struct *, const unsigned char *, int); @@ -622,7 +622,7 @@ static _INLINE_ void _ser_put_char(struct ser_port *port, struct circ_buf *circ, spin_unlock_irqrestore(&port->lock, flags); } -#if defined(NV_TTY_SERIAL_TYPE_U8_CHANGE) +#if defined(NV_TTY_OPERATIONS_STRUCT_WRITE_HAS_U8_PTR_ARG) /* Linux 6.5 */ static int ser_put_char(struct tty_struct *tty, u8 ch) #else static int ser_put_char(struct tty_struct *tty, unsigned char ch) @@ -921,7 +921,7 @@ static unsigned int ser_write_room(struct tty_struct *tty) return status; } -#if defined(NV_TTY_SERIAL_TYPE_U8_CHANGE) +#if defined(NV_TTY_OPERATIONS_STRUCT_WRITE_HAS_U8_PTR_ARG) /* Linux 6.5 */ static ssize_t ser_write(struct tty_struct *tty, const u8 *buf, size_t count) #else static int ser_write(struct tty_struct *tty, const unsigned char *buf, int count) diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index fb4fbee1..48da5695 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -137,6 +137,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += simple_util_dai_init NV_CONFTEST_FUNCTION_COMPILE_TESTS += tc_taprio_qopt_offload_struct_has_cmd NV_CONFTEST_FUNCTION_COMPILE_TESTS += tegra_dev_iommu_get_stream_id NV_CONFTEST_FUNCTION_COMPILE_TESTS += tegra_ivc_struct_has_iosys_map +NV_CONFTEST_FUNCTION_COMPILE_TESTS += tty_operations_struct_write_has_u8_ptr_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += vm_area_struct_has_const_vm_flags NV_CONFTEST_GENERIC_COMPILE_TESTS += is_export_symbol_present_drm_gem_prime_fd_to_handle NV_CONFTEST_GENERIC_COMPILE_TESTS += is_export_symbol_present_drm_gem_prime_handle_to_fd diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index 274ad640..bc338aec 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -7237,6 +7237,27 @@ compile_test() { compile_check_conftest "$CODE" "NV_TEGRA_DEV_IOMMU_GET_STREAM_ID_PRESENT" "" "functions" ;; + tty_operations_struct_write_has_u8_ptr_arg) + # + # Determine if the function write() of tty_operations has u8 type pointer argument. + # + # The data type of function write() of struct tty_operation has changed + # to u8 data type from Linux 6.5 with change + # commit 69851e4ab8feeb3 ("tty: propagate u8 data to tty_operations::write()") + # + CODE=" + #include + #include + static inline int ser_write(struct tty_struct *ttys, const unsigned char *buf, int l) { + return l; + } + static struct tty_operations tty_ops = { + .write = ser_write, + };" + + compile_check_conftest "$CODE" "NV_TTY_OPERATIONS_STRUCT_WRITE_HAS_U8_PTR_ARG" "" "functions" + ;; + # When adding a new conftest entry, please use the correct format for # specifying the relevant upstream Linux kernel commit. #