Test and fix extract fan index and led index

This commit is contained in:
Florian RICHER 2025-03-11 21:29:25 +01:00
parent 0d285558c3
commit e29b9e2723
Signed by: florian.richer
GPG key ID: C73D37CBED7BFC77

View file

@ -49,6 +49,22 @@ struct lnp_device {
void *fans_data; void *fans_data;
}; };
static inline int lnp_extract_fan_and_led_index(struct led_classdev *cdev,
int *fan_index, int *led_index)
{
int ret;
char *substr = strstr(cdev->name, "fan-");
if (!substr)
return -EINVAL;
ret = ret = sscanf(substr, "fan-%d-led-%d", fan_index, led_index);
if (ret != 2)
return -EINVAL;
return 0;
}
static int lnp_rgb_let_brightness_set(struct led_classdev *cdev, static int lnp_rgb_let_brightness_set(struct led_classdev *cdev,
enum led_brightness) enum led_brightness)
{ {
@ -57,16 +73,14 @@ static int lnp_rgb_let_brightness_set(struct led_classdev *cdev,
struct lnp_device *lnp_dev = hid_get_drvdata(hdev); struct lnp_device *lnp_dev = hid_get_drvdata(hdev);
int ret, fan_index, led_index; int ret, fan_index, led_index;
ret = sscanf(cdev->name, "%*[^:]:%*[^:]:fan-%d-led-%d", &fan_index,
&led_index); ret = lnp_extract_fan_and_led_index(cdev, &fan_index, &led_index);
if (ret != 2) { if (ret) {
hid_warn(hdev, "Failed to get fan index and led_index for %s", hid_warn(hdev, "Failed to get fan index and led_index for %s",
lnp_dev->dev_name); lnp_dev->dev_name);
return -ENOMSG; return ret;
} }
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_fan *lnp_fan = lnp_dev->fans_data + fan_index;
struct lnp_rgb_led *lnp_rgb_led = lnp_fan->rgb_leds_data + led_index; struct lnp_rgb_led *lnp_rgb_led = lnp_fan->rgb_leds_data + led_index;