diff --git a/Makefile b/Makefile index af4199cc..1cd6658a 100644 --- a/Makefile +++ b/Makefile @@ -27,9 +27,6 @@ ifeq ($(shell test $(LINUX_VERSION) -ge $(LINUX_VERSION_6_6); echo $$?),0) # probe_new is removed from i2c driver structure subdir-ccflags-y += -DNV_I2C_LEGACY_PROBE_NEW_REMOVED -# 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 1f824b5d..301753f4 100644 --- a/drivers/tty/serial/wch_35x/wch_serial.c +++ b/drivers/tty/serial/wch_35x/wch_serial.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * Copyright (c) 2021-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -54,7 +54,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); @@ -68,7 +68,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 a5b9791d..e3358d52 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -145,6 +145,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += spi_get_chipselect 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 93888be0..f9512235 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -7385,6 +7385,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. #