Re: lp5523/lp5xx-common : Keyboard and RGB LEDs Not Working on Nokia N900

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

 



Hi!

> > For some time now, the keyboard LEDs on Nokia N900 have not been
> > working. In dmesg is the error:
> >   
> >     lp5523x probe of 2-0032 failed with error -22
> > 
> > and consequently they do not get populated under /sys/class/leds.
> > 
> > I have finally had time to look into this, and found that the N900 dts
> > falls short of the current lp55xx binding specs. I have updated it and
> > will be submitting a separate patch. However, this was not enough to
> 
> I have since realized that I should have included the adjusted dts in
> the initial email. Please find it attached in this follow-up email and
> sincere apologies for this ommission.
> 
> > make them work, and a new error appeared:
> > 
> >     [11363.247375] lp5523x 2-0032: GPIO lookup for consumer enable
> >     [11363.254394] lp5523x 2-0032: using device tree for GPIO lookup
> >     [11363.254455] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/ocp@68000000/i2c@48072000/lp5523@32[0]'
> >     [11363.254547] of_get_named_gpiod_flags: parsed 'enable-gpio' property of node '/ocp@68000000/i2c@48072000/lp5523@32[0]' - status (0)
> >     [11363.254638] gpio gpiochip1: Persistence not supported for GPIO 9
> >     [11363.254669] gpio-41 (enable): no flags found for enable
> >     [11363.295959] lp5523x 2-0032: device detection err: -121
> >     [11363.303710] lp5523x: probe of 2-0032 failed with error -121
> > 
> > 
> > This is because the chip does not get enabled even though dts contains:
> > 
> >     enable-gpios = <&gpio2 9 GPIO_ACTIVE_HIGH>; /* 41 */
> > 
> > which is correct for this board.
> > 
> > 
> > I came up with this patch (against 5.12-rc6), which makes it work again.
> > 
> > 
> > diff --git a/drivers/leds/leds-lp55xx-common.c b/drivers/leds/leds-lp55xx-common.c
> > index 81de1346bf5d..9af84fc335b3 100644
> > --- a/drivers/leds/leds-lp55xx-common.c
> > +++ b/drivers/leds/leds-lp55xx-common.c
> > @@ -694,7 +694,7 @@ struct lp55xx_platform_data *lp55xx_of_populate_pdata(struct device *dev,
> >         of_property_read_u8(np, "clock-mode", &pdata->clock_mode);
> > 
> >         pdata->enable_gpiod = devm_gpiod_get_optional(dev, "enable",
> > -                                                     GPIOD_ASIS);
> > +                                                     GPIOD_OUT_HIGH);
> >         if (IS_ERR(pdata->enable_gpiod))
> >                 return ERR_CAST(pdata->enable_gpiod);

This does not look obviously bad. If this is sent as patch I can
simply apply, I'll likely do it.

> > However, I am not sure if this is a proper way to fix the issue, or if
> > it is a dirty hack. It looks like all the chips handled by this driver
> > (lp5521, lp5523, lp5562, and lp8501) get enabled by pulling their ENable
> > pin high, so I suppose it is fine, but would like to get some feedback
> > before submitting a cleaned up patch. It is also possible that this
> > should be defined via dts elsewhere, although at this point I am not
> > sure how.
> > 
> > Looking forward to your help.

But I can't take dts changes; these should likely be in same series
and cc-ed to relevant maintainers.

Best regards,
							Pavel
-- 
http://www.livejournal.com/~pavelmachek

Attachment: signature.asc
Description: Digital signature


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux