Loading drivers/leds/leds-pca9532.c +12 −16 Original line number Diff line number Diff line Loading @@ -158,7 +158,7 @@ static void pca9532_setled(struct pca9532_led *led) mutex_unlock(&data->update_lock); } static void pca9532_set_brightness(struct led_classdev *led_cdev, static int pca9532_set_brightness(struct led_classdev *led_cdev, enum led_brightness value) { int err = 0; Loading @@ -172,9 +172,12 @@ static void pca9532_set_brightness(struct led_classdev *led_cdev, led->state = PCA9532_PWM0; /* Thecus: hardcode one pwm */ err = pca9532_calcpwm(led->client, 0, 0, value); if (err) return; /* XXX: led api doesn't allow error code? */ return err; } schedule_work(&led->work); if (led->state == PCA9532_PWM0) pca9532_setpwm(led->client, 0); pca9532_setled(led); return err; } static int pca9532_set_blink(struct led_classdev *led_cdev, Loading @@ -198,7 +201,10 @@ static int pca9532_set_blink(struct led_classdev *led_cdev, err = pca9532_calcpwm(client, 0, psc, led_cdev->brightness); if (err) return err; schedule_work(&led->work); if (led->state == PCA9532_PWM0) pca9532_setpwm(led->client, 0); pca9532_setled(led); return 0; } Loading Loading @@ -233,15 +239,6 @@ static void pca9532_input_work(struct work_struct *work) mutex_unlock(&data->update_lock); } static void pca9532_led_work(struct work_struct *work) { struct pca9532_led *led; led = container_of(work, struct pca9532_led, work); if (led->state == PCA9532_PWM0) pca9532_setpwm(led->client, 0); pca9532_setled(led); } #ifdef CONFIG_LEDS_PCA9532_GPIO static int pca9532_gpio_request_pin(struct gpio_chip *gc, unsigned offset) { Loading Loading @@ -307,7 +304,6 @@ static int pca9532_destroy_devices(struct pca9532_data *data, int n_devs) break; case PCA9532_TYPE_LED: led_classdev_unregister(&data->leds[i].ldev); cancel_work_sync(&data->leds[i].work); break; case PCA9532_TYPE_N2100_BEEP: if (data->idev != NULL) { Loading Loading @@ -359,9 +355,9 @@ static int pca9532_configure(struct i2c_client *client, led->name = pled->name; led->ldev.name = led->name; led->ldev.brightness = LED_OFF; led->ldev.brightness_set = pca9532_set_brightness; led->ldev.brightness_set_blocking = pca9532_set_brightness; led->ldev.blink_set = pca9532_set_blink; INIT_WORK(&led->work, pca9532_led_work); err = led_classdev_register(&client->dev, &led->ldev); if (err < 0) { dev_err(&client->dev, Loading Loading
drivers/leds/leds-pca9532.c +12 −16 Original line number Diff line number Diff line Loading @@ -158,7 +158,7 @@ static void pca9532_setled(struct pca9532_led *led) mutex_unlock(&data->update_lock); } static void pca9532_set_brightness(struct led_classdev *led_cdev, static int pca9532_set_brightness(struct led_classdev *led_cdev, enum led_brightness value) { int err = 0; Loading @@ -172,9 +172,12 @@ static void pca9532_set_brightness(struct led_classdev *led_cdev, led->state = PCA9532_PWM0; /* Thecus: hardcode one pwm */ err = pca9532_calcpwm(led->client, 0, 0, value); if (err) return; /* XXX: led api doesn't allow error code? */ return err; } schedule_work(&led->work); if (led->state == PCA9532_PWM0) pca9532_setpwm(led->client, 0); pca9532_setled(led); return err; } static int pca9532_set_blink(struct led_classdev *led_cdev, Loading @@ -198,7 +201,10 @@ static int pca9532_set_blink(struct led_classdev *led_cdev, err = pca9532_calcpwm(client, 0, psc, led_cdev->brightness); if (err) return err; schedule_work(&led->work); if (led->state == PCA9532_PWM0) pca9532_setpwm(led->client, 0); pca9532_setled(led); return 0; } Loading Loading @@ -233,15 +239,6 @@ static void pca9532_input_work(struct work_struct *work) mutex_unlock(&data->update_lock); } static void pca9532_led_work(struct work_struct *work) { struct pca9532_led *led; led = container_of(work, struct pca9532_led, work); if (led->state == PCA9532_PWM0) pca9532_setpwm(led->client, 0); pca9532_setled(led); } #ifdef CONFIG_LEDS_PCA9532_GPIO static int pca9532_gpio_request_pin(struct gpio_chip *gc, unsigned offset) { Loading Loading @@ -307,7 +304,6 @@ static int pca9532_destroy_devices(struct pca9532_data *data, int n_devs) break; case PCA9532_TYPE_LED: led_classdev_unregister(&data->leds[i].ldev); cancel_work_sync(&data->leds[i].work); break; case PCA9532_TYPE_N2100_BEEP: if (data->idev != NULL) { Loading Loading @@ -359,9 +355,9 @@ static int pca9532_configure(struct i2c_client *client, led->name = pled->name; led->ldev.name = led->name; led->ldev.brightness = LED_OFF; led->ldev.brightness_set = pca9532_set_brightness; led->ldev.brightness_set_blocking = pca9532_set_brightness; led->ldev.blink_set = pca9532_set_blink; INIT_WORK(&led->work, pca9532_led_work); err = led_classdev_register(&client->dev, &led->ldev); if (err < 0) { dev_err(&client->dev, Loading