if (brightness == LED_OFF) { /* Flash OFF */
ret = regmap_update_bits(regmap,
MAX77705_RGBLED_REG_LEDEN,
MAX77705_LED_EN_MASK << MAX77705_LED_EN_SHIFT(channel), 0);
} else { /* Set current */
ret = regmap_write(regmap, MAX77705_LED_REG_BRIGHTNESS(channel),
brightness); if (ret < 0) return ret;
staticint max77705_parse_subled(struct device *dev, struct fwnode_handle *np, struct mc_subled *info)
{
u32 color = LED_COLOR_ID_GREEN;
u32 reg; int ret;
ret = fwnode_property_read_u32(np, "reg", ®); if (ret || !reg || reg >= MAX77705_LED_NUM_LEDS) return dev_err_probe(dev, -EINVAL, "invalid \"reg\" of %pOFn\n", np);
info->channel = reg;
ret = fwnode_property_read_u32(np, "color", &color); if (ret < 0 && ret != -EINVAL) return dev_err_probe(dev, ret, "failed to parse \"color\" of %pOF\n", np);
led = devm_kzalloc(dev, sizeof(*led), GFP_KERNEL); if (!led) return -ENOMEM;
ret = fwnode_property_read_u32(np, "color", &color); if (ret < 0 && ret != -EINVAL) return dev_err_probe(dev, ret, "failed to parse \"color\" of %pOF\n", np);
led->regmap = regmap;
init_data.fwnode = np;
if (color == LED_COLOR_ID_RGB) { int num_channels = of_get_available_child_count(to_of_node(np));
ret = fwnode_property_read_u32(np, "reg", ®); if (ret || reg >= MAX77705_LED_NUM_LEDS) return -EINVAL;
info = devm_kcalloc(dev, num_channels, sizeof(*info), GFP_KERNEL); if (!info) return -ENOMEM;
ret = devm_led_classdev_multicolor_register_ext(dev, &led->mcdev, &init_data); if (ret) return ret;
ret = max77705_led_brightness_set_multi(&led->cdev, LED_OFF); if (ret) return ret;
} else {
info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL); if (!info) return -ENOMEM;
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.