예제 #1
0
static void omap_pwm_led_work(struct work_struct *work)
{
	pr_debug("%s%s: \n", PASS1,__func__);
	struct omap_pwm_led *led = work_to_omap_pwm_led(work);

	if (led->brightness != LED_OFF) {
		omap_pwm_led_power_on(led);
		omap_pwm_led_set_pwm_cycle(led, led->brightness);
	} else {
		omap_pwm_led_power_off(led);
	}
}
예제 #2
0
static void omap_pwm_led_set(struct led_classdev *led_cdev,
			     enum led_brightness value)
{
	struct omap_pwm_led *led = cdev_to_omap_pwm_led(led_cdev);

	if (value != LED_OFF) {
		omap_pwm_led_power_on(led);
		omap_pwm_led_set_pwm_cycle(led, value);
	} else {
		omap_pwm_led_power_off(led);
	}
}
예제 #3
0
static void omap_pwm_led_work(struct work_struct *work)
{
	struct omap_pwm_led *led = work_to_omap_pwm_led(work);

	if (led->brightness != LED_OFF) {
		omap_pwm_led_power_on(led);
		omap_pwm_led_set_pwm_cycle(led, led->brightness);
	} else {
		omap_pwm_led_power_on(led);
		omap_pwm_led_set_pwm_cycle(led, led->brightness);
		omap_pwm_led_power_off(led);
	}
}
예제 #4
0
static void omap_pwm_led_set(struct led_classdev *led_cdev,
			     enum led_brightness value)
{
	struct omap_pwm_led *led = cdev_to_omap_pwm_led(led_cdev);

	pr_debug("%s: brightness: %i\n", __func__, value);

	if (led->brightness != value) {
		if (led->brightness == LED_OFF ||
			led_cdev->flags & LED_SUSPENDED) {
			/* LED currently OFF */
			omap_pwm_led_power_on(led);
			if (value < led->pdata->bkl_min*2) {
				// some backlight stepup can't start without medium value during variable time
				omap_pwm_led_set_pwm_cycle(led, led->pdata->bkl_min*3);
				omap_pwm_led_pad_enable(led);
				msleep(50);
				omap_pwm_led_set_pwm_cycle(led, value);
			
			} else {
				omap_pwm_led_set_pwm_cycle(led, value);
				omap_pwm_led_pad_enable(led);
			}
		} else
			/* just set the new cycle */
			omap_pwm_led_set_pwm_cycle(led, value);
			
		if (value == LED_OFF) {
			/* LED now suspended */
			omap_pwm_led_pad_disable(led);
			omap_pwm_led_set_pwm_cycle(led, value);
			omap_pwm_led_power_off(led);
		}
		led->brightness = value;
	}
}