On Mon, Jun 01, 2026 at 06:18:25PM +0300, Svyatoslav Ryhel wrote:
> Since there are no users of this driver via platform data, remove the
> platform data support and switch to using Device Tree bindings.

...

> @@ -57,6 +60,9 @@ struct lm3533_als {
>  
>       atomic_t zone;
>       struct mutex thresh_mutex;
> +
> +     bool pwm_mode;
> +     u32 r_select;
>  };

Have you run `pahole`? Does it agree with the layout you made here?

...

> -     als->irq = lm3533->irq;
> +     als->irq = platform_get_irq_optional(pdev, 0);

> +

Redundant blank line.

> +     if (als->irq == -EPROBE_DEFER)
> +             return -EPROBE_DEFER;

What about other error codes when IRQ is found by can't be retrieved for some
reasons? IIRC we check against ENXIO in similar cases

        als->irq = platform_get_irq_optional(pdev, 0);
        if (als->irq == -ENXIO)
                als->irq = 0;
        if (als->irq < 0)
                return als->irq;

...

> +     led->pwm = 0;

Isn't it 0 by zalloc ?

> +     device_property_read_u32(&pdev->dev, "ti,pwm-config-mask", &led->pwm);

...

>  #define LM3533_BOOST_FREQ_MASK               0x01
>  #define LM3533_BOOST_FREQ_SHIFT              0
> +#define LM3533_BOOST_FREQ_MIN                500000
> +#define LM3533_BOOST_FREQ_MAX                1000000

HZ_PER_KHZ  (since you included units.h)?

...

> +     nchilds = device_get_child_node_count(dev);
> +     if (!nchilds || nchilds > LM3533_CELLS_MAX) {
> +             dev_err(dev, "num of child nodes is not supported\n");
> +             return -ENODEV;

Why not dev_err_probe() here and elsewhere? It looks inconsistent with this
patch.

>       }

...

> +     device_for_each_child_node_scoped(lm3533->dev, child) {

> +             if (!fwnode_device_is_available(child))
> +                     continue;

Do we need this check?

...

> +                             dev_err(dev, "invalid LED node %s\n",
> +                                     fwnode_get_name(child));

%pfw

...

> +     ret = sysfs_create_group(&dev->kobj, &lm3533_attribute_group);

No way. You should use .dev_groups.

> +     if (ret) {
> +             dev_err(dev, "failed to create sysfs attributes\n");
>               goto err_unregister;
>       }

...

Can you think on how to split this change to smaller steps? I believe it's
possible.

-- 
With Best Regards,
Andy Shevchenko


Reply via email to