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;
|
||||
};
|
||||
|
||||
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,
|
||||
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);
|
||||
|
||||
int ret, fan_index, led_index;
|
||||
ret = sscanf(cdev->name, "%*[^:]:%*[^:]:fan-%d-led-%d", &fan_index,
|
||||
&led_index);
|
||||
if (ret != 2) {
|
||||
|
||||
ret = lnp_extract_fan_and_led_index(cdev, &fan_index, &led_index);
|
||||
if (ret) {
|
||||
hid_warn(hdev, "Failed to get fan index and led_index for %s",
|
||||
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_rgb_led *lnp_rgb_led = lnp_fan->rgb_leds_data + led_index;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue