From a86b3af50651a4030c0c6531f4c3b42f1ebea30b Mon Sep 17 00:00:00 2001 From: Jon Hunter Date: Mon, 4 Dec 2023 09:58:20 +0000 Subject: [PATCH] drivers: pwm: Fix build for Linux v6.8 Commit 54c86dd20bba ("pwm: Replace PWM chip unique base by unique ID") removed the 'base' field of the 'pwm_chip' structure replacing it with an 'id' field. The new 'id' is initialised by the PWM driver core and does not need to be configured by the PWM drivers. Add a test for conftest to detect if the 'pwm_chip' structure has the 'base' field and update the various PWM driver to only set this field if present. Bug 4448428 Change-Id: I7cf466eddba4aedb57db84534e3cbf99be64151e Signed-off-by: Jon Hunter Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3027486 Reviewed-by: Laxman Dewangan (cherry picked from commit 10fd025187933f3d6a7c3df9f5e74f94c7a53b21) Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3055253 GVS: Gerrit_Virtual_Submit --- drivers/media/platform/tegra/cdi/cdi_pwm.c | 4 +++- drivers/media/platform/tegra/isc/isc_pwm.c | 4 +++- drivers/pwm/pwm-tegra-tachometer.c | 4 +++- scripts/conftest/Makefile | 1 + scripts/conftest/conftest.sh | 17 +++++++++++++++++ 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/tegra/cdi/cdi_pwm.c b/drivers/media/platform/tegra/cdi/cdi_pwm.c index fb851a2c..4254df41 100644 --- a/drivers/media/platform/tegra/cdi/cdi_pwm.c +++ b/drivers/media/platform/tegra/cdi/cdi_pwm.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0 -// Copyright (c) 2016-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright (c) 2016-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. #include @@ -163,7 +163,9 @@ static int cdi_pwm_probe(struct platform_device *pdev) info->chip.dev = &pdev->dev; info->chip.ops = &cdi_pwm_ops; +#if defined(NV_PWM_CHIP_STRUCT_HAS_BASE_ARG) info->chip.base = -1; +#endif info->chip.npwm = npwm; info->chip.of_xlate = of_cdi_pwm_xlate; info->chip.of_pwm_n_cells = 2; diff --git a/drivers/media/platform/tegra/isc/isc_pwm.c b/drivers/media/platform/tegra/isc/isc_pwm.c index ae40ab54..8c6e1ea0 100644 --- a/drivers/media/platform/tegra/isc/isc_pwm.c +++ b/drivers/media/platform/tegra/isc/isc_pwm.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0 -// Copyright (c) 2016-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +// Copyright (c) 2016-2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. #include @@ -163,7 +163,9 @@ static int isc_pwm_probe(struct platform_device *pdev) info->chip.dev = &pdev->dev; info->chip.ops = &isc_pwm_ops; +#if defined(NV_PWM_CHIP_STRUCT_HAS_BASE_ARG) info->chip.base = -1; +#endif info->chip.npwm = npwm; info->chip.of_xlate = of_isc_pwm_xlate; info->chip.of_pwm_n_cells = 2; diff --git a/drivers/pwm/pwm-tegra-tachometer.c b/drivers/pwm/pwm-tegra-tachometer.c index 625434a6..4f05b743 100644 --- a/drivers/pwm/pwm-tegra-tachometer.c +++ b/drivers/pwm/pwm-tegra-tachometer.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0 -// Copyright (c) 2022-2023, NVIDIA CORPORATION. All rights reserved. +// Copyright (c) 2022-2024, NVIDIA CORPORATION. All rights reserved. #include @@ -430,7 +430,9 @@ static int pwm_tegra_tach_probe(struct platform_device *pdev) ptt->chip.dev = &pdev->dev; ptt->chip.ops = &pwm_tegra_tach_ops; +#if defined(NV_PWM_CHIP_STRUCT_HAS_BASE_ARG) ptt->chip.base = -1; +#endif ptt->chip.npwm = 1; ret = pwmchip_add(&ptt->chip); diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index 84ad8a47..3ade9d17 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -131,6 +131,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += of_get_named_gpio_flags NV_CONFTEST_FUNCTION_COMPILE_TESTS += gpio_chip_struct_has_of_node_present NV_CONFTEST_FUNCTION_COMPILE_TESTS += gpiochip_find NV_CONFTEST_FUNCTION_COMPILE_TESTS += pde_data +NV_CONFTEST_FUNCTION_COMPILE_TESTS += pwm_chip_struct_has_base_arg 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 diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index e7f6b1a9..a2f5ea6f 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -7110,6 +7110,23 @@ compile_test() { compile_check_conftest "$CODE" "NV_MII_BUS_STRUCT_HAS_WRITE_C45" "" "types" ;; + pwm_chip_struct_has_base_arg) + # + # Determine if 'struct pwm_chip' has the 'base' field. + # + # Commit 54c86dd20bba ("pwm: Replace PWM chip unique base by unique ID") + # removed the 'base' field of the 'pwm_chip' structure replacing it with + # an 'id' field. + # + CODE=" + #include + int conftest_pwm_chip_struct_has_base_arg(void) { + return offsetof(struct pwm_chip, base); + }" + + compile_check_conftest "$CODE" "NV_PWM_CHIP_STRUCT_HAS_BASE_ARG" "" "types" + ;; + pwm_ops_struct_has_owner) # # Determine if the pwm_ops struct has an owner member.