static struct workqueue_struct *leds_wq;
+static bool led_trigger_is_hw_controlled(struct led_classdev *led_cdev)
+{
+#ifdef CONFIG_LEDS_TRIGGERS
+ guard(rwsem_read)(&led_cdev->trigger_lock);
+ return led_cdev->trigger && led_cdev->trigger->trigger_type;
+#else
+ return false;
+#endif
+}
+
static ssize_t brightness_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct led_classdev *led_cdev = dev_get_drvdata(dev);
unsigned int brightness;
+ if (led_trigger_is_hw_controlled(led_cdev))
+ return -ENODATA;
+
mutex_lock(&led_cdev->led_access);
led_update_brightness(led_cdev);
brightness = led_cdev->brightness;