Re: [PATCH v3 2/2] mfd: lm3533: convert to use OF

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 5 Mar 2025 16:18:38 +0200
Svyatoslav Ryhel <clamor95@xxxxxxxxx> wrote:

> ср, 5 бер. 2025 р. о 15:45 Jonathan Cameron <jic23@xxxxxxxxxx> пише:
> >
> > On Fri, 28 Feb 2025 11:30:51 +0200
> > Svyatoslav Ryhel <clamor95@xxxxxxxxx> wrote:
> >  
> > > пт, 28 лют. 2025 р. о 10:59 Lee Jones <lee@xxxxxxxxxx> пише:  
> > > >
> > > > On Mon, 24 Feb 2025, Svyatoslav Ryhel wrote:
> > > >  
> > > > > Remove platform data and fully relay on OF and device tree
> > > > > parsing and binding devices.
> > > > >
> > > > > Signed-off-by: Svyatoslav Ryhel <clamor95@xxxxxxxxx>
> > > > > ---
> > > > >  drivers/iio/light/lm3533-als.c      |  40 ++++---
> > > > >  drivers/leds/leds-lm3533.c          |  46 +++++---
> > > > >  drivers/mfd/lm3533-core.c           | 159 ++++++++--------------------
> > > > >  drivers/video/backlight/lm3533_bl.c |  71 ++++++++++---
> > > > >  include/linux/mfd/lm3533.h          |  35 +-----
> > > > >  5 files changed, 164 insertions(+), 187 deletions(-)
> > > > >  
> ...
> > > > >       /* ALS input is always high impedance in PWM-mode. */
> > > > > -     if (!pdata->pwm_mode) {
> > > > > -             ret = lm3533_als_set_resistor(als, pdata->r_select);
> > > > > +     if (!als->pwm_mode) {
> > > > > +             ret = lm3533_als_set_resistor(als, als->r_select);  
> > > >
> > > > You're already passing 'als'.
> > > >
> > > > Just teach lm3533_als_set_resistor that 'r_select' is now contained.
> > > >  
> > >
> > > This is not scope of this patchset. I was already accused in too much
> > > changes which make it unreadable. This patchset is dedicated to
> > > swapping platform data to use of the device tree. NOT improving
> > > functions, NOT rewriting arbitrary mechanics. If you feed a need for
> > > this change, then propose a followup. I need from this driver only one
> > > thing, that it could work with device tree. But it seems that it is
> > > better that it just rots in the garbage bin until removed cause no one
> > > cared.  
> >
> > This is not an unreasonable request as you added r_select to als.
> > Perhaps it belongs in a separate follow up patch.  
> 
> I have just moved values used in pdata to private structs of each
> driver. Without changing names or purpose.
> 
> > However
> > it is worth remembering the motivation here is that you want get
> > this code upstream, the maintainers don't have that motivation.  
> 
> This driver is already upstream and it is useless and incompatible
> with majority of supported devices. Maintainers should encourage those
> who try to help and instead we have what? A total discouragement. Well
> defined path into nowhere.

That is not how I read the situation. A simple request was made to
result in more maintainable code as a direct result of that
improvement being enabled by code changes you were making.
I'm sorry to hear that discouraged you.

> 
> >
> > Greg KH has given various talks on the different motivations in the
> > past. It maybe worth a watch.
> >
> >  
> > >  
> > > > >               if (ret)
> > > > >                       return ret;
> > > > >       }
> > > > > @@ -828,22 +833,16 @@ static const struct iio_info lm3533_als_info = {
> > > > >
> > > > >  static int lm3533_als_probe(struct platform_device *pdev)
> > > > >  {
> > > > > -     const struct lm3533_als_platform_data *pdata;
> > > > >       struct lm3533 *lm3533;
> > > > >       struct lm3533_als *als;
> > > > >       struct iio_dev *indio_dev;
> > > > > +     u32 val;  
> > > >
> > > > Value of what, potatoes?
> > > >  
> > >
> > > Oranges.  
> >
> > A well named variable would avoid need for any discussion of
> > what it is the value of.
> >  
> 
> This is temporary placeholder used to get values from the tree and
> then pass it driver struct.

Better if it is a temporary placeholder with a meaningful name.

> 
> > >  
> > > > >       int ret;
> > > > >
> > > > >       lm3533 = dev_get_drvdata(pdev->dev.parent);
> > > > >       if (!lm3533)
> > > > >               return -EINVAL;
> > > > >
> > > > > -     pdata = dev_get_platdata(&pdev->dev);
> > > > > -     if (!pdata) {
> > > > > -             dev_err(&pdev->dev, "no platform data\n");
> > > > > -             return -EINVAL;
> > > > > -     }
> > > > > -
> > > > >       indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*als));
> > > > >       if (!indio_dev)
> > > > >               return -ENOMEM;
> > > > > @@ -864,13 +863,21 @@ static int lm3533_als_probe(struct platform_device *pdev)
> > > > >
> > > > >       platform_set_drvdata(pdev, indio_dev);
> > > > >
> > > > > +     val = 200 * KILO; /* 200kOhm */  
> > > >
> > > > Better to #define magic numbers; DEFAULT_{DESCRIPTION}_OHMS
> > > >  
> > >
> > > Why? that is not needed.  
> > If this variable had a more useful name there would be no need for
> > the comment either.
> >
> >         val_resitor_ohms = 200 * KILLO;
> >
> > or similar.
> >  
> 
> So I have to add a "reasonably" named variable for each property I
> want to get from device tree? Why? It seems to be a bit of overkill,
> no? Maybe I am not aware, have variables stopped being reusable?

Lets go with yes if you want a definitive answer. In reality it's
a question of how many are needed.  If 10-100s sure reuse is fine,
if just a few sensible naming can remove the need for comments
and improve readability.

Jonathan





[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux