Lines Matching full:led
10 /* Offset 0x16: LED control */
34 static int mv88e6xxx_led_brightness_set(struct mv88e6xxx_port *p, int led, in mv88e6xxx_led_brightness_set() argument
46 if (led == 1) in mv88e6xxx_led_brightness_set()
52 /* Selector 0x0f == Force LED ON */ in mv88e6xxx_led_brightness_set()
53 if (led == 1) in mv88e6xxx_led_brightness_set()
58 /* Selector 0x0e == Force LED OFF */ in mv88e6xxx_led_brightness_set()
59 if (led == 1) in mv88e6xxx_led_brightness_set()
97 int led; member
106 * certain LED given restrictions such as that some rules only work with fiber
121 .led = 0,
128 .led = 1,
135 .led = 0,
142 .led = 1,
149 .led = 0,
157 .led = 1,
165 .led = 0,
172 .led = 1,
179 .led = 0,
187 .led = 1,
195 .led = 0,
202 .led = 1,
208 .led = 1,
215 .led = 1,
222 .led = 1,
228 .led = 0,
235 .led = 1,
242 .led = 0,
249 .led = 1,
256 .led = 0,
263 .led = 1,
269 .led = 0,
275 .led = 1,
282 .led = 0,
289 .led = 0,
295 .led = 1,
301 .led = 0,
308 .led = 1,
315 .led = 0,
321 .led = 1,
329 /* mv88e6xxx_led_match_selector() - look up the appropriate LED mode selector
331 * @led: LED number, 0 or 1
332 * @blink_activity: blink the LED (usually blink on indicated activity)
334 * @rules: LED status flags from the LED classdev core
337 static int mv88e6xxx_led_match_selector(struct mv88e6xxx_port *p, int led, bool blink_activity, in mv88e6xxx_led_match_selector() argument
343 /* No rules means we turn the LED off */ in mv88e6xxx_led_match_selector()
345 if (led == 1) in mv88e6xxx_led_match_selector()
359 if (conf->led != led) in mv88e6xxx_led_match_selector()
372 dev_dbg(p->chip->dev, "port%d LED %d set selector %04x for rules %08lx\n", in mv88e6xxx_led_match_selector()
373 p->port, led, conf->selector, rules); in mv88e6xxx_led_match_selector()
384 * @selector: the selector value from the LED actity register
385 * @led: LED number, 0 or 1
389 mv88e6xxx_led_match_rule(struct mv88e6xxx_port *p, u16 selector, int led, unsigned long *rules) in mv88e6xxx_led_match_rule() argument
401 if (conf->led != led) in mv88e6xxx_led_match_rule()
408 dev_dbg(p->chip->dev, "port%d LED %d has selector %04x, rules %08lx\n", in mv88e6xxx_led_match_rule()
409 p->port, led, selector, conf->rules); in mv88e6xxx_led_match_rule()
418 /* mv88e6xxx_led_get_selector() - get the appropriate LED mode selector
420 * @led: LED number, 0 or 1
422 * @rules: LED status flags from the LED classdev core
425 static int mv88e6xxx_led_get_selector(struct mv88e6xxx_port *p, int led, in mv88e6xxx_led_get_selector() argument
431 * indicator (such as LED is on for a 1000 link) else we try a second in mv88e6xxx_led_get_selector()
435 err = mv88e6xxx_led_match_selector(p, led, false, fiber, rules, selector); in mv88e6xxx_led_get_selector()
437 return mv88e6xxx_led_match_selector(p, led, true, fiber, rules, selector); in mv88e6xxx_led_get_selector()
443 static int mv88e6xxx_led_set_blinking_period(struct mv88e6xxx_port *p, int led, in mv88e6xxx_led_set_blinking_period() argument
478 * will the LED be on. Zero isn't great in most cases. in mv88e6xxx_led_set_blinking_period()
482 /* This is usually pretty useless and will make the LED look OFF */ in mv88e6xxx_led_set_blinking_period()
509 static int mv88e6xxx_led_blink_set(struct mv88e6xxx_port *p, int led, in mv88e6xxx_led_blink_set() argument
523 return mv88e6xxx_led_brightness_set(p, led, 1); in mv88e6xxx_led_blink_set()
525 err = mv88e6xxx_led_set_blinking_period(p, led, *delay_on, *delay_off); in mv88e6xxx_led_blink_set()
535 if (led == 1) in mv88e6xxx_led_blink_set()
541 if (led == 1) in mv88e6xxx_led_blink_set()
598 int led, unsigned long rules) in mv88e6xxx_led_hw_control_set() argument
609 if (led == 1) in mv88e6xxx_led_hw_control_set()
614 err = mv88e6xxx_led_get_selector(p, led, p->fiber, rules, ®); in mv88e6xxx_led_hw_control_set()
620 if (led == 0) in mv88e6xxx_led_hw_control_set()
621 dev_dbg(p->chip->dev, "LED 0 hw control on port %d trigger selector 0x%02x\n", in mv88e6xxx_led_hw_control_set()
625 dev_dbg(p->chip->dev, "LED 1 hw control on port %d trigger selector 0x%02x\n", in mv88e6xxx_led_hw_control_set()
633 mv88e6xxx_led_hw_control_get(struct mv88e6xxx_port *p, int led, unsigned long *rules) in mv88e6xxx_led_hw_control_get() argument
646 if (led == 1) { in mv88e6xxx_led_hw_control_get()
666 err = mv88e6xxx_led_match_rule(p, val, led, rules); in mv88e6xxx_led_hw_control_get()
747 struct fwnode_handle *led = NULL, *leds = NULL; in mv88e6xxx_port_setup_leds() local
773 fwnode_for_each_child_node(leds, led) { in mv88e6xxx_port_setup_leds()
774 /* Reg represent the led number of the port, max 2 in mv88e6xxx_port_setup_leds()
776 * only one LED is connected. in mv88e6xxx_port_setup_leds()
778 if (fwnode_property_read_u32(led, "reg", &led_num)) in mv88e6xxx_port_setup_leds()
781 dev_err(dev, "invalid LED specified port %d\n", port); in mv88e6xxx_port_setup_leds()
791 state = led_init_default_state_get(led); in mv88e6xxx_port_setup_leds()
823 init_data.fwnode = led; in mv88e6xxx_port_setup_leds()
836 dev_err(dev, "Failed to init LED %d for port %d", led_num, port); in mv88e6xxx_port_setup_leds()
845 fwnode_handle_put(led); in mv88e6xxx_port_setup_leds()