@@ -1084,6 +1084,17 @@ static ssize_t wacom_luminance_store(struct wacom *wacom, u8 *dest,
10841084 mutex_lock (& wacom -> lock );
10851085
10861086 * dest = value & 0x7f ;
1087+ for (unsigned int i = 0 ; i < wacom -> led .count ; i ++ ) {
1088+ struct wacom_group_leds * group = & wacom -> led .groups [i ];
1089+
1090+ for (unsigned int j = 0 ; j < group -> count ; j ++ ) {
1091+ if (dest == & wacom -> led .llv )
1092+ group -> leds [j ].llv = * dest ;
1093+ else if (dest == & wacom -> led .hlv )
1094+ group -> leds [j ].hlv = * dest ;
1095+ }
1096+ }
1097+
10871098 err = wacom_led_control (wacom );
10881099
10891100 mutex_unlock (& wacom -> lock );
@@ -1302,10 +1313,10 @@ enum led_brightness wacom_leds_brightness_get(struct wacom_led *led)
13021313 struct wacom * wacom = led -> wacom ;
13031314
13041315 if (wacom -> led .max_hlv )
1305- return led -> hlv * LED_FULL / wacom -> led .max_hlv ;
1316+ return wacom_rescale ( led -> hlv , wacom -> led .max_hlv , LED_FULL ) ;
13061317
13071318 if (wacom -> led .max_llv )
1308- return led -> llv * LED_FULL / wacom -> led .max_llv ;
1319+ return wacom_rescale ( led -> llv , wacom -> led .max_llv , LED_FULL ) ;
13091320
13101321 /* device doesn't support brightness tuning */
13111322 return LED_FULL ;
@@ -1337,8 +1348,8 @@ static int wacom_led_brightness_set(struct led_classdev *cdev,
13371348 goto out ;
13381349 }
13391350
1340- led -> llv = wacom -> led .llv = wacom -> led .max_llv * brightness / LED_FULL ;
1341- led -> hlv = wacom -> led .hlv = wacom -> led .max_hlv * brightness / LED_FULL ;
1351+ led -> llv = wacom -> led .llv = wacom_rescale ( brightness , LED_FULL , wacom -> led .max_llv ) ;
1352+ led -> hlv = wacom -> led .hlv = wacom_rescale ( brightness , LED_FULL , wacom -> led .max_hlv ) ;
13421353
13431354 wacom -> led .groups [led -> group ].select = led -> id ;
13441355
0 commit comments