Begin add get lnp_rgb_led from cdev

This commit is contained in:
Florian RICHER 2025-03-10 13:58:10 +01:00
parent 5095cabcad
commit 0d285558c3

View file

@ -49,6 +49,35 @@ struct lnp_device {
void *fans_data; 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, static inline int lnp_register_rgb_led(struct lnp_device *lnp_dev,
struct lnp_fan *fan_data, struct lnp_fan *fan_data,
struct lnp_rgb_led *rgb_led_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->brightness = 0;
led_cdev->max_brightness = 255; 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, ret = devm_led_classdev_multicolor_register(&hdev->dev,
&rgb_led_data->cdev); &rgb_led_data->cdev);