All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andreas Werner <andreas.werner@men.de>
To: Lee Jones <lee.jones@linaro.org>
Cc: Bryan Wu <cooloney@gmail.com>,
	Andreas Werner <andreas.werner@men.de>,
	lkml <linux-kernel@vger.kernel.org>,
	Samuel Ortiz <sameo@linux.intel.com>,
	linux@roeck-us.net, lm-sensors@lm-sensors.org, wim@iguana.be,
	linux-watchdog@vger.kernel.org,
	"rpurdie@rpsys.net" <rpurdie@rpsys.net>,
	Linux LED Subsystem <linux-leds@vger.kernel.org>
Subject: Re: [PATCH v6 3/4] drivers/leds/leds-menf21bmc: introduce MEN 14F021P00 BMC LED driver
Date: Fri, 29 Aug 2014 13:38:15 +0200	[thread overview]
Message-ID: <20140829113815.GA30736@awelinux> (raw)
In-Reply-To: <20140829065915.GZ24579@lee--X1>

On Fri, Aug 29, 2014 at 07:59:15AM +0100, Lee Jones wrote:
> On Thu, 28 Aug 2014, Bryan Wu wrote:
> 
> > On Wed, Aug 27, 2014 at 10:52 AM, Andreas Werner <andreas.werner@men.de> wrote:
> > > Added driver to support the 14F021P00 BMC LEDs.
> > > The BMC is a Board Management Controller including four LEDs which
> > > can be switched on and off.
> > >
> > 
> > Please go ahead with my Ack
> > Acked-by: Bryan Wu <cooloney@gmail.com>
> > 
> > Lee, will you merge this through your tree? I think we do that in one
> > shot is better.
> 
> Yes, that's fine.  Pull-request to follow.
> 

Thanks to all for review.

Who of you does the Watchdog part? Is it the part of Wim to Ack the patch
if everythings is right or Guenther?

I ask because if everything is ok all the patches can go in completly that would
be nice.

Regards
Andy

> > > Signed-off-by: Andreas Werner <andreas.werner@men.de>
> > > ---
> > >  drivers/leds/Kconfig          |   9 +++
> > >  drivers/leds/Makefile         |   1 +
> > >  drivers/leds/leds-menf21bmc.c | 131 ++++++++++++++++++++++++++++++++++++++++++
> > >  3 files changed, 141 insertions(+)
> > >  create mode 100644 drivers/leds/leds-menf21bmc.c
> > >
> > > diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> > > index 27cf0cd..ec03457 100644
> > > --- a/drivers/leds/Kconfig
> > > +++ b/drivers/leds/Kconfig
> > > @@ -458,6 +458,15 @@ config LEDS_OT200
> > >           This option enables support for the LEDs on the Bachmann OT200.
> > >           Say Y to enable LEDs on the Bachmann OT200.
> > >
> > > +config LEDS_MENF21BMC
> > > +       tristate "LED support for the MEN 14F021P00 BMC"
> > > +       depends on LEDS_CLASS && MFD_MENF21BMC
> > > +       help
> > > +         Say Y here to include support for the MEN 14F021P00 BMC LEDs.
> > > +
> > > +         This driver can also be built as a module. If so the module
> > > +         will be called leds-menf21bmc.
> > > +
> > >  comment "LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)"
> > >
> > >  config LEDS_BLINKM
> > > diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
> > > index 3c03666..cadc433 100644
> > > --- a/drivers/leds/Makefile
> > > +++ b/drivers/leds/Makefile
> > > @@ -53,6 +53,7 @@ obj-$(CONFIG_LEDS_MAX8997)            += leds-max8997.o
> > >  obj-$(CONFIG_LEDS_LM355x)              += leds-lm355x.o
> > >  obj-$(CONFIG_LEDS_BLINKM)              += leds-blinkm.o
> > >  obj-$(CONFIG_LEDS_VERSATILE)           += leds-versatile.o
> > > +obj-$(CONFIG_LEDS_MENF21BMC)           += leds-menf21bmc.o
> > >
> > >  # LED SPI Drivers
> > >  obj-$(CONFIG_LEDS_DAC124S085)          += leds-dac124s085.o
> > > diff --git a/drivers/leds/leds-menf21bmc.c b/drivers/leds/leds-menf21bmc.c
> > > new file mode 100644
> > > index 0000000..89dd577
> > > --- /dev/null
> > > +++ b/drivers/leds/leds-menf21bmc.c
> > > @@ -0,0 +1,131 @@
> > > +/*
> > > + *  MEN 14F021P00 Board Management Controller (BMC) LEDs Driver.
> > > + *
> > > + *  This is the core LED driver of the MEN 14F021P00 BMC.
> > > + *  There are four LEDs available which can be switched on and off.
> > > + *  STATUS LED, HOT SWAP LED, USER LED 1, USER LED 2
> > > + *
> > > + *  Copyright (C) 2014 MEN Mikro Elektronik Nuernberg GmbH
> > > + *
> > > + *  This program is free software; you can redistribute  it and/or modify it
> > > + *  under  the terms of  the GNU General  Public License as published by the
> > > + *  Free Software Foundation;  either version 2 of the  License, or (at your
> > > + *  option) any later version.
> > > + */
> > > +
> > > +#include <linux/module.h>
> > > +#include <linux/kernel.h>
> > > +#include <linux/platform_device.h>
> > > +#include <linux/leds.h>
> > > +#include <linux/i2c.h>
> > > +
> > > +#define BMC_CMD_LED_GET_SET    0xA0
> > > +#define BMC_BIT_LED_STATUS     BIT(0)
> > > +#define BMC_BIT_LED_HOTSWAP    BIT(1)
> > > +#define BMC_BIT_LED_USER1      BIT(2)
> > > +#define BMC_BIT_LED_USER2      BIT(3)
> > > +
> > > +struct menf21bmc_led {
> > > +       struct led_classdev cdev;
> > > +       u8 led_bit;
> > > +       const char *name;
> > > +       struct i2c_client *i2c_client;
> > > +};
> > > +
> > > +static struct menf21bmc_led leds[] = {
> > > +       {
> > > +               .name = "menf21bmc:led_status",
> > > +               .led_bit = BMC_BIT_LED_STATUS,
> > > +       },
> > > +       {
> > > +               .name = "menf21bmc:led_hotswap",
> > > +               .led_bit = BMC_BIT_LED_HOTSWAP,
> > > +       },
> > > +       {
> > > +               .name = "menf21bmc:led_user1",
> > > +               .led_bit = BMC_BIT_LED_USER1,
> > > +       },
> > > +       {
> > > +               .name = "menf21bmc:led_user2",
> > > +               .led_bit = BMC_BIT_LED_USER2,
> > > +       }
> > > +};
> > > +
> > > +static DEFINE_MUTEX(led_lock);
> > > +
> > > +static void
> > > +menf21bmc_led_set(struct led_classdev *led_cdev, enum led_brightness value)
> > > +{
> > > +       int led_val;
> > > +       struct menf21bmc_led *led = container_of(led_cdev,
> > > +                                       struct menf21bmc_led, cdev);
> > > +
> > > +       mutex_lock(&led_lock);
> > > +       led_val = i2c_smbus_read_byte_data(led->i2c_client,
> > > +                                          BMC_CMD_LED_GET_SET);
> > > +       if (led_val < 0)
> > > +               goto err_out;
> > > +
> > > +       if (value == LED_OFF)
> > > +               led_val &= ~led->led_bit;
> > > +       else
> > > +               led_val |= led->led_bit;
> > > +
> > > +       i2c_smbus_write_byte_data(led->i2c_client,
> > > +                                 BMC_CMD_LED_GET_SET, led_val);
> > > +err_out:
> > > +       mutex_unlock(&led_lock);
> > > +}
> > > +
> > > +static int menf21bmc_led_probe(struct platform_device *pdev)
> > > +{
> > > +       int i;
> > > +       int ret;
> > > +       struct i2c_client *i2c_client = to_i2c_client(pdev->dev.parent);
> > > +
> > > +       for (i = 0; i < ARRAY_SIZE(leds); i++) {
> > > +               leds[i].cdev.name = leds[i].name;
> > > +               leds[i].cdev.brightness_set = menf21bmc_led_set;
> > > +               leds[i].i2c_client = i2c_client;
> > > +               ret = led_classdev_register(&pdev->dev, &leds[i].cdev);
> > > +               if (ret < 0)
> > > +                       goto err_free_leds;
> > > +       }
> > > +       dev_info(&pdev->dev, "MEN 140F21P00 BMC LED device enabled\n");
> > > +
> > > +       return 0;
> > > +
> > > +err_free_leds:
> > > +       dev_err(&pdev->dev, "failed to register LED device\n");
> > > +
> > > +       for (i = i - 1; i >= 0; i--)
> > > +               led_classdev_unregister(&leds[i].cdev);
> > > +
> > > +       return ret;
> > > +}
> > > +
> > > +static int menf21bmc_led_remove(struct platform_device *pdev)
> > > +{
> > > +       int i;
> > > +
> > > +       for (i = 0; i < ARRAY_SIZE(leds); i++)
> > > +               led_classdev_unregister(&leds[i].cdev);
> > > +
> > > +       return 0;
> > > +}
> > > +
> > > +static struct platform_driver menf21bmc_led = {
> > > +       .probe          = menf21bmc_led_probe,
> > > +       .remove         = menf21bmc_led_remove,
> > > +       .driver         = {
> > > +               .name           = "menf21bmc_led",
> > > +               .owner          = THIS_MODULE,
> > > +       },
> > > +};
> > > +
> > > +module_platform_driver(menf21bmc_led);
> > > +
> > > +MODULE_AUTHOR("Andreas Werner <andreas.werner@men.de>");
> > > +MODULE_DESCRIPTION("MEN 14F021P00 BMC led driver");
> > > +MODULE_LICENSE("GPL v2");
> > > +MODULE_ALIAS("platform:menf21bmc_led");
> > >
> 
> -- 
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog

WARNING: multiple messages have this Message-ID (diff)
From: Andreas Werner <andreas.werner@men.de>
To: Lee Jones <lee.jones@linaro.org>
Cc: Bryan Wu <cooloney@gmail.com>,
	Andreas Werner <andreas.werner@men.de>,
	lkml <linux-kernel@vger.kernel.org>,
	Samuel Ortiz <sameo@linux.intel.com>, <linux@roeck-us.net>,
	<lm-sensors@lm-sensors.org>, <wim@iguana.be>,
	<linux-watchdog@vger.kernel.org>,
	"rpurdie@rpsys.net" <rpurdie@rpsys.net>,
	Linux LED Subsystem <linux-leds@vger.kernel.org>
Subject: Re: [PATCH v6 3/4] drivers/leds/leds-menf21bmc: introduce MEN 14F021P00 BMC LED driver
Date: Fri, 29 Aug 2014 13:38:15 +0200	[thread overview]
Message-ID: <20140829113815.GA30736@awelinux> (raw)
In-Reply-To: <20140829065915.GZ24579@lee--X1>

On Fri, Aug 29, 2014 at 07:59:15AM +0100, Lee Jones wrote:
> On Thu, 28 Aug 2014, Bryan Wu wrote:
> 
> > On Wed, Aug 27, 2014 at 10:52 AM, Andreas Werner <andreas.werner@men.de> wrote:
> > > Added driver to support the 14F021P00 BMC LEDs.
> > > The BMC is a Board Management Controller including four LEDs which
> > > can be switched on and off.
> > >
> > 
> > Please go ahead with my Ack
> > Acked-by: Bryan Wu <cooloney@gmail.com>
> > 
> > Lee, will you merge this through your tree? I think we do that in one
> > shot is better.
> 
> Yes, that's fine.  Pull-request to follow.
> 

Thanks to all for review.

Who of you does the Watchdog part? Is it the part of Wim to Ack the patch
if everythings is right or Guenther?

I ask because if everything is ok all the patches can go in completly that would
be nice.

Regards
Andy

> > > Signed-off-by: Andreas Werner <andreas.werner@men.de>
> > > ---
> > >  drivers/leds/Kconfig          |   9 +++
> > >  drivers/leds/Makefile         |   1 +
> > >  drivers/leds/leds-menf21bmc.c | 131 ++++++++++++++++++++++++++++++++++++++++++
> > >  3 files changed, 141 insertions(+)
> > >  create mode 100644 drivers/leds/leds-menf21bmc.c
> > >
> > > diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> > > index 27cf0cd..ec03457 100644
> > > --- a/drivers/leds/Kconfig
> > > +++ b/drivers/leds/Kconfig
> > > @@ -458,6 +458,15 @@ config LEDS_OT200
> > >           This option enables support for the LEDs on the Bachmann OT200.
> > >           Say Y to enable LEDs on the Bachmann OT200.
> > >
> > > +config LEDS_MENF21BMC
> > > +       tristate "LED support for the MEN 14F021P00 BMC"
> > > +       depends on LEDS_CLASS && MFD_MENF21BMC
> > > +       help
> > > +         Say Y here to include support for the MEN 14F021P00 BMC LEDs.
> > > +
> > > +         This driver can also be built as a module. If so the module
> > > +         will be called leds-menf21bmc.
> > > +
> > >  comment "LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)"
> > >
> > >  config LEDS_BLINKM
> > > diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
> > > index 3c03666..cadc433 100644
> > > --- a/drivers/leds/Makefile
> > > +++ b/drivers/leds/Makefile
> > > @@ -53,6 +53,7 @@ obj-$(CONFIG_LEDS_MAX8997)            += leds-max8997.o
> > >  obj-$(CONFIG_LEDS_LM355x)              += leds-lm355x.o
> > >  obj-$(CONFIG_LEDS_BLINKM)              += leds-blinkm.o
> > >  obj-$(CONFIG_LEDS_VERSATILE)           += leds-versatile.o
> > > +obj-$(CONFIG_LEDS_MENF21BMC)           += leds-menf21bmc.o
> > >
> > >  # LED SPI Drivers
> > >  obj-$(CONFIG_LEDS_DAC124S085)          += leds-dac124s085.o
> > > diff --git a/drivers/leds/leds-menf21bmc.c b/drivers/leds/leds-menf21bmc.c
> > > new file mode 100644
> > > index 0000000..89dd577
> > > --- /dev/null
> > > +++ b/drivers/leds/leds-menf21bmc.c
> > > @@ -0,0 +1,131 @@
> > > +/*
> > > + *  MEN 14F021P00 Board Management Controller (BMC) LEDs Driver.
> > > + *
> > > + *  This is the core LED driver of the MEN 14F021P00 BMC.
> > > + *  There are four LEDs available which can be switched on and off.
> > > + *  STATUS LED, HOT SWAP LED, USER LED 1, USER LED 2
> > > + *
> > > + *  Copyright (C) 2014 MEN Mikro Elektronik Nuernberg GmbH
> > > + *
> > > + *  This program is free software; you can redistribute  it and/or modify it
> > > + *  under  the terms of  the GNU General  Public License as published by the
> > > + *  Free Software Foundation;  either version 2 of the  License, or (at your
> > > + *  option) any later version.
> > > + */
> > > +
> > > +#include <linux/module.h>
> > > +#include <linux/kernel.h>
> > > +#include <linux/platform_device.h>
> > > +#include <linux/leds.h>
> > > +#include <linux/i2c.h>
> > > +
> > > +#define BMC_CMD_LED_GET_SET    0xA0
> > > +#define BMC_BIT_LED_STATUS     BIT(0)
> > > +#define BMC_BIT_LED_HOTSWAP    BIT(1)
> > > +#define BMC_BIT_LED_USER1      BIT(2)
> > > +#define BMC_BIT_LED_USER2      BIT(3)
> > > +
> > > +struct menf21bmc_led {
> > > +       struct led_classdev cdev;
> > > +       u8 led_bit;
> > > +       const char *name;
> > > +       struct i2c_client *i2c_client;
> > > +};
> > > +
> > > +static struct menf21bmc_led leds[] = {
> > > +       {
> > > +               .name = "menf21bmc:led_status",
> > > +               .led_bit = BMC_BIT_LED_STATUS,
> > > +       },
> > > +       {
> > > +               .name = "menf21bmc:led_hotswap",
> > > +               .led_bit = BMC_BIT_LED_HOTSWAP,
> > > +       },
> > > +       {
> > > +               .name = "menf21bmc:led_user1",
> > > +               .led_bit = BMC_BIT_LED_USER1,
> > > +       },
> > > +       {
> > > +               .name = "menf21bmc:led_user2",
> > > +               .led_bit = BMC_BIT_LED_USER2,
> > > +       }
> > > +};
> > > +
> > > +static DEFINE_MUTEX(led_lock);
> > > +
> > > +static void
> > > +menf21bmc_led_set(struct led_classdev *led_cdev, enum led_brightness value)
> > > +{
> > > +       int led_val;
> > > +       struct menf21bmc_led *led = container_of(led_cdev,
> > > +                                       struct menf21bmc_led, cdev);
> > > +
> > > +       mutex_lock(&led_lock);
> > > +       led_val = i2c_smbus_read_byte_data(led->i2c_client,
> > > +                                          BMC_CMD_LED_GET_SET);
> > > +       if (led_val < 0)
> > > +               goto err_out;
> > > +
> > > +       if (value == LED_OFF)
> > > +               led_val &= ~led->led_bit;
> > > +       else
> > > +               led_val |= led->led_bit;
> > > +
> > > +       i2c_smbus_write_byte_data(led->i2c_client,
> > > +                                 BMC_CMD_LED_GET_SET, led_val);
> > > +err_out:
> > > +       mutex_unlock(&led_lock);
> > > +}
> > > +
> > > +static int menf21bmc_led_probe(struct platform_device *pdev)
> > > +{
> > > +       int i;
> > > +       int ret;
> > > +       struct i2c_client *i2c_client = to_i2c_client(pdev->dev.parent);
> > > +
> > > +       for (i = 0; i < ARRAY_SIZE(leds); i++) {
> > > +               leds[i].cdev.name = leds[i].name;
> > > +               leds[i].cdev.brightness_set = menf21bmc_led_set;
> > > +               leds[i].i2c_client = i2c_client;
> > > +               ret = led_classdev_register(&pdev->dev, &leds[i].cdev);
> > > +               if (ret < 0)
> > > +                       goto err_free_leds;
> > > +       }
> > > +       dev_info(&pdev->dev, "MEN 140F21P00 BMC LED device enabled\n");
> > > +
> > > +       return 0;
> > > +
> > > +err_free_leds:
> > > +       dev_err(&pdev->dev, "failed to register LED device\n");
> > > +
> > > +       for (i = i - 1; i >= 0; i--)
> > > +               led_classdev_unregister(&leds[i].cdev);
> > > +
> > > +       return ret;
> > > +}
> > > +
> > > +static int menf21bmc_led_remove(struct platform_device *pdev)
> > > +{
> > > +       int i;
> > > +
> > > +       for (i = 0; i < ARRAY_SIZE(leds); i++)
> > > +               led_classdev_unregister(&leds[i].cdev);
> > > +
> > > +       return 0;
> > > +}
> > > +
> > > +static struct platform_driver menf21bmc_led = {
> > > +       .probe          = menf21bmc_led_probe,
> > > +       .remove         = menf21bmc_led_remove,
> > > +       .driver         = {
> > > +               .name           = "menf21bmc_led",
> > > +               .owner          = THIS_MODULE,
> > > +       },
> > > +};
> > > +
> > > +module_platform_driver(menf21bmc_led);
> > > +
> > > +MODULE_AUTHOR("Andreas Werner <andreas.werner@men.de>");
> > > +MODULE_DESCRIPTION("MEN 14F021P00 BMC led driver");
> > > +MODULE_LICENSE("GPL v2");
> > > +MODULE_ALIAS("platform:menf21bmc_led");
> > >
> 
> -- 
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Andreas Werner <andreas.werner@men.de>
To: Lee Jones <lee.jones@linaro.org>
Cc: Bryan Wu <cooloney@gmail.com>,
	Andreas Werner <andreas.werner@men.de>,
	lkml <linux-kernel@vger.kernel.org>,
	Samuel Ortiz <sameo@linux.intel.com>,
	linux@roeck-us.net, lm-sensors@lm-sensors.org, wim@iguana.be,
	linux-watchdog@vger.kernel.org,
	"rpurdie@rpsys.net" <rpurdie@rpsys.net>,
	Linux LED Subsystem <linux-leds@vger.kernel.org>
Subject: Re: [lm-sensors] [PATCH v6 3/4] drivers/leds/leds-menf21bmc: introduce MEN 14F021P00 BMC LED driver
Date: Fri, 29 Aug 2014 11:38:15 +0000	[thread overview]
Message-ID: <20140829113815.GA30736@awelinux> (raw)
In-Reply-To: <20140829065915.GZ24579@lee--X1>

T24gRnJpLCBBdWcgMjksIDIwMTQgYXQgMDc6NTk6MTVBTSArMDEwMCwgTGVlIEpvbmVzIHdyb3Rl
Ogo+IE9uIFRodSwgMjggQXVnIDIwMTQsIEJyeWFuIFd1IHdyb3RlOgo+IAo+ID4gT24gV2VkLCBB
dWcgMjcsIDIwMTQgYXQgMTA6NTIgQU0sIEFuZHJlYXMgV2VybmVyIDxhbmRyZWFzLndlcm5lckBt
ZW4uZGU+IHdyb3RlOgo+ID4gPiBBZGRlZCBkcml2ZXIgdG8gc3VwcG9ydCB0aGUgMTRGMDIxUDAw
IEJNQyBMRURzLgo+ID4gPiBUaGUgQk1DIGlzIGEgQm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVy
IGluY2x1ZGluZyBmb3VyIExFRHMgd2hpY2gKPiA+ID4gY2FuIGJlIHN3aXRjaGVkIG9uIGFuZCBv
ZmYuCj4gPiA+Cj4gPiAKPiA+IFBsZWFzZSBnbyBhaGVhZCB3aXRoIG15IEFjawo+ID4gQWNrZWQt
Ynk6IEJyeWFuIFd1IDxjb29sb25leUBnbWFpbC5jb20+Cj4gPiAKPiA+IExlZSwgd2lsbCB5b3Ug
bWVyZ2UgdGhpcyB0aHJvdWdoIHlvdXIgdHJlZT8gSSB0aGluayB3ZSBkbyB0aGF0IGluIG9uZQo+
ID4gc2hvdCBpcyBiZXR0ZXIuCj4gCj4gWWVzLCB0aGF0J3MgZmluZS4gIFB1bGwtcmVxdWVzdCB0
byBmb2xsb3cuCj4gCgpUaGFua3MgdG8gYWxsIGZvciByZXZpZXcuCgpXaG8gb2YgeW91IGRvZXMg
dGhlIFdhdGNoZG9nIHBhcnQ/IElzIGl0IHRoZSBwYXJ0IG9mIFdpbSB0byBBY2sgdGhlIHBhdGNo
CmlmIGV2ZXJ5dGhpbmdzIGlzIHJpZ2h0IG9yIEd1ZW50aGVyPwoKSSBhc2sgYmVjYXVzZSBpZiBl
dmVyeXRoaW5nIGlzIG9rIGFsbCB0aGUgcGF0Y2hlcyBjYW4gZ28gaW4gY29tcGxldGx5IHRoYXQg
d291bGQKYmUgbmljZS4KClJlZ2FyZHMKQW5keQoKPiA+ID4gU2lnbmVkLW9mZi1ieTogQW5kcmVh
cyBXZXJuZXIgPGFuZHJlYXMud2VybmVyQG1lbi5kZT4KPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJz
L2xlZHMvS2NvbmZpZyAgICAgICAgICB8ICAgOSArKysKPiA+ID4gIGRyaXZlcnMvbGVkcy9NYWtl
ZmlsZSAgICAgICAgIHwgICAxICsKPiA+ID4gIGRyaXZlcnMvbGVkcy9sZWRzLW1lbmYyMWJtYy5j
IHwgMTMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiAg
MyBmaWxlcyBjaGFuZ2VkLCAxNDEgaW5zZXJ0aW9ucygrKQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAw
NjQ0IGRyaXZlcnMvbGVkcy9sZWRzLW1lbmYyMWJtYy5jCj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQg
YS9kcml2ZXJzL2xlZHMvS2NvbmZpZyBiL2RyaXZlcnMvbGVkcy9LY29uZmlnCj4gPiA+IGluZGV4
IDI3Y2YwY2QuLmVjMDM0NTcgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvbGVkcy9LY29uZmln
Cj4gPiA+ICsrKyBiL2RyaXZlcnMvbGVkcy9LY29uZmlnCj4gPiA+IEBAIC00NTgsNiArNDU4LDE1
IEBAIGNvbmZpZyBMRURTX09UMjAwCj4gPiA+ICAgICAgICAgICBUaGlzIG9wdGlvbiBlbmFibGVz
IHN1cHBvcnQgZm9yIHRoZSBMRURzIG9uIHRoZSBCYWNobWFubiBPVDIwMC4KPiA+ID4gICAgICAg
ICAgIFNheSBZIHRvIGVuYWJsZSBMRURzIG9uIHRoZSBCYWNobWFubiBPVDIwMC4KPiA+ID4KPiA+
ID4gK2NvbmZpZyBMRURTX01FTkYyMUJNQwo+ID4gPiArICAgICAgIHRyaXN0YXRlICJMRUQgc3Vw
cG9ydCBmb3IgdGhlIE1FTiAxNEYwMjFQMDAgQk1DIgo+ID4gPiArICAgICAgIGRlcGVuZHMgb24g
TEVEU19DTEFTUyAmJiBNRkRfTUVORjIxQk1DCj4gPiA+ICsgICAgICAgaGVscAo+ID4gPiArICAg
ICAgICAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBNRU4gMTRGMDIxUDAw
IEJNQyBMRURzLgo+ID4gPiArCj4gPiA+ICsgICAgICAgICBUaGlzIGRyaXZlciBjYW4gYWxzbyBi
ZSBidWlsdCBhcyBhIG1vZHVsZS4gSWYgc28gdGhlIG1vZHVsZQo+ID4gPiArICAgICAgICAgd2ls
bCBiZSBjYWxsZWQgbGVkcy1tZW5mMjFibWMuCj4gPiA+ICsKPiA+ID4gIGNvbW1lbnQgIkxFRCBk
cml2ZXIgZm9yIGJsaW5rKDEpIFVTQiBSR0IgTEVEIGlzIHVuZGVyIFNwZWNpYWwgSElEIGRyaXZl
cnMgKEhJRF9USElOR00pIgo+ID4gPgo+ID4gPiAgY29uZmlnIExFRFNfQkxJTktNCj4gPiA+IGRp
ZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvTWFrZWZpbGUgYi9kcml2ZXJzL2xlZHMvTWFrZWZpbGUK
PiA+ID4gaW5kZXggM2MwMzY2Ni4uY2FkYzQzMyAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9s
ZWRzL01ha2VmaWxlCj4gPiA+ICsrKyBiL2RyaXZlcnMvbGVkcy9NYWtlZmlsZQo+ID4gPiBAQCAt
NTMsNiArNTMsNyBAQCBvYmotJChDT05GSUdfTEVEU19NQVg4OTk3KSAgICAgICAgICAgICs9IGxl
ZHMtbWF4ODk5Ny5vCj4gPiA+ICBvYmotJChDT05GSUdfTEVEU19MTTM1NXgpICAgICAgICAgICAg
ICArPSBsZWRzLWxtMzU1eC5vCj4gPiA+ICBvYmotJChDT05GSUdfTEVEU19CTElOS00pICAgICAg
ICAgICAgICArPSBsZWRzLWJsaW5rbS5vCj4gPiA+ICBvYmotJChDT05GSUdfTEVEU19WRVJTQVRJ
TEUpICAgICAgICAgICArPSBsZWRzLXZlcnNhdGlsZS5vCj4gPiA+ICtvYmotJChDT05GSUdfTEVE
U19NRU5GMjFCTUMpICAgICAgICAgICArPSBsZWRzLW1lbmYyMWJtYy5vCj4gPiA+Cj4gPiA+ICAj
IExFRCBTUEkgRHJpdmVycwo+ID4gPiAgb2JqLSQoQ09ORklHX0xFRFNfREFDMTI0UzA4NSkgICAg
ICAgICAgKz0gbGVkcy1kYWMxMjRzMDg1Lm8KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVk
cy9sZWRzLW1lbmYyMWJtYy5jIGIvZHJpdmVycy9sZWRzL2xlZHMtbWVuZjIxYm1jLmMKPiA+ID4g
bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMC4uODlkZDU3Nwo+ID4gPiAt
LS0gL2Rldi9udWxsCj4gPiA+ICsrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLW1lbmYyMWJtYy5jCj4g
PiA+IEBAIC0wLDAgKzEsMTMxIEBACj4gPiA+ICsvKgo+ID4gPiArICogIE1FTiAxNEYwMjFQMDAg
Qm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIChCTUMpIExFRHMgRHJpdmVyLgo+ID4gPiArICoK
PiA+ID4gKyAqICBUaGlzIGlzIHRoZSBjb3JlIExFRCBkcml2ZXIgb2YgdGhlIE1FTiAxNEYwMjFQ
MDAgQk1DLgo+ID4gPiArICogIFRoZXJlIGFyZSBmb3VyIExFRHMgYXZhaWxhYmxlIHdoaWNoIGNh
biBiZSBzd2l0Y2hlZCBvbiBhbmQgb2ZmLgo+ID4gPiArICogIFNUQVRVUyBMRUQsIEhPVCBTV0FQ
IExFRCwgVVNFUiBMRUQgMSwgVVNFUiBMRUQgMgo+ID4gPiArICoKPiA+ID4gKyAqICBDb3B5cmln
aHQgKEMpIDIwMTQgTUVOIE1pa3JvIEVsZWt0cm9uaWsgTnVlcm5iZXJnIEdtYkgKPiA+ID4gKyAq
Cj4gPiA+ICsgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0Cj4gPiA+ICsgKiAgdW5kZXIgIHRoZSB0ZXJtcyBv
ZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCj4g
PiA+ICsgKiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAgZWl0aGVyIHZlcnNpb24gMiBvZiB0
aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyCj4gPiA+ICsgKiAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KPiA+ID4gKyAqLwo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+
Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgv
cGxhdGZvcm1fZGV2aWNlLmg+Cj4gPiA+ICsjaW5jbHVkZSA8bGludXgvbGVkcy5oPgo+ID4gPiAr
I2luY2x1ZGUgPGxpbnV4L2kyYy5oPgo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIEJNQ19DTURfTEVE
X0dFVF9TRVQgICAgMHhBMAo+ID4gPiArI2RlZmluZSBCTUNfQklUX0xFRF9TVEFUVVMgICAgIEJJ
VCgwKQo+ID4gPiArI2RlZmluZSBCTUNfQklUX0xFRF9IT1RTV0FQICAgIEJJVCgxKQo+ID4gPiAr
I2RlZmluZSBCTUNfQklUX0xFRF9VU0VSMSAgICAgIEJJVCgyKQo+ID4gPiArI2RlZmluZSBCTUNf
QklUX0xFRF9VU0VSMiAgICAgIEJJVCgzKQo+ID4gPiArCj4gPiA+ICtzdHJ1Y3QgbWVuZjIxYm1j
X2xlZCB7Cj4gPiA+ICsgICAgICAgc3RydWN0IGxlZF9jbGFzc2RldiBjZGV2Owo+ID4gPiArICAg
ICAgIHU4IGxlZF9iaXQ7Cj4gPiA+ICsgICAgICAgY29uc3QgY2hhciAqbmFtZTsKPiA+ID4gKyAg
ICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX2NsaWVudDsKPiA+ID4gK307Cj4gPiA+ICsKPiA+
ID4gK3N0YXRpYyBzdHJ1Y3QgbWVuZjIxYm1jX2xlZCBsZWRzW10gPSB7Cj4gPiA+ICsgICAgICAg
ewo+ID4gPiArICAgICAgICAgICAgICAgLm5hbWUgPSAibWVuZjIxYm1jOmxlZF9zdGF0dXMiLAo+
ID4gPiArICAgICAgICAgICAgICAgLmxlZF9iaXQgPSBCTUNfQklUX0xFRF9TVEFUVVMsCj4gPiA+
ICsgICAgICAgfSwKPiA+ID4gKyAgICAgICB7Cj4gPiA+ICsgICAgICAgICAgICAgICAubmFtZSA9
ICJtZW5mMjFibWM6bGVkX2hvdHN3YXAiLAo+ID4gPiArICAgICAgICAgICAgICAgLmxlZF9iaXQg
PSBCTUNfQklUX0xFRF9IT1RTV0FQLAo+ID4gPiArICAgICAgIH0sCj4gPiA+ICsgICAgICAgewo+
ID4gPiArICAgICAgICAgICAgICAgLm5hbWUgPSAibWVuZjIxYm1jOmxlZF91c2VyMSIsCj4gPiA+
ICsgICAgICAgICAgICAgICAubGVkX2JpdCA9IEJNQ19CSVRfTEVEX1VTRVIxLAo+ID4gPiArICAg
ICAgIH0sCj4gPiA+ICsgICAgICAgewo+ID4gPiArICAgICAgICAgICAgICAgLm5hbWUgPSAibWVu
ZjIxYm1jOmxlZF91c2VyMiIsCj4gPiA+ICsgICAgICAgICAgICAgICAubGVkX2JpdCA9IEJNQ19C
SVRfTEVEX1VTRVIyLAo+ID4gPiArICAgICAgIH0KPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0
YXRpYyBERUZJTkVfTVVURVgobGVkX2xvY2spOwo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZAo+
ID4gPiArbWVuZjIxYm1jX2xlZF9zZXQoc3RydWN0IGxlZF9jbGFzc2RldiAqbGVkX2NkZXYsIGVu
dW0gbGVkX2JyaWdodG5lc3MgdmFsdWUpCj4gPiA+ICt7Cj4gPiA+ICsgICAgICAgaW50IGxlZF92
YWw7Cj4gPiA+ICsgICAgICAgc3RydWN0IG1lbmYyMWJtY19sZWQgKmxlZCA9IGNvbnRhaW5lcl9v
ZihsZWRfY2RldiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cnVjdCBtZW5mMjFibWNfbGVkLCBjZGV2KTsKPiA+ID4gKwo+ID4gPiArICAgICAgIG11dGV4
X2xvY2soJmxlZF9sb2NrKTsKPiA+ID4gKyAgICAgICBsZWRfdmFsID0gaTJjX3NtYnVzX3JlYWRf
Ynl0ZV9kYXRhKGxlZC0+aTJjX2NsaWVudCwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJNQ19DTURfTEVEX0dFVF9TRVQpOwo+ID4gPiArICAgICAgIGlm
IChsZWRfdmFsIDwgMCkKPiA+ID4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX291dDsKPiA+ID4g
Kwo+ID4gPiArICAgICAgIGlmICh2YWx1ZSA9PSBMRURfT0ZGKQo+ID4gPiArICAgICAgICAgICAg
ICAgbGVkX3ZhbCAmPSB+bGVkLT5sZWRfYml0Owo+ID4gPiArICAgICAgIGVsc2UKPiA+ID4gKyAg
ICAgICAgICAgICAgIGxlZF92YWwgfD0gbGVkLT5sZWRfYml0Owo+ID4gPiArCj4gPiA+ICsgICAg
ICAgaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0YShsZWQtPmkyY19jbGllbnQsCj4gPiA+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCTUNfQ01EX0xFRF9HRVRfU0VULCBsZWRfdmFs
KTsKPiA+ID4gK2Vycl9vdXQ6Cj4gPiA+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZsZWRfbG9jayk7
Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgbWVuZjIxYm1jX2xlZF9wcm9iZShz
dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiArewo+ID4gPiArICAgICAgIGludCBp
Owo+ID4gPiArICAgICAgIGludCByZXQ7Cj4gPiA+ICsgICAgICAgc3RydWN0IGkyY19jbGllbnQg
KmkyY19jbGllbnQgPSB0b19pMmNfY2xpZW50KHBkZXYtPmRldi5wYXJlbnQpOwo+ID4gPiArCj4g
PiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobGVkcyk7IGkrKykgewo+ID4g
PiArICAgICAgICAgICAgICAgbGVkc1tpXS5jZGV2Lm5hbWUgPSBsZWRzW2ldLm5hbWU7Cj4gPiA+
ICsgICAgICAgICAgICAgICBsZWRzW2ldLmNkZXYuYnJpZ2h0bmVzc19zZXQgPSBtZW5mMjFibWNf
bGVkX3NldDsKPiA+ID4gKyAgICAgICAgICAgICAgIGxlZHNbaV0uaTJjX2NsaWVudCA9IGkyY19j
bGllbnQ7Cj4gPiA+ICsgICAgICAgICAgICAgICByZXQgPSBsZWRfY2xhc3NkZXZfcmVnaXN0ZXIo
JnBkZXYtPmRldiwgJmxlZHNbaV0uY2Rldik7Cj4gPiA+ICsgICAgICAgICAgICAgICBpZiAocmV0
IDwgMCkKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfZnJlZV9sZWRzOwo+
ID4gPiArICAgICAgIH0KPiA+ID4gKyAgICAgICBkZXZfaW5mbygmcGRldi0+ZGV2LCAiTUVOIDE0
MEYyMVAwMCBCTUMgTEVEIGRldmljZSBlbmFibGVkXG4iKTsKPiA+ID4gKwo+ID4gPiArICAgICAg
IHJldHVybiAwOwo+ID4gPiArCj4gPiA+ICtlcnJfZnJlZV9sZWRzOgo+ID4gPiArICAgICAgIGRl
dl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byByZWdpc3RlciBMRUQgZGV2aWNlXG4iKTsKPiA+
ID4gKwo+ID4gPiArICAgICAgIGZvciAoaSA9IGkgLSAxOyBpID49IDA7IGktLSkKPiA+ID4gKyAg
ICAgICAgICAgICAgIGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKCZsZWRzW2ldLmNkZXYpOwo+ID4g
PiArCj4gPiA+ICsgICAgICAgcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3Rh
dGljIGludCBtZW5mMjFibWNfbGVkX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2
KQo+ID4gPiArewo+ID4gPiArICAgICAgIGludCBpOwo+ID4gPiArCj4gPiA+ICsgICAgICAgZm9y
IChpID0gMDsgaSA8IEFSUkFZX1NJWkUobGVkcyk7IGkrKykKPiA+ID4gKyAgICAgICAgICAgICAg
IGxlZF9jbGFzc2Rldl91bnJlZ2lzdGVyKCZsZWRzW2ldLmNkZXYpOwo+ID4gPiArCj4gPiA+ICsg
ICAgICAgcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgcGxh
dGZvcm1fZHJpdmVyIG1lbmYyMWJtY19sZWQgPSB7Cj4gPiA+ICsgICAgICAgLnByb2JlICAgICAg
ICAgID0gbWVuZjIxYm1jX2xlZF9wcm9iZSwKPiA+ID4gKyAgICAgICAucmVtb3ZlICAgICAgICAg
PSBtZW5mMjFibWNfbGVkX3JlbW92ZSwKPiA+ID4gKyAgICAgICAuZHJpdmVyICAgICAgICAgPSB7
Cj4gPiA+ICsgICAgICAgICAgICAgICAubmFtZSAgICAgICAgICAgPSAibWVuZjIxYm1jX2xlZCIs
Cj4gPiA+ICsgICAgICAgICAgICAgICAub3duZXIgICAgICAgICAgPSBUSElTX01PRFVMRSwKPiA+
ID4gKyAgICAgICB9LAo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArbW9kdWxlX3BsYXRmb3JtX2Ry
aXZlcihtZW5mMjFibWNfbGVkKTsKPiA+ID4gKwo+ID4gPiArTU9EVUxFX0FVVEhPUigiQW5kcmVh
cyBXZXJuZXIgPGFuZHJlYXMud2VybmVyQG1lbi5kZT4iKTsKPiA+ID4gK01PRFVMRV9ERVNDUklQ
VElPTigiTUVOIDE0RjAyMVAwMCBCTUMgbGVkIGRyaXZlciIpOwo+ID4gPiArTU9EVUxFX0xJQ0VO
U0UoIkdQTCB2MiIpOwo+ID4gPiArTU9EVUxFX0FMSUFTKCJwbGF0Zm9ybTptZW5mMjFibWNfbGVk
Iik7Cj4gPiA+Cj4gCj4gLS0gCj4gTGVlIEpvbmVzCj4gTGluYXJvIFNUTWljcm9lbGVjdHJvbmlj
cyBMYW5kaW5nIFRlYW0gTGVhZAo+IExpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJl
IGZvciBBUk0gU29Dcwo+IEZvbGxvdyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNv
cnMgbWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxt
LXNlbnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=

WARNING: multiple messages have this Message-ID (diff)
From: Andreas Werner <andreas.werner@men.de>
To: Lee Jones <lee.jones@linaro.org>
Cc: Bryan Wu <cooloney@gmail.com>,
	Andreas Werner <andreas.werner@men.de>,
	lkml <linux-kernel@vger.kernel.org>,
	Samuel Ortiz <sameo@linux.intel.com>, <linux@roeck-us.net>,
	<lm-sensors@lm-sensors.org>, <wim@iguana.be>,
	<linux-watchdog@vger.kernel.org>,
	"rpurdie@rpsys.net" <rpurdie@rpsys.net>,
	Linux LED Subsystem <linux-leds@vger.kernel.org>
Subject: Re: [PATCH v6 3/4] drivers/leds/leds-menf21bmc: introduce MEN 14F021P00 BMC LED driver
Date: Fri, 29 Aug 2014 13:38:15 +0200	[thread overview]
Message-ID: <20140829113815.GA30736@awelinux> (raw)
In-Reply-To: <20140829065915.GZ24579@lee--X1>

On Fri, Aug 29, 2014 at 07:59:15AM +0100, Lee Jones wrote:
> On Thu, 28 Aug 2014, Bryan Wu wrote:
> 
> > On Wed, Aug 27, 2014 at 10:52 AM, Andreas Werner <andreas.werner@men.de> wrote:
> > > Added driver to support the 14F021P00 BMC LEDs.
> > > The BMC is a Board Management Controller including four LEDs which
> > > can be switched on and off.
> > >
> > 
> > Please go ahead with my Ack
> > Acked-by: Bryan Wu <cooloney@gmail.com>
> > 
> > Lee, will you merge this through your tree? I think we do that in one
> > shot is better.
> 
> Yes, that's fine.  Pull-request to follow.
> 

Thanks to all for review.

Who of you does the Watchdog part? Is it the part of Wim to Ack the patch
if everythings is right or Guenther?

I ask because if everything is ok all the patches can go in completly that would
be nice.

Regards
Andy

> > > Signed-off-by: Andreas Werner <andreas.werner@men.de>
> > > ---
> > >  drivers/leds/Kconfig          |   9 +++
> > >  drivers/leds/Makefile         |   1 +
> > >  drivers/leds/leds-menf21bmc.c | 131 ++++++++++++++++++++++++++++++++++++++++++
> > >  3 files changed, 141 insertions(+)
> > >  create mode 100644 drivers/leds/leds-menf21bmc.c
> > >
> > > diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
> > > index 27cf0cd..ec03457 100644
> > > --- a/drivers/leds/Kconfig
> > > +++ b/drivers/leds/Kconfig
> > > @@ -458,6 +458,15 @@ config LEDS_OT200
> > >           This option enables support for the LEDs on the Bachmann OT200.
> > >           Say Y to enable LEDs on the Bachmann OT200.
> > >
> > > +config LEDS_MENF21BMC
> > > +       tristate "LED support for the MEN 14F021P00 BMC"
> > > +       depends on LEDS_CLASS && MFD_MENF21BMC
> > > +       help
> > > +         Say Y here to include support for the MEN 14F021P00 BMC LEDs.
> > > +
> > > +         This driver can also be built as a module. If so the module
> > > +         will be called leds-menf21bmc.
> > > +
> > >  comment "LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)"
> > >
> > >  config LEDS_BLINKM
> > > diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
> > > index 3c03666..cadc433 100644
> > > --- a/drivers/leds/Makefile
> > > +++ b/drivers/leds/Makefile
> > > @@ -53,6 +53,7 @@ obj-$(CONFIG_LEDS_MAX8997)            += leds-max8997.o
> > >  obj-$(CONFIG_LEDS_LM355x)              += leds-lm355x.o
> > >  obj-$(CONFIG_LEDS_BLINKM)              += leds-blinkm.o
> > >  obj-$(CONFIG_LEDS_VERSATILE)           += leds-versatile.o
> > > +obj-$(CONFIG_LEDS_MENF21BMC)           += leds-menf21bmc.o
> > >
> > >  # LED SPI Drivers
> > >  obj-$(CONFIG_LEDS_DAC124S085)          += leds-dac124s085.o
> > > diff --git a/drivers/leds/leds-menf21bmc.c b/drivers/leds/leds-menf21bmc.c
> > > new file mode 100644
> > > index 0000000..89dd577
> > > --- /dev/null
> > > +++ b/drivers/leds/leds-menf21bmc.c
> > > @@ -0,0 +1,131 @@
> > > +/*
> > > + *  MEN 14F021P00 Board Management Controller (BMC) LEDs Driver.
> > > + *
> > > + *  This is the core LED driver of the MEN 14F021P00 BMC.
> > > + *  There are four LEDs available which can be switched on and off.
> > > + *  STATUS LED, HOT SWAP LED, USER LED 1, USER LED 2
> > > + *
> > > + *  Copyright (C) 2014 MEN Mikro Elektronik Nuernberg GmbH
> > > + *
> > > + *  This program is free software; you can redistribute  it and/or modify it
> > > + *  under  the terms of  the GNU General  Public License as published by the
> > > + *  Free Software Foundation;  either version 2 of the  License, or (at your
> > > + *  option) any later version.
> > > + */
> > > +
> > > +#include <linux/module.h>
> > > +#include <linux/kernel.h>
> > > +#include <linux/platform_device.h>
> > > +#include <linux/leds.h>
> > > +#include <linux/i2c.h>
> > > +
> > > +#define BMC_CMD_LED_GET_SET    0xA0
> > > +#define BMC_BIT_LED_STATUS     BIT(0)
> > > +#define BMC_BIT_LED_HOTSWAP    BIT(1)
> > > +#define BMC_BIT_LED_USER1      BIT(2)
> > > +#define BMC_BIT_LED_USER2      BIT(3)
> > > +
> > > +struct menf21bmc_led {
> > > +       struct led_classdev cdev;
> > > +       u8 led_bit;
> > > +       const char *name;
> > > +       struct i2c_client *i2c_client;
> > > +};
> > > +
> > > +static struct menf21bmc_led leds[] = {
> > > +       {
> > > +               .name = "menf21bmc:led_status",
> > > +               .led_bit = BMC_BIT_LED_STATUS,
> > > +       },
> > > +       {
> > > +               .name = "menf21bmc:led_hotswap",
> > > +               .led_bit = BMC_BIT_LED_HOTSWAP,
> > > +       },
> > > +       {
> > > +               .name = "menf21bmc:led_user1",
> > > +               .led_bit = BMC_BIT_LED_USER1,
> > > +       },
> > > +       {
> > > +               .name = "menf21bmc:led_user2",
> > > +               .led_bit = BMC_BIT_LED_USER2,
> > > +       }
> > > +};
> > > +
> > > +static DEFINE_MUTEX(led_lock);
> > > +
> > > +static void
> > > +menf21bmc_led_set(struct led_classdev *led_cdev, enum led_brightness value)
> > > +{
> > > +       int led_val;
> > > +       struct menf21bmc_led *led = container_of(led_cdev,
> > > +                                       struct menf21bmc_led, cdev);
> > > +
> > > +       mutex_lock(&led_lock);
> > > +       led_val = i2c_smbus_read_byte_data(led->i2c_client,
> > > +                                          BMC_CMD_LED_GET_SET);
> > > +       if (led_val < 0)
> > > +               goto err_out;
> > > +
> > > +       if (value == LED_OFF)
> > > +               led_val &= ~led->led_bit;
> > > +       else
> > > +               led_val |= led->led_bit;
> > > +
> > > +       i2c_smbus_write_byte_data(led->i2c_client,
> > > +                                 BMC_CMD_LED_GET_SET, led_val);
> > > +err_out:
> > > +       mutex_unlock(&led_lock);
> > > +}
> > > +
> > > +static int menf21bmc_led_probe(struct platform_device *pdev)
> > > +{
> > > +       int i;
> > > +       int ret;
> > > +       struct i2c_client *i2c_client = to_i2c_client(pdev->dev.parent);
> > > +
> > > +       for (i = 0; i < ARRAY_SIZE(leds); i++) {
> > > +               leds[i].cdev.name = leds[i].name;
> > > +               leds[i].cdev.brightness_set = menf21bmc_led_set;
> > > +               leds[i].i2c_client = i2c_client;
> > > +               ret = led_classdev_register(&pdev->dev, &leds[i].cdev);
> > > +               if (ret < 0)
> > > +                       goto err_free_leds;
> > > +       }
> > > +       dev_info(&pdev->dev, "MEN 140F21P00 BMC LED device enabled\n");
> > > +
> > > +       return 0;
> > > +
> > > +err_free_leds:
> > > +       dev_err(&pdev->dev, "failed to register LED device\n");
> > > +
> > > +       for (i = i - 1; i >= 0; i--)
> > > +               led_classdev_unregister(&leds[i].cdev);
> > > +
> > > +       return ret;
> > > +}
> > > +
> > > +static int menf21bmc_led_remove(struct platform_device *pdev)
> > > +{
> > > +       int i;
> > > +
> > > +       for (i = 0; i < ARRAY_SIZE(leds); i++)
> > > +               led_classdev_unregister(&leds[i].cdev);
> > > +
> > > +       return 0;
> > > +}
> > > +
> > > +static struct platform_driver menf21bmc_led = {
> > > +       .probe          = menf21bmc_led_probe,
> > > +       .remove         = menf21bmc_led_remove,
> > > +       .driver         = {
> > > +               .name           = "menf21bmc_led",
> > > +               .owner          = THIS_MODULE,
> > > +       },
> > > +};
> > > +
> > > +module_platform_driver(menf21bmc_led);
> > > +
> > > +MODULE_AUTHOR("Andreas Werner <andreas.werner@men.de>");
> > > +MODULE_DESCRIPTION("MEN 14F021P00 BMC led driver");
> > > +MODULE_LICENSE("GPL v2");
> > > +MODULE_ALIAS("platform:menf21bmc_led");
> > >
> 
> -- 
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2014-08-29 10:46 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-27 17:51 [PATCH v6 0/4] Introduce MEN 14F021P00 BMC driver series Andreas Werner
2014-08-27 17:51 ` [lm-sensors] " Andreas Werner
2014-08-27 17:51 ` Andreas Werner
2014-08-27 17:51 ` [PATCH v6 1/4] drivers/mfd/menf21bmc: introduce MEN 14F021P00 BMC MFD Core driver Andreas Werner
2014-08-27 17:51   ` [lm-sensors] " Andreas Werner
2014-08-27 17:51   ` Andreas Werner
2014-08-28  7:37   ` Lee Jones
2014-08-28  7:37     ` [lm-sensors] " Lee Jones
2014-08-28  7:37     ` Lee Jones
2014-08-27 17:52 ` [PATCH v6 2/4] drivers/watchdog/menf21bmc_wdt: introduce MEN 14F021P00 BMC Watchdog driver Andreas Werner
2014-08-27 17:52   ` [lm-sensors] [PATCH v6 2/4] drivers/watchdog/menf21bmc_wdt: introduce MEN 14F021P00 BMC Watchdog dri Andreas Werner
2014-08-27 17:52   ` [PATCH v6 2/4] drivers/watchdog/menf21bmc_wdt: introduce MEN 14F021P00 BMC Watchdog driver Andreas Werner
2014-09-04  9:14   ` Lee Jones
2014-09-04  9:14     ` Lee Jones
2014-09-24 12:35   ` Lee Jones
2014-09-24 12:35     ` Lee Jones
2014-09-24 13:24     ` Guenter Roeck
2014-09-24 14:13       ` Lee Jones
2014-09-24 14:13         ` Lee Jones
2014-09-24 14:14         ` Lee Jones
2014-09-24 14:14           ` Lee Jones
2014-08-27 17:52 ` [PATCH v6 3/4] drivers/leds/leds-menf21bmc: introduce MEN 14F021P00 BMC LED driver Andreas Werner
2014-08-27 17:52   ` [lm-sensors] " Andreas Werner
2014-08-27 17:52   ` Andreas Werner
2014-08-28 17:54   ` Bryan Wu
2014-08-28 17:54     ` [lm-sensors] " Bryan Wu
2014-08-29  6:59     ` Lee Jones
2014-08-29  6:59       ` [lm-sensors] " Lee Jones
2014-08-29  6:59       ` Lee Jones
2014-08-29 11:38       ` Andreas Werner [this message]
2014-08-29 11:38         ` Andreas Werner
2014-08-29 11:38         ` [lm-sensors] " Andreas Werner
2014-08-29 11:38         ` Andreas Werner
2014-08-29 10:59         ` Lee Jones
2014-08-29 10:59           ` [lm-sensors] " Lee Jones
2014-08-27 17:53 ` [PATCH v6 4/4] drivers/hwmon/menf21bmc_hwmon: introduce MEN14F021P00 BMC HWMON driver Andreas Werner
2014-08-27 17:53   ` [lm-sensors] " Andreas Werner
2014-08-27 17:53   ` Andreas Werner
2014-08-27 18:38   ` Guenter Roeck
2014-08-27 18:38     ` [lm-sensors] [PATCH v6 4/4] drivers/hwmon/menf21bmc_hwmon: introduce MEN14F021P00 BMC HWMON driv Guenter Roeck
2014-08-28  8:16     ` [PATCH v6 4/4] drivers/hwmon/menf21bmc_hwmon: introduce MEN14F021P00 BMC HWMON driver Andreas Werner
2014-08-28  8:16       ` [lm-sensors] [PATCH v6 4/4] drivers/hwmon/menf21bmc_hwmon: introduce MEN14F021P00 BMC HWMON driv Andreas Werner
2014-08-28  8:16       ` [PATCH v6 4/4] drivers/hwmon/menf21bmc_hwmon: introduce MEN14F021P00 BMC HWMON driver Andreas Werner
2014-09-15  7:36 ` [PATCH] MAINTAINERS: Adds Andreas Werner to maintainers list for MEN F21BMC Andreas Werner
2014-09-15 22:42   ` Lee Jones
2014-09-16  8:22     ` Andreas Werner
2014-09-24 13:45 ` [GIT PULL] Immutable branch between MFD, HWMON, LEDs and Watchdog Lee Jones
2014-09-24 13:45   ` Lee Jones
2014-09-24 14:48 ` [PATCH v6 0/4] Introduce MEN 14F021P00 BMC driver series Lee Jones
2014-09-24 14:48   ` Lee Jones
2014-09-24 15:45   ` Guenter Roeck
2014-09-24 15:45     ` [lm-sensors] " Guenter Roeck
2014-09-24 16:18     ` Lee Jones
2014-09-24 16:18       ` Lee Jones
2014-09-24 16:28       ` Guenter Roeck
2014-09-24 16:28         ` [lm-sensors] " Guenter Roeck
2014-09-24 16:33       ` Bryan Wu
2014-09-24 16:33         ` Bryan Wu
2014-09-24 16:57         ` Guenter Roeck
2014-09-24 16:57           ` [lm-sensors] " Guenter Roeck
2014-09-24 18:07           ` Bryan Wu
2014-09-24 18:41           ` Lee Jones
2014-09-24 18:41             ` Lee Jones
2014-09-25  6:58             ` Wim Van Sebroeck
2014-09-25  8:26             ` Andreas Werner
2014-09-25  8:26               ` Andreas Werner
2014-09-25  8:26               ` Andreas Werner
2014-09-25  7:42               ` Lee Jones
2014-09-25  7:42                 ` Lee Jones
2014-09-24 14:49 ` [GIT PULL] MFD: Immutable branch between HWMON, LEDs and Watchdog Lee Jones
2014-09-24 14:49   ` Lee Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140829113815.GA30736@awelinux \
    --to=andreas.werner@men.de \
    --cc=cooloney@gmail.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=lm-sensors@lm-sensors.org \
    --cc=rpurdie@rpsys.net \
    --cc=sameo@linux.intel.com \
    --cc=wim@iguana.be \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.