mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 14:34:27 -05:00 
			
		
		
		
	Backport patch adding support for LED PHY directly in PHY ops struct. Add new PHYLIB_LEDS config and refresh patches. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
		
			
				
	
	
		
			58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 7df1f14c04cbb1950e79c19793420f87227c3e80 Mon Sep 17 00:00:00 2001
 | 
						|
From: Andrew Lunn <andrew@lunn.ch>
 | 
						|
Date: Tue, 8 Aug 2023 23:04:33 +0200
 | 
						|
Subject: [PATCH 1/4] led: trig: netdev: Fix requesting offload device
 | 
						|
 | 
						|
When the netdev trigger is activates, it tries to determine what
 | 
						|
device the LED blinks for, and what the current blink mode is.
 | 
						|
 | 
						|
The documentation for hw_control_get() says:
 | 
						|
 | 
						|
	 * Return 0 on success, a negative error number on failing parsing the
 | 
						|
	 * initial mode. Error from this function is NOT FATAL as the device
 | 
						|
	 * may be in a not supported initial state by the attached LED trigger.
 | 
						|
	 */
 | 
						|
 | 
						|
For the Marvell PHY and the Armada 370-rd board, the initial LED blink
 | 
						|
mode is not supported by the trigger, so it returns an error. This
 | 
						|
resulted in not getting the device the LED is blinking for. As a
 | 
						|
result, the device is unknown and offloaded is never performed.
 | 
						|
 | 
						|
Change to condition to always get the device if offloading is
 | 
						|
supported, and reduce the scope of testing for an error from
 | 
						|
hw_control_get() to skip setting trigger internal state if there is an
 | 
						|
error.
 | 
						|
 | 
						|
Reviewed-by: Simon Horman <simon.horman@corigine.com>
 | 
						|
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
 | 
						|
Tested-by: Daniel Golle <daniel@makrotopia.org>
 | 
						|
Link: https://lore.kernel.org/r/20230808210436.838995-2-andrew@lunn.ch
 | 
						|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
 | 
						|
---
 | 
						|
 drivers/leds/trigger/ledtrig-netdev.c | 8 +++++---
 | 
						|
 1 file changed, 5 insertions(+), 3 deletions(-)
 | 
						|
 | 
						|
--- a/drivers/leds/trigger/ledtrig-netdev.c
 | 
						|
+++ b/drivers/leds/trigger/ledtrig-netdev.c
 | 
						|
@@ -564,15 +564,17 @@ static int netdev_trig_activate(struct l
 | 
						|
 	/* Check if hw control is active by default on the LED.
 | 
						|
 	 * Init already enabled mode in hw control.
 | 
						|
 	 */
 | 
						|
-	if (supports_hw_control(led_cdev) &&
 | 
						|
-	    !led_cdev->hw_control_get(led_cdev, &mode)) {
 | 
						|
+	if (supports_hw_control(led_cdev)) {
 | 
						|
 		dev = led_cdev->hw_control_get_device(led_cdev);
 | 
						|
 		if (dev) {
 | 
						|
 			const char *name = dev_name(dev);
 | 
						|
 
 | 
						|
 			set_device_name(trigger_data, name, strlen(name));
 | 
						|
 			trigger_data->hw_control = true;
 | 
						|
-			trigger_data->mode = mode;
 | 
						|
+
 | 
						|
+			rc = led_cdev->hw_control_get(led_cdev, &mode);
 | 
						|
+			if (!rc)
 | 
						|
+				trigger_data->mode = mode;
 | 
						|
 		}
 | 
						|
 	}
 | 
						|
 
 |