diff --git a/drivers/media/platform/tegra/camera/camera_common.c b/drivers/media/platform/tegra/camera/camera_common.c
index 1a149b1d..a7285bf8 100644
--- a/drivers/media/platform/tegra/camera/camera_common.c
+++ b/drivers/media/platform/tegra/camera/camera_common.c
@@ -1,20 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only
-/*
- * SPDX-FileCopyrightText: Copyright (c) 2022-2025 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,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
+// SPDX-FileCopyrightText: Copyright (c) 2015-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#include
@@ -1052,12 +1037,12 @@ int camera_common_get_mbus_config(struct v4l2_subdev *sd,
* then return an error
*/
cfg->type = V4L2_MBUS_CSI2_DPHY;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0)
+#if defined(NV_V4L2_FWNODE_ENDPOINT_STRUCT_HAS_V4L2_MBUS_CONFIG_MIPI_CSI2) /* Linux v5.18 */
+ cfg->bus.mipi_csi2.num_data_lanes = 4;
+#else
cfg->flags = V4L2_MBUS_CSI2_4_LANE |
V4L2_MBUS_CSI2_CHANNEL_0 |
V4L2_MBUS_CSI2_CONTINUOUS_CLOCK;
-#else
- cfg->bus.mipi_csi2.num_data_lanes = 4;
#endif
return 0;
diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile
index 6afc092c..ef6f7d31 100644
--- a/scripts/conftest/Makefile
+++ b/scripts/conftest/Makefile
@@ -241,6 +241,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += v4l2_async_subdev_nf_init
NV_CONFTEST_FUNCTION_COMPILE_TESTS += v4l2_async_notifier_init
NV_CONFTEST_FUNCTION_COMPILE_TESTS += v4l2_async_nf_init_has_v4l2_dev_arg
NV_CONFTEST_FUNCTION_COMPILE_TESTS += __v4l2_async_nf_add_subdev
+NV_CONFTEST_FUNCTION_COMPILE_TESTS += v4l2_fwnode_endpoint_struct_has_v4l2_mbus_config_mipi_csi2
NV_CONFTEST_FUNCTION_COMPILE_TESTS += v4l2_subdev_pad_ops_struct_has_get_set_frame_interval
NV_CONFTEST_FUNCTION_COMPILE_TESTS += v4l2_subdev_pad_ops_struct_has_dv_timings
NV_CONFTEST_FUNCTION_COMPILE_TESTS += vm_area_struct_has_const_vm_flags
diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh
index b0346ce9..7ad4ce6c 100755
--- a/scripts/conftest/conftest.sh
+++ b/scripts/conftest/conftest.sh
@@ -9014,6 +9014,25 @@ compile_test() {
compile_check_conftest "$CODE" "NV_V4L2_ASYNC_NF_ADD_SUBDEV_PRESENT" "" "functions"
;;
+ v4l2_fwnode_endpoint_struct_has_v4l2_mbus_config_mipi_csi2)
+ #
+ # Determine if struct 'v4l2_fwnode_endpoint' has a
+ # 'v4l2_mbus_config_mipi_csi2' member.
+ #
+ # Commit 94d964e58ad6 ("media: v4l2-fwnode: Move bus config
+ # structure to v4l2_mediabus.h") added this in Linux v5.18.
+ #
+ CODE="
+ #define _LINUX_EFI_H
+ #include
+ struct v4l2_mbus_config_mipi_csi2 *conftest(struct v4l2_fwnode_endpoint *endpoint) {
+ return &endpoint->bus.mipi_csi2;
+ }
+ "
+ compile_check_conftest "$CODE" \
+ "NV_V4L2_FWNODE_ENDPOINT_STRUCT_HAS_V4L2_MBUS_CONFIG_MIPI_CSI2" "" "types"
+ ;;
+
v4l2_subdev_pad_ops_struct_has_get_set_frame_interval)
#
# Determine if struct v4l2_subdev_pad_ops has the 'get_frame_interval'