lkml.org 
[lkml]   [2017]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 1/2] leds: cpcap: new driver
Hi,

On Mon, Mar 06, 2017 at 11:11:47PM +0100, Pavel Machek wrote:
> > Motorola CPCAP is a PMIC found in multiple smartphones.
> > This driver adds support for the chip's LED controllers.
> > It has explicit support for all controllers used by the
> > Droid 4. Since no datasheets are available the other
> > available controllers are not supported until somebody
> > verified, that the register layout matches.
>
> This of course leads me to two questions:
>
> 1) Where can I get Droid 4?

I got a used one on Ebay for 42€ incl. shipping & customs. The trick
is clicking the worldwide option, since they are pretty expensive in
EU (they only exist with US LTE modem, so they were not sold here
officially).

> 2) How well is it supported?

UART + WLAN works with mainline master branch. As written by Tony
we have a couple of patches ready for 4.12. Big open tasks are the
cameras and the modems. Cameras are handled via co-processor in the
stock system (that's about all I know about them so far) and modems are
connected via USB + GPIOs (and for the 2G/3G modem an additional UART).
LTE modem support seems simple (USB-CDC based), but does not work
in EU and 2G/3G looks like much work. Modem voice support will be
simpler than on N900, though (data goes directly to the audio codec).
Speaking about audio codec: I'm currently working on that.

> > index 000000000000..d523f8c3c358
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/leds/cpcap-leds.txt
> > @@ -0,0 +1,29 @@
> > +Motorola CPCAP PMIC LEDs
> > +------------------------
> > +
> > +This module is part of the CPCAP. For more details about the whole
> > +chip see Documentation/devicetree/bindings/mfd/motorola-cpcap.txt.
> > +
> > +Requires node properties:
> > +- compatible: should be one of
> > + * "motorola,cpcap-led-mdl" (Main Display Lighting)
> > + * "motorola,cpcap-led-kl" (Keyboard Lighting)
> > + * "motorola,cpcap-led-adl" (Aux Display Lighting)
> > + * "motorola,cpcap-led-red" (Red Triode)
> > + * "motorola,cpcap-led-green" (Green Triode)
> > + * "motorola,cpcap-led-blue" (Blue Triode)
> > + * "motorola,cpcap-led-cf" (Camera Flash)
> > + * "motorola,cpcap-led-bt" (Bluetooth)
> > + * "motorola,cpcap-led-cp" (Camera Privacy LED)
>
> BTW. Does the RGB controller support any kind of "patterns" similar
> to what n900 can do?

No. Motorola CPCAP has simple blink support for the RGB leds, though.
It can potentially save some CPU cycles, but I did not yet add support
for that. CPCAP also has a few more LED interfaces, that are unused
on Droid 4.

> > +&cpcap {
> > + cpcap_led_red: red-led {
> > + compatible = "motorola,cpcap-led-red";
> > + label = "cpcap:red";
> > + vdd-supply = <&sw5>;
> > + };
> > +};
>
> This should be copied to the device tree people.

They are already in CC.

> > index 275f467956ee..043f02a4fe73 100644
> > --- a/drivers/leds/Kconfig
> > +++ b/drivers/leds/Kconfig
> > @@ -76,6 +76,15 @@ config LEDS_BCM6358
> > This option enables support for LEDs connected to the BCM6358
> > LED HW controller accessed via MMIO registers.
> >
> > +config LEDS_CPCAP
> > + tristate "LED Support for Motorola CPCAP"
> > + depends on LEDS_CLASS
> > + depends on MFD_CPCAP
> > + depends on OF
> > + help
> > + This option enables support for LEDs offered by Motorola's
> > + CPCAP PMIC.
> > +
>
> Umm. That help explains exactly what I oculd tell from the name. Can
> you spell out "CPCAP" and "PMIC"... and maybe mention that it is used
> on the Droid 4 phone?

PMIC = power management integrated circuit

https://en.wikipedia.org/wiki/Power_management_integrated_circuit

CPCAP = a chip similar to TWL6040.

CPCAP it used on multiple motorola smartphones, just like TWL6040
is often used as PMIC. Usually we do not add a list of boards using
some feature to config description (except when the option is only
useful for a single one).

> > +#define DEBUG
>
> Remove for production?

Yes, thanks.

> > + err = device_property_read_string(&pdev->dev, "label", &led->led.name);
> > + if (err) {
> > + dev_err(led->dev, "Couldn't read led label: %d", err);
>
> s/led/LED/.

ok.

>
> > + if (err) {
> > + dev_err(led->dev, "Couldn't register led: %d", err);
> > + return err;
>
> And here.

ok.

> Acked-by: Pavel Machek <pavel@ucw.cz>

Thanks.

-- Sebastian
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2017-03-07 22:07    [W:0.559 / U:0.236 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site