Commit 6b65189a authored by Dmitry Torokhov's avatar Dmitry Torokhov

Input: ims-pcu - switch to using brightness_set_blocking()

Now that LEDs core allows "blocking" flavor of "set brightness" method we
can use it and get rid of private work item.
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent e3dd12f0
...@@ -39,8 +39,6 @@ struct ims_pcu_gamepad { ...@@ -39,8 +39,6 @@ struct ims_pcu_gamepad {
struct ims_pcu_backlight { struct ims_pcu_backlight {
struct led_classdev cdev; struct led_classdev cdev;
struct work_struct work;
enum led_brightness desired_brightness;
char name[32]; char name[32];
}; };
...@@ -949,14 +947,14 @@ static void ims_pcu_process_async_firmware(const struct firmware *fw, ...@@ -949,14 +947,14 @@ static void ims_pcu_process_async_firmware(const struct firmware *fw,
#define IMS_PCU_MAX_BRIGHTNESS 31998 #define IMS_PCU_MAX_BRIGHTNESS 31998
static void ims_pcu_backlight_work(struct work_struct *work) static int ims_pcu_backlight_set_brightness(struct led_classdev *cdev,
enum led_brightness value)
{ {
struct ims_pcu_backlight *backlight = struct ims_pcu_backlight *backlight =
container_of(work, struct ims_pcu_backlight, work); container_of(cdev, struct ims_pcu_backlight, cdev);
struct ims_pcu *pcu = struct ims_pcu *pcu =
container_of(backlight, struct ims_pcu, backlight); container_of(backlight, struct ims_pcu, backlight);
int desired_brightness = backlight->desired_brightness; __le16 br_val = cpu_to_le16(value);
__le16 br_val = cpu_to_le16(desired_brightness);
int error; int error;
mutex_lock(&pcu->cmd_mutex); mutex_lock(&pcu->cmd_mutex);
...@@ -966,19 +964,11 @@ static void ims_pcu_backlight_work(struct work_struct *work) ...@@ -966,19 +964,11 @@ static void ims_pcu_backlight_work(struct work_struct *work)
if (error && error != -ENODEV) if (error && error != -ENODEV)
dev_warn(pcu->dev, dev_warn(pcu->dev,
"Failed to set desired brightness %u, error: %d\n", "Failed to set desired brightness %u, error: %d\n",
desired_brightness, error); value, error);
mutex_unlock(&pcu->cmd_mutex); mutex_unlock(&pcu->cmd_mutex);
}
static void ims_pcu_backlight_set_brightness(struct led_classdev *cdev, return error;
enum led_brightness value)
{
struct ims_pcu_backlight *backlight =
container_of(cdev, struct ims_pcu_backlight, cdev);
backlight->desired_brightness = value;
schedule_work(&backlight->work);
} }
static enum led_brightness static enum led_brightness
...@@ -1015,14 +1005,14 @@ static int ims_pcu_setup_backlight(struct ims_pcu *pcu) ...@@ -1015,14 +1005,14 @@ static int ims_pcu_setup_backlight(struct ims_pcu *pcu)
struct ims_pcu_backlight *backlight = &pcu->backlight; struct ims_pcu_backlight *backlight = &pcu->backlight;
int error; int error;
INIT_WORK(&backlight->work, ims_pcu_backlight_work);
snprintf(backlight->name, sizeof(backlight->name), snprintf(backlight->name, sizeof(backlight->name),
"pcu%d::kbd_backlight", pcu->device_no); "pcu%d::kbd_backlight", pcu->device_no);
backlight->cdev.name = backlight->name; backlight->cdev.name = backlight->name;
backlight->cdev.max_brightness = IMS_PCU_MAX_BRIGHTNESS; backlight->cdev.max_brightness = IMS_PCU_MAX_BRIGHTNESS;
backlight->cdev.brightness_get = ims_pcu_backlight_get_brightness; backlight->cdev.brightness_get = ims_pcu_backlight_get_brightness;
backlight->cdev.brightness_set = ims_pcu_backlight_set_brightness; backlight->cdev.brightness_set_blocking =
ims_pcu_backlight_set_brightness;
error = led_classdev_register(pcu->dev, &backlight->cdev); error = led_classdev_register(pcu->dev, &backlight->cdev);
if (error) { if (error) {
...@@ -1040,7 +1030,6 @@ static void ims_pcu_destroy_backlight(struct ims_pcu *pcu) ...@@ -1040,7 +1030,6 @@ static void ims_pcu_destroy_backlight(struct ims_pcu *pcu)
struct ims_pcu_backlight *backlight = &pcu->backlight; struct ims_pcu_backlight *backlight = &pcu->backlight;
led_classdev_unregister(&backlight->cdev); led_classdev_unregister(&backlight->cdev);
cancel_work_sync(&backlight->work);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment