From efbbf91f79093a6ba1ba8c1c0bbe23c4aa067c97 Mon Sep 17 00:00:00 2001 From: Laxman Dewangan Date: Tue, 5 Dec 2023 09:30:43 +0000 Subject: [PATCH] pwm: Use conftest to findout if pwm_ops has owner Use conftest method to find out the pwm_ops has owner member or not. The owner member from pwm_ops struct has been removed from Linux 6.7 with commit 384461abcab6 ("pwm: Manage owner assignment implicitly for drivers"). Bug 4346767 Change-Id: I7b98463b16d400a656a79db3a0c7aa645f20085d Signed-off-by: Laxman Dewangan Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3028573 (cherry picked from commit b0bfc4b801d37a5716385e9c7509ca1bc5b8db5a) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3030107 Reviewed-by: Jonathan Hunter Tested-by: Jonathan Hunter GVS: Gerrit_Virtual_Submit --- drivers/media/platform/tegra/cdi/cdi_pwm.c | 6 +++++- drivers/media/platform/tegra/isc/isc_pwm.c | 6 +++++- drivers/pwm/pwm-tegra-tachometer.c | 6 +++++- scripts/conftest/Makefile | 1 + scripts/conftest/conftest.sh | 16 ++++++++++++++++ 5 files changed, 32 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/tegra/cdi/cdi_pwm.c b/drivers/media/platform/tegra/cdi/cdi_pwm.c index fc2fc2f0..fb851a2c 100644 --- a/drivers/media/platform/tegra/cdi/cdi_pwm.c +++ b/drivers/media/platform/tegra/cdi/cdi_pwm.c @@ -1,5 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 -// Copyright (c) 2016-2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright (c) 2016-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + +#include #include #include @@ -130,7 +132,9 @@ static const struct pwm_ops cdi_pwm_ops = { .enable = cdi_pwm_enable, .disable = cdi_pwm_disable, #endif +#if defined(NV_PWM_OPS_STRUCT_HAS_OWNER) /* Linux 6.7 */ .owner = THIS_MODULE, +#endif }; static int cdi_pwm_probe(struct platform_device *pdev) diff --git a/drivers/media/platform/tegra/isc/isc_pwm.c b/drivers/media/platform/tegra/isc/isc_pwm.c index 8cb129d8..ae40ab54 100644 --- a/drivers/media/platform/tegra/isc/isc_pwm.c +++ b/drivers/media/platform/tegra/isc/isc_pwm.c @@ -1,5 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 -// Copyright (c) 2016-2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright (c) 2016-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + +#include #include #include @@ -130,7 +132,9 @@ static const struct pwm_ops isc_pwm_ops = { .enable = isc_pwm_enable, .disable = isc_pwm_disable, #endif +#if defined(NV_PWM_OPS_STRUCT_HAS_OWNER) /* Linux 6.7 */ .owner = THIS_MODULE, +#endif }; static int isc_pwm_probe(struct platform_device *pdev) diff --git a/drivers/pwm/pwm-tegra-tachometer.c b/drivers/pwm/pwm-tegra-tachometer.c index 3de12efb..625434a6 100644 --- a/drivers/pwm/pwm-tegra-tachometer.c +++ b/drivers/pwm/pwm-tegra-tachometer.c @@ -1,5 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 -// Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +// Copyright (c) 2022-2023, NVIDIA CORPORATION. All rights reserved. + +#include #include #include @@ -316,7 +318,9 @@ static const struct pwm_ops pwm_tegra_tach_ops = { .apply = tegra_pwm_apply, #endif .capture = pwm_tegra_tacho_capture, +#if defined(NV_PWM_OPS_STRUCT_HAS_OWNER) /* Linux 6.7 */ .owner = THIS_MODULE, +#endif }; static void pwm_tegra_tach_read_platform_data(struct pwm_tegra_tach *ptt) diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index 0540908f..8f92c849 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -124,6 +124,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += mii_bus_struct_has_write_c45 NV_CONFTEST_FUNCTION_COMPILE_TESTS += netif_set_tso_max_size NV_CONFTEST_FUNCTION_COMPILE_TESTS += netif_napi_add_weight NV_CONFTEST_FUNCTION_COMPILE_TESTS += pde_data +NV_CONFTEST_FUNCTION_COMPILE_TESTS += pwm_ops_struct_has_owner NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_disable_pcie_error_reporting NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_enable_pcie_error_reporting NV_CONFTEST_FUNCTION_COMPILE_TESTS += pci_epf_driver_struct_probe_has_id_arg diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index d2c62fd0..bfb1934d 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -6987,6 +6987,22 @@ compile_test() { compile_check_conftest "$CODE" "NV_MII_BUS_STRUCT_HAS_WRITE_C45" "" "types" ;; + pwm_ops_struct_has_owner) + # + # Determine if the pwm_ops struct has an owner member. + # + # Added by commit 384461abcab6 ("pwm: Manage owner assignment implicitly + # for drivers") in Linux 6.7. + # + CODE=" + #include + int conftest_pwm_ops_struct_has_owner(void) { + return offsetof(struct pwm_ops, owner); + }" + + compile_check_conftest "$CODE" "NV_PWM_OPS_STRUCT_HAS_OWNER" "" "types" + ;; + pci_disable_pcie_error_reporting) # # Determine if the pci_disable_pcie_error_reporting() API available or not.