From 8409b7c652c1e4dfee8c076853eed2b1bca1354f Mon Sep 17 00:00:00 2001 From: Jon Hunter Date: Wed, 20 Sep 2023 11:04:08 +0100 Subject: [PATCH] net: can: mttcan: Make LED support depend on CAN_LEDS CONFIG_CAN_LEDS has been marked as BROKEN since Linux v4.19 and was finally removed in Linux v5.19. Only compile support for LEDS if enabled in the kernel. Long-term we need to move the MTTCAN driver to use LEDS_TRIGGER_NETDEV. This is a better solution for working with 3rd party Linux kernels that may backport upstream changes to the kernel and hence are not compatible with these existing version checks. Bug 4228080 Bug 4283911 Change-Id: I70e800c4a3699af59742d30111bc3a3cbf80bcb5 Signed-off-by: Jon Hunter Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/2982135 Reviewed-by: Laxman Dewangan GVS: Gerrit_Virtual_Submit --- drivers/net/can/mttcan/Makefile | 9 ++++++++- drivers/net/can/mttcan/native/m_ttcan_linux.c | 8 ++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/net/can/mttcan/Makefile b/drivers/net/can/mttcan/Makefile index dc65a979..7478bf84 100644 --- a/drivers/net/can/mttcan/Makefile +++ b/drivers/net/can/mttcan/Makefile @@ -1,6 +1,13 @@ -# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2022-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: GPL-2.0-only +# CAN_LEDS has been marked as BROKEN since Linux v4.19 and +# was finally removed in Linux v5.19. Only compile support +# for LEDS if enabled in the kernel. +ifdef CONFIG_CAN_LEDS +subdir-ccflags-y += -DCONFIG_CAN_LEDS +endif + obj-m := mttcan.o mttcan-y = native/m_ttcan_linux.o native/m_ttcan_sys.o hal/m_ttcan.o diff --git a/drivers/net/can/mttcan/native/m_ttcan_linux.c b/drivers/net/can/mttcan/native/m_ttcan_linux.c index 5e7cce30..377820d0 100644 --- a/drivers/net/can/mttcan/native/m_ttcan_linux.c +++ b/drivers/net/can/mttcan/native/m_ttcan_linux.c @@ -620,7 +620,7 @@ static void mttcan_tx_complete(struct net_device *dev) while (completed_tx) { msg_no = ffs(completed_tx) - 1; -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 19, 0) +#if defined(CONFIG_CAN_LEDS) can_led_event(dev, CAN_LED_EVENT_TX); #endif clear_bit(msg_no, &ttcan->tx_object); @@ -1312,7 +1312,7 @@ static int mttcan_open(struct net_device *dev) } napi_enable(&priv->napi); -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 19, 0) +#if defined(CONFIG_CAN_LEDS) can_led_event(dev, CAN_LED_EVENT_OPEN); #endif @@ -1348,7 +1348,7 @@ static int mttcan_close(struct net_device *dev) mttcan_power_down(dev); mttcan_pm_runtime_put_sync(priv); -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 19, 0) +#if defined(CONFIG_CAN_LEDS) can_led_event(dev, CAN_LED_EVENT_STOP); #endif return 0; @@ -1553,7 +1553,7 @@ static int register_mttcan_dev(struct net_device *dev) dev->netdev_ops = &mttcan_netdev_ops; err = register_candev(dev); -#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 19, 0) +#if defined(CONFIG_CAN_LEDS) if (!err) devm_can_led_init(dev); #endif