1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (c) 2015 Google, Inc
4 * Written by Simon Glass <sjg@chromium.org>
12 #include <dm/uclass-internal.h>
14 int led_get_by_label(const char *label
, struct udevice
**devp
)
20 ret
= uclass_get(UCLASS_LED
, &uc
);
23 uclass_foreach_dev(dev
, uc
) {
24 struct led_uc_plat
*uc_plat
= dev_get_uclass_platdata(dev
);
26 /* Ignore the top-level LED node */
27 if (uc_plat
->label
&& !strcmp(label
, uc_plat
->label
))
28 return uclass_get_device_tail(dev
, 0, devp
);
34 int led_set_state(struct udevice
*dev
, enum led_state_t state
)
36 struct led_ops
*ops
= led_get_ops(dev
);
41 return ops
->set_state(dev
, state
);
44 enum led_state_t
led_get_state(struct udevice
*dev
)
46 struct led_ops
*ops
= led_get_ops(dev
);
51 return ops
->get_state(dev
);
54 #ifdef CONFIG_LED_BLINK
55 int led_set_period(struct udevice
*dev
, int period_ms
)
57 struct led_ops
*ops
= led_get_ops(dev
);
62 return ops
->set_period(dev
, period_ms
);
66 UCLASS_DRIVER(led
) = {
69 .per_device_platdata_auto_alloc_size
= sizeof(struct led_uc_plat
),