diff --git a/drivers/gpu/host1x/bus.c b/drivers/gpu/host1x/bus.c index 2650906a..3c417f0d 100644 --- a/drivers/gpu/host1x/bus.c +++ b/drivers/gpu/host1x/bus.c @@ -335,7 +335,11 @@ static int host1x_del_client(struct host1x *host1x, return -ENODEV; } +#if defined(NV_BUS_TYPE_STRUCT_MATCH_HAS_CONST_DRV_ARG) +static int host1x_device_match(struct device *dev, const struct device_driver *drv) +#else static int host1x_device_match(struct device *dev, struct device_driver *drv) +#endif { return strstr(dev_name(dev), drv->name) != NULL; } diff --git a/drivers/platform/tegra/rtcpu/ivc-bus.c b/drivers/platform/tegra/rtcpu/ivc-bus.c index 84fc7747..dae868b7 100644 --- a/drivers/platform/tegra/rtcpu/ivc-bus.c +++ b/drivers/platform/tegra/rtcpu/ivc-bus.c @@ -1,5 +1,5 @@ -// SPDX-License-Identifier: GPL-2.0 -// Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// SPDX-License-Identifier: GPL-2.0-only +// SPDX-FileCopyrightText: Copyright (c) 2022-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved. #include @@ -295,7 +295,11 @@ static void tegra_ivc_bus_release(struct device *dev) kfree(bus); } +#if defined(NV_BUS_TYPE_STRUCT_MATCH_HAS_CONST_DRV_ARG) +static int tegra_ivc_bus_match(struct device *dev, const struct device_driver *drv) +#else static int tegra_ivc_bus_match(struct device *dev, struct device_driver *drv) +#endif { struct tegra_ivc_driver *ivcdrv = to_tegra_ivc_driver(drv); diff --git a/include/linux/tegra-ivc-bus.h b/include/linux/tegra-ivc-bus.h index 5bf43f06..231dd71c 100644 --- a/include/linux/tegra-ivc-bus.h +++ b/include/linux/tegra-ivc-bus.h @@ -1,11 +1,11 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. - */ +/* SPDX-FileCopyrightText: Copyright (c) 2020-2024 NVIDIA CORPORATION & AFFILIATES. All Rights Reserved. */ #ifndef _LINUX_TEGRA_IVC_BUS_H #define _LINUX_TEGRA_IVC_BUS_H +#include + #include #include #include @@ -32,8 +32,11 @@ struct tegra_ivc_driver { } ops; }; -static inline struct tegra_ivc_driver *to_tegra_ivc_driver( - struct device_driver *drv) +#if defined(NV_BUS_TYPE_STRUCT_MATCH_HAS_CONST_DRV_ARG) +static inline struct tegra_ivc_driver *to_tegra_ivc_driver(const struct device_driver *drv) +#else +static inline struct tegra_ivc_driver *to_tegra_ivc_driver(struct device_driver *drv) +#endif { if (drv == NULL) return NULL; diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index a7b28b86..f587a51d 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -97,6 +97,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_mq_destroy_queue NV_CONFTEST_FUNCTION_COMPILE_TESTS += blk_queue_max_hw_sectors NV_CONFTEST_FUNCTION_COMPILE_TESTS += block_device_operations_open_has_gendisk_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += block_device_operations_release_has_no_mode_arg +NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_match_has_const_drv_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_remove_has_int_return_type NV_CONFTEST_FUNCTION_COMPILE_TESTS += bus_type_struct_uevent_has_const_dev_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += class_attribute_struct_has_const_struct_class_attribute diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index aaace824..e96cc6bd 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -6662,6 +6662,26 @@ compile_test() { "NV_BLOCK_DEVICE_OPERATIONS_RELEASE_HAS_NO_MODE_ARG" "" "types" ;; + bus_type_struct_match_has_const_drv_arg) + # + # Determine if the 'match' callback from the 'bus_type' structure + # has a const 'struct device_driver' argument. + # + # Commit d69d80484598 ("driver core: have match() callback in struct + # bus_type take a const *") updated the match() function for the + # 'bus_type' structure to take a constant 'drv' argument. + # + CODE=" + #include + int conftest_bus_type_struct_match_has_const_drv_arg(struct device *dev, + const struct device_driver *drv, + struct bus_type *bus) { + return bus->match(dev, drv); + }" + + compile_check_conftest "$CODE" "NV_BUS_TYPE_STRUCT_MATCH_HAS_CONST_DRV_ARG" "" "types" + ;; + bus_type_struct_remove_has_int_return_type) # # Determine if the 'remove' callback from the 'bus_type' structure