From 0d285558c3c34e97eec2a10765cad220ecf8ea82 Mon Sep 17 00:00:00 2001 From: Florian RICHER Date: Mon, 10 Mar 2025 13:58:10 +0100 Subject: [PATCH] Begin add get lnp_rgb_led from cdev --- .../lightning_node_pro_led.c | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/10_lightning_node_pro_led/lightning_node_pro_led.c b/10_lightning_node_pro_led/lightning_node_pro_led.c index 5b42122..384e4d4 100644 --- a/10_lightning_node_pro_led/lightning_node_pro_led.c +++ b/10_lightning_node_pro_led/lightning_node_pro_led.c @@ -49,6 +49,35 @@ struct lnp_device { void *fans_data; }; +static int lnp_rgb_let_brightness_set(struct led_classdev *cdev, + enum led_brightness) +{ + struct hid_device *hdev = to_hid_device(cdev->dev->parent); + struct led_classdev_mc *mc_cdev = lcdev_to_mccdev(cdev); + struct lnp_device *lnp_dev = hid_get_drvdata(hdev); + + int ret, fan_index, led_index; + ret = sscanf(cdev->name, "%*[^:]:%*[^:]:fan-%d-led-%d", &fan_index, + &led_index); + if (ret != 2) { + hid_warn(hdev, "Failed to get fan index and led_index for %s", + lnp_dev->dev_name); + return -ENOMSG; + } + + hid_info(hdev, "Fan Index: %d, Led Index: %d", fan_index, led_index); + + struct lnp_fan *lnp_fan = lnp_dev->fans_data + fan_index; + struct lnp_rgb_led *lnp_rgb_led = lnp_fan->rgb_leds_data + led_index; + + return 0; +} + +static enum led_brightness lnp_rgb_let_brightness_get(struct led_classdev *cdev) +{ + return 0; +} + static inline int lnp_register_rgb_led(struct lnp_device *lnp_dev, struct lnp_fan *fan_data, struct lnp_rgb_led *rgb_led_data) @@ -90,6 +119,8 @@ static inline int lnp_register_rgb_led(struct lnp_device *lnp_dev, led_cdev->brightness = 0; led_cdev->max_brightness = 255; + led_cdev->brightness_get = lnp_rgb_let_brightness_get; + led_cdev->brightness_set_blocking = lnp_rgb_let_brightness_set; ret = devm_led_classdev_multicolor_register(&hdev->dev, &rgb_led_data->cdev);