Example #1
0
static ssize_t omap_pwm_led_off_period_show(struct class_device *cdev, char *buf)
{
	struct led_classdev *led_cdev = class_get_devdata(cdev);
	struct omap_pwm_led *led = cdev_to_omap_pwm_led(led_cdev);

	return sprintf(buf, "%u\n", led->off_period) + 1;
}
Example #2
0
static ssize_t omap_pwm_led_off_period_store(struct device *dev,
					struct device_attribute *attr,
					const char *buf, size_t size)
{
	pr_debug("%s%s: \n", PASS1,__func__);
	struct led_classdev *led_cdev = dev_get_drvdata(dev);
	struct omap_pwm_led *led = cdev_to_omap_pwm_led(led_cdev);
	int ret = -EINVAL;
	unsigned long val;
	char *after;
	size_t count;

	val = simple_strtoul(buf, &after, 10);
	count = after - buf;
	if (*after && isspace(*after))
		count++;

	if (count == size) {
		led->off_period = val;
		omap_pwm_led_set_blink(led);
		ret = count;
	}

	return ret;
}
Example #3
0
static ssize_t omap_pwm_led_off_period_show(struct device *dev,
				struct device_attribute *attr, char *buf)
{
	struct led_classdev *led_cdev = dev_get_drvdata(dev);
	struct omap_pwm_led *led = cdev_to_omap_pwm_led(led_cdev);

	return sprintf(buf, "%u\n", led->off_period) + 1;
}
Example #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);

	led->brightness = value;
	schedule_work(&led->work);
}
Example #5
0
static ssize_t omap_pwm_led_on_period_show(struct device *dev,
				struct device_attribute *attr, char *buf)
{
	pr_debug("%s%s: \n", PASS1,__func__);
	struct led_classdev *led_cdev = dev_get_drvdata(dev);
	struct omap_pwm_led *led = cdev_to_omap_pwm_led(led_cdev);

	return sprintf(buf, "%u\n", led->on_period) + 1;
}
Example #6
0
static void omap_pwm_led_set(struct led_classdev *led_cdev,
			     enum led_brightness value)
{
	pr_debug("%s%s: \n", PASS1,__func__);
	struct omap_pwm_led *led = cdev_to_omap_pwm_led(led_cdev);

	led->brightness = value;
	schedule_work(&led->work);
}
Example #7
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);
	}
}
Example #8
0
static ssize_t omap_pwm_led_off_period_store(struct class_device *cdev,
					     const char *buf, size_t size)
{
	struct led_classdev *led_cdev = class_get_devdata(cdev);
	struct omap_pwm_led *led = cdev_to_omap_pwm_led(led_cdev);
	int ret = -EINVAL;
	unsigned long val;
	char *after;
	size_t count;

	val = simple_strtoul(buf, &after, 10);
	count = after - buf;
	if (*after && isspace(*after))
		count++;

	if (count == size) {
		led->off_period = val;
		omap_pwm_led_set_blink(led);
		ret = count;
	}

	return ret;
}
Example #9
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;
	}
}