Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PATCH] leds-pca963x: add bindings to invert polarity

39 views
Skip to first unread message

Anders Darander

unread,
May 2, 2016, 5:42:24 AM5/2/16
to rpu...@rpsys.net, rob...@kernel.org, devic...@vger.kernel.org, linux-...@vger.kernel.org, linux...@vger.kernel.org, j.anas...@samsung.com, pawel...@arm.com, mark.r...@arm.com, ijc+dev...@hellion.org.uk, ga...@codeaurora.org, Anders Darander
Add a new DT property, nxp,inverted, to invert the polarity of the output.

Tested on PCA9634.

Signed-off-by: Anders Darander <and...@chargestorm.se>
---
Documentation/devicetree/bindings/leds/pca963x.txt | 1 +
drivers/leds/leds-pca963x.c | 17 +++++++++++++++--
include/linux/platform_data/leds-pca963x.h | 6 ++++++
3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/leds/pca963x.txt b/Documentation/devicetree/bindings/leds/pca963x.txt
index dafbe99..68579c5 100644
--- a/Documentation/devicetree/bindings/leds/pca963x.txt
+++ b/Documentation/devicetree/bindings/leds/pca963x.txt
@@ -7,6 +7,7 @@ Optional properties:
- nxp,totem-pole : use totem pole (push-pull) instead of open-drain (pca9632 defaults
to open-drain, newer chips to totem pole)
- nxp,hw-blink : use hardware blinking instead of software blinking
+- nxp,inverted: invert the polarity of the generated PWM

Each led is represented as a sub-node of the nxp,pca963x device.

diff --git a/drivers/leds/leds-pca963x.c b/drivers/leds/leds-pca963x.c
index 407eba1..41b7648 100644
--- a/drivers/leds/leds-pca963x.c
+++ b/drivers/leds/leds-pca963x.c
@@ -294,6 +294,12 @@ pca963x_dt_init(struct i2c_client *client, struct pca963x_chipdef *chip)
else
pdata->blink_type = PCA963X_SW_BLINK;

+ /* default to non-inverted output, unless inverted is specified */
+ if (of_property_read_bool(np, "nxp,inverted"))
+ pdata->dir = PCA963X_INVERTED;
+ else
+ pdata->dir = PCA963X_NORMAL;
+
return pdata;
}

@@ -395,11 +401,18 @@ static int pca963x_probe(struct i2c_client *client,
i2c_smbus_write_byte_data(client, PCA963X_MODE1, 0x00);

if (pdata) {
+ u8 mode2 = i2c_smbus_read_byte_data(pca963x->chip->client,
+ PCA963X_MODE2);
/* Configure output: open-drain or totem pole (push-pull) */
if (pdata->outdrv == PCA963X_OPEN_DRAIN)
- i2c_smbus_write_byte_data(client, PCA963X_MODE2, 0x01);
+ mode2 |= 0x01;
else
- i2c_smbus_write_byte_data(client, PCA963X_MODE2, 0x05);
+ mode2 |= 0x05;
+ /* Configure direction: normal or inverted */
+ if (pdata->dir == PCA963X_INVERTED)
+ mode2 |= 0x10;
+ i2c_smbus_write_byte_data(pca963x->chip->client, PCA963X_MODE2,
+ mode2);
}

return 0;
diff --git a/include/linux/platform_data/leds-pca963x.h b/include/linux/platform_data/leds-pca963x.h
index e731f00..54e845f 100644
--- a/include/linux/platform_data/leds-pca963x.h
+++ b/include/linux/platform_data/leds-pca963x.h
@@ -33,10 +33,16 @@ enum pca963x_blink_type {
PCA963X_HW_BLINK,
};

+enum pca963x_direction {
+ PCA963X_NORMAL,
+ PCA963X_INVERTED,
+};
+
struct pca963x_platform_data {
struct led_platform_data leds;
enum pca963x_outdrv outdrv;
enum pca963x_blink_type blink_type;
+ enum pca963x_direction dir;
};

#endif /* __LINUX_PCA963X_H*/
--
2.8.1

Jacek Anaszewski

unread,
May 4, 2016, 3:29:01 AM5/4/16
to Anders Darander, rpu...@rpsys.net, rob...@kernel.org, devic...@vger.kernel.org, linux-...@vger.kernel.org, linux...@vger.kernel.org, pawel...@arm.com, mark.r...@arm.com, ijc+dev...@hellion.org.uk, ga...@codeaurora.org, Olliver Schinagl, Ricardo Ribalda Delgado
Hi Anders,

Thanks for the patch.
Please note that there has already been an attempt to add
the support for inverted output polarity to this driver and related
discussion [1]. This thread remains quiet for around two weeks.

Cc Olliver and Ricardo.

[1] https://lkml.org/lkml/2016/4/19/95

Best regards,
Jacek Anaszewski

Anders Darander

unread,
May 4, 2016, 3:55:25 AM5/4/16
to Jacek Anaszewski, rpu...@rpsys.net, rob...@kernel.org, devic...@vger.kernel.org, linux-...@vger.kernel.org, linux...@vger.kernel.org, pawel...@arm.com, mark.r...@arm.com, ijc+dev...@hellion.org.uk, ga...@codeaurora.org, Olliver Schinagl, Ricardo Ribalda Delgado
Hi,

Thanks for the info.

* Jacek Anaszewski <j.anas...@samsung.com> [160504 09:28]:
> Please note that there has already been an attempt to add
> the support for inverted output polarity to this driver and related
> discussion [1]. This thread remains quiet for around two weeks.

Ah, nice coincidence! Unfortunately, I made the work earlier than his
posting, otherwise I could have spent the time on somethinge else. ;)

Well, then I hope v2 of his patches comes along.

Cheers,
Anders

--
Anders Darander, Senior System Architect
ChargeStorm AB / eStorm AB

Olliver Schinagl

unread,
May 4, 2016, 4:10:21 AM5/4/16
to Anders Darander, Jacek Anaszewski, rpu...@rpsys.net, rob...@kernel.org, devic...@vger.kernel.org, linux-...@vger.kernel.org, linux...@vger.kernel.org, pawel...@arm.com, mark.r...@arm.com, ijc+dev...@hellion.org.uk, ga...@codeaurora.org, Ricardo Ribalda Delgado
Hey Jacek,

On 04-05-16 09:55, Anders Darander wrote:
> Hi,
>
> Thanks for the info.
>
> * Jacek Anaszewski <j.anas...@samsung.com> [160504 09:28]:
>> Please note that there has already been an attempt to add
>> the support for inverted output polarity to this driver and related
>> discussion [1]. This thread remains quiet for around two weeks.
> Ah, nice coincidence! Unfortunately, I made the work earlier than his
> posting, otherwise I could have spent the time on somethinge else. ;)
Sorry to be so slacking with submitting this, I've been sitting on it
for 6 months now :) I just kept postponing in submitting it. But as they
say, great minds, and all that.

Anders Darander

unread,
Sep 5, 2016, 7:08:14 AM9/5/16
to Olliver Schinagl, Jacek Anaszewski, rob...@kernel.org, devic...@vger.kernel.org, linux-...@vger.kernel.org, linux...@vger.kernel.org, pawel...@arm.com, mark.r...@arm.com, ijc+dev...@hellion.org.uk, ga...@codeaurora.org, Ricardo Ribalda Delgado
Hi,

* Olliver Schinagl <oli...@schinagl.nl> [160504 10:10]:
Any news on a v2?

Otherwise, could we agree on a dt binding for the inverted output, and
look into merging that prior to the rest of the series? I'd like to get
rid of my local patch...

Cheers,
Anders

Olliver Schinagl

unread,
Sep 6, 2016, 5:30:42 AM9/6/16
to Anders Darander, Jacek Anaszewski, rob...@kernel.org, devic...@vger.kernel.org, linux-...@vger.kernel.org, linux...@vger.kernel.org, pawel...@arm.com, mark.r...@arm.com, ijc+dev...@hellion.org.uk, ga...@codeaurora.org, Ricardo Ribalda Delgado
Hi Anders,
I almost forgotten about this bit, I'll read back on the mails and
check/verify my results/discussions from back then.

Thanks for bringing it up again!

Olliver

>
> Cheers,
> Anders
0 new messages