Mikhail Kshevetskiy <mikhail.kshevets...@iopsys.eu> writes:

> +
> +static int led_sw_set_period(struct udevice *dev, int period_ms)
> +{
> +     struct led_uc_plat *uc_plat = dev_get_uclass_plat(dev);
> +     struct cyclic_info *cyclic = uc_plat->cyclic;
> +     struct led_ops *ops = led_get_ops(dev);
> +     char cyclic_name[64];
> +     int half_period_us;
> +
> +     uc_plat->sw_blink_state = LED_SW_BLINK_ST_NONE;
> +     ops->set_state(dev, LEDST_OFF);
> +
> +     half_period_us = period_ms * 1000 / 2;
> +
> +     if (cyclic) {
> +             cyclic->delay_us = half_period_us;
> +             cyclic->start_time_us = timer_get_us();
> +     } else {
> +             snprintf(cyclic_name, sizeof(cyclic_name),
> +                      "led_sw_blink_%s", uc_plat->label);
> +
> +             cyclic = cyclic_register(led_sw_blink, half_period_us,
> +                                      cyclic_name, dev);
> +             if (!cyclic) {
> +                     log_err("Registering of blinking function for %s 
> failed\n",
> +                             uc_plat->label);
> +                     return -ENOMEM;
> +             }
> +
> +             uc_plat->cyclic = cyclic;
> +     }

You need to be aware of the API change that is by now in master, see
https://lore.kernel.org/u-boot/20240521084652.1726460-1-rasmus.villem...@prevas.dk/
and in particular commits 3a11eada38e and 008c4b3c3115. The latter
you'll find soon enough because this won't build.

The former is a bit more subtle and would silently break here (as
passing an auto array is no longer allowed) - consider whether you
really need the led_sw_blink_ to be part of the name, or if
uc_plat->label itself isn't descriptive enough.

Rasmus

Reply via email to