Test and fix extract fan index and led index
This commit is contained in:
parent
0d285558c3
commit
e29b9e2723
1 changed files with 20 additions and 6 deletions
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue