// SPDX-License-Identifier: GPL-2.0-only /* * linux/drivers/leds-pwm.c * * simple PWM based LED control * * Copyright 2009 Luotao Fu @ Pengutronix (l.fu@pengutronix.de) * * based on leds-gpio.c by Raphael Assenat <raph@8d.com>
*/
if (led_dat->active_low)
duty = led_dat->pwmstate.period - duty;
led_dat->pwmstate.duty_cycle = duty; /* * Disabling a PWM doesn't guarantee that it emits the inactive level. * So keep it on. Only for suspending the PWM should be disabled because * otherwise it refuses to suspend. The possible downside is that the * LED might stay (or even go) on.
*/
led_dat->pwmstate.enabled = !(led_cdev->flags & LED_SUSPENDED); return pwm_apply_might_sleep(led_dat->pwm, &led_dat->pwmstate);
}
staticint led_pwm_default_brightness_get(struct fwnode_handle *fwnode, int max_brightness)
{ unsignedint default_brightness; int ret;
ret = fwnode_property_read_u32(fwnode, "default-brightness",
&default_brightness); if (ret < 0 || default_brightness > max_brightness)
default_brightness = max_brightness;
/* init PWM state */ switch (led->default_state) { case LEDS_DEFSTATE_KEEP:
pwm_get_state(led_data->pwm, &led_data->pwmstate); if (led_data->pwmstate.period) break;
led->default_state = LEDS_DEFSTATE_OFF;
dev_warn(dev, "failed to read period for %s, default to off",
led->name);
fallthrough; default:
pwm_init_state(led_data->pwm, &led_data->pwmstate); break;
}
/* set brightness */ switch (led->default_state) { case LEDS_DEFSTATE_ON:
led_data->cdev.brightness =
led_pwm_default_brightness_get(fwnode, led->max_brightness); break; case LEDS_DEFSTATE_KEEP:
{
uint64_t brightness;
ret = devm_led_classdev_register_ext(dev, &led_data->cdev, &init_data); if (ret) {
dev_err(dev, "failed to register PWM led for %s: %d\n",
led->name, ret); return ret;
}
if (led->default_state != LEDS_DEFSTATE_KEEP) {
ret = led_pwm_set(&led_data->cdev, led_data->cdev.brightness); if (ret) {
dev_err(dev, "failed to set led PWM value for %s: %d",
led->name, ret); return ret;
}
}
MODULE_AUTHOR("Luotao Fu ");
MODULE_DESCRIPTION("generic PWM LED driver");
MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:leds-pwm");
Messung V0.5
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.