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; }
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; }
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; }
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); }
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; }
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); }
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); } }
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; }
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; } }