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 <ldewangan@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3028632
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Laxman Dewangan
2023-12-05 16:20:08 +00:00
committed by mobile promotions
parent 537a307ffd
commit a757343f2e
4 changed files with 26 additions and 7 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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 <linux/tty.h>
#include <linux/tty_driver.h>
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.
#