ret = regmap_read(priv->map, RTL8366RB_LED_X_X_CTRL_REG(led_group),
&val); if (ret) {
dev_err(priv->dev, "error reading LED on port %d group %d\n",
led_group, port_num); return ret;
}
ret = regmap_update_bits(priv->map,
RTL8366RB_LED_X_X_CTRL_REG(led_group),
rtl8366rb_led_group_port_mask(led_group,
port_num),
enable ? 0xffff : 0); if (ret) {
dev_err(priv->dev, "error updating LED on port %d group %d\n",
led_group, port_num); return ret;
}
/* Change the LED group to manual controlled LEDs if required */
ret = rb8366rb_set_ledgroup_mode(priv, led_group,
RTL8366RB_LEDGROUP_FORCE);
if (ret) {
dev_err(priv->dev, "error updating LED GROUP group %d\n",
led_group); return ret;
}
ret = devm_led_classdev_register_ext(priv->dev, &led->cdev, &init_data); if (ret) {
dev_warn(priv->dev, "Failed to init LED %d for port %d",
led_group, dp->index); return ret;
}
return 0;
}
int rtl8366rb_setup_leds(struct realtek_priv *priv)
{ struct dsa_switch *ds = &priv->ds; struct device_node *leds_np; struct dsa_port *dp; int ret = 0;
dsa_switch_for_each_port(dp, ds) { if (!dp->dn) continue;
leds_np = of_get_child_by_name(dp->dn, "leds"); if (!leds_np) {
dev_dbg(priv->dev, "No leds defined for port %d",
dp->index); continue;
}
for_each_child_of_node_scoped(leds_np, led_np) {
ret = rtl8366rb_setup_led(priv, dp,
of_fwnode_handle(led_np)); if (ret) break;
}
of_node_put(leds_np); if (ret) return ret;
} return 0;
}
Messung V0.5
¤ Dauer der Verarbeitung: 0.11 Sekunden
(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.