All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20140829105913.GI24579@lee--X1>

diff --git a/a/1.txt b/N1/1.txt
index 74cddd7..1ba0af4 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,228 +1,154 @@
-On Fri, 29 Aug 2014, Andreas Werner wrote:
-
-> 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?
-
-Wim looks like the guy:
-
-WATCHDOG DEVICE DRIVERS
-M:      Wim Van Sebroeck <wim@iguana.be>
-L:      linux-watchdog@vger.kernel.org
-W:      http://www.linux-watchdog.org/
-T:      git git://www.linux-watchdog.org/linux-watchdog.git
-S:      Maintained
-F:      Documentation/watchdog/
-F:      drivers/watchdog/
-F:      include/linux/watchdog.h
-F:      include/uapi/linux/watchdog.h
-
-> I ask because if everything is ok all the patches can go in completly that would
-> be nice.
-
-That is the plan.
-
-> > > > 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
+T24gRnJpLCAyOSBBdWcgMjAxNCwgQW5kcmVhcyBXZXJuZXIgd3JvdGU6Cgo+IE9uIEZyaSwgQXVn
+IDI5LCAyMDE0IGF0IDA3OjU5OjE1QU0gKzAxMDAsIExlZSBKb25lcyB3cm90ZToKPiA+IE9uIFRo
+dSwgMjggQXVnIDIwMTQsIEJyeWFuIFd1IHdyb3RlOgo+ID4gCj4gPiA+IE9uIFdlZCwgQXVnIDI3
+LCAyMDE0IGF0IDEwOjUyIEFNLCBBbmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJuZXJAbWVuLmRl
+PiB3cm90ZToKPiA+ID4gPiBBZGRlZCBkcml2ZXIgdG8gc3VwcG9ydCB0aGUgMTRGMDIxUDAwIEJN
+QyBMRURzLgo+ID4gPiA+IFRoZSBCTUMgaXMgYSBCb2FyZCBNYW5hZ2VtZW50IENvbnRyb2xsZXIg
+aW5jbHVkaW5nIGZvdXIgTEVEcyB3aGljaAo+ID4gPiA+IGNhbiBiZSBzd2l0Y2hlZCBvbiBhbmQg
+b2ZmLgo+ID4gPiA+Cj4gPiA+IAo+ID4gPiBQbGVhc2UgZ28gYWhlYWQgd2l0aCBteSBBY2sKPiA+
+ID4gQWNrZWQtYnk6IEJyeWFuIFd1IDxjb29sb25leUBnbWFpbC5jb20+Cj4gPiA+IAo+ID4gPiBM
+ZWUsIHdpbGwgeW91IG1lcmdlIHRoaXMgdGhyb3VnaCB5b3VyIHRyZWU/IEkgdGhpbmsgd2UgZG8g
+dGhhdCBpbiBvbmUKPiA+ID4gc2hvdCBpcyBiZXR0ZXIuCj4gPiAKPiA+IFllcywgdGhhdCdzIGZp
+bmUuICBQdWxsLXJlcXVlc3QgdG8gZm9sbG93Lgo+ID4gCj4gCj4gVGhhbmtzIHRvIGFsbCBmb3Ig
+cmV2aWV3Lgo+IAo+IFdobyBvZiB5b3UgZG9lcyB0aGUgV2F0Y2hkb2cgcGFydD8gSXMgaXQgdGhl
+IHBhcnQgb2YgV2ltIHRvIEFjayB0aGUgcGF0Y2gKPiBpZiBldmVyeXRoaW5ncyBpcyByaWdodCBv
+ciBHdWVudGhlcj8KCldpbSBsb29rcyBsaWtlIHRoZSBndXk6CgpXQVRDSERPRyBERVZJQ0UgRFJJ
+VkVSUwpNOiAgICAgIFdpbSBWYW4gU2Vicm9lY2sgPHdpbUBpZ3VhbmEuYmU+Ckw6ICAgICAgbGlu
+dXgtd2F0Y2hkb2dAdmdlci5rZXJuZWwub3JnClc6ICAgICAgaHR0cDovL3d3dy5saW51eC13YXRj
+aGRvZy5vcmcvClQ6ICAgICAgZ2l0IGdpdDovL3d3dy5saW51eC13YXRjaGRvZy5vcmcvbGludXgt
+d2F0Y2hkb2cuZ2l0ClM6ICAgICAgTWFpbnRhaW5lZApGOiAgICAgIERvY3VtZW50YXRpb24vd2F0
+Y2hkb2cvCkY6ICAgICAgZHJpdmVycy93YXRjaGRvZy8KRjogICAgICBpbmNsdWRlL2xpbnV4L3dh
+dGNoZG9nLmgKRjogICAgICBpbmNsdWRlL3VhcGkvbGludXgvd2F0Y2hkb2cuaAoKPiBJIGFzayBi
+ZWNhdXNlIGlmIGV2ZXJ5dGhpbmcgaXMgb2sgYWxsIHRoZSBwYXRjaGVzIGNhbiBnbyBpbiBjb21w
+bGV0bHkgdGhhdCB3b3VsZAo+IGJlIG5pY2UuCgpUaGF0IGlzIHRoZSBwbGFuLgoKPiA+ID4gPiBT
+aWduZWQtb2ZmLWJ5OiBBbmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJuZXJAbWVuLmRlPgo+ID4g
+PiA+IC0tLQo+ID4gPiA+ICBkcml2ZXJzL2xlZHMvS2NvbmZpZyAgICAgICAgICB8ICAgOSArKysK
+PiA+ID4gPiAgZHJpdmVycy9sZWRzL01ha2VmaWxlICAgICAgICAgfCAgIDEgKwo+ID4gPiA+ICBk
+cml2ZXJzL2xlZHMvbGVkcy1tZW5mMjFibWMuYyB8IDEzMSArKysrKysrKysrKysrKysrKysrKysr
+KysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNDEgaW5zZXJ0
+aW9ucygrKQo+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9sZWRzL2xlZHMtbWVu
+ZjIxYm1jLmMKPiA+ID4gPgo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvS2NvbmZp
+ZyBiL2RyaXZlcnMvbGVkcy9LY29uZmlnCj4gPiA+ID4gaW5kZXggMjdjZjBjZC4uZWMwMzQ1NyAx
+MDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2xlZHMvS2NvbmZpZwo+ID4gPiA+ICsrKyBiL2Ry
+aXZlcnMvbGVkcy9LY29uZmlnCj4gPiA+ID4gQEAgLTQ1OCw2ICs0NTgsMTUgQEAgY29uZmlnIExF
+RFNfT1QyMDAKPiA+ID4gPiAgICAgICAgICAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZv
+ciB0aGUgTEVEcyBvbiB0aGUgQmFjaG1hbm4gT1QyMDAuCj4gPiA+ID4gICAgICAgICAgIFNheSBZ
+IHRvIGVuYWJsZSBMRURzIG9uIHRoZSBCYWNobWFubiBPVDIwMC4KPiA+ID4gPgo+ID4gPiA+ICtj
+b25maWcgTEVEU19NRU5GMjFCTUMKPiA+ID4gPiArICAgICAgIHRyaXN0YXRlICJMRUQgc3VwcG9y
+dCBmb3IgdGhlIE1FTiAxNEYwMjFQMDAgQk1DIgo+ID4gPiA+ICsgICAgICAgZGVwZW5kcyBvbiBM
+RURTX0NMQVNTICYmIE1GRF9NRU5GMjFCTUMKPiA+ID4gPiArICAgICAgIGhlbHAKPiA+ID4gPiAr
+ICAgICAgICAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBNRU4gMTRGMDIx
+UDAwIEJNQyBMRURzLgo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgICAgVGhpcyBkcml2ZXIgY2Fu
+IGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvIHRoZSBtb2R1bGUKPiA+ID4gPiArICAg
+ICAgICAgd2lsbCBiZSBjYWxsZWQgbGVkcy1tZW5mMjFibWMuCj4gPiA+ID4gKwo+ID4gPiA+ICBj
+b21tZW50ICJMRUQgZHJpdmVyIGZvciBibGluaygxKSBVU0IgUkdCIExFRCBpcyB1bmRlciBTcGVj
+aWFsIEhJRCBkcml2ZXJzIChISURfVEhJTkdNKSIKPiA+ID4gPgo+ID4gPiA+ICBjb25maWcgTEVE
+U19CTElOS00KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL01ha2VmaWxlIGIvZHJp
+dmVycy9sZWRzL01ha2VmaWxlCj4gPiA+ID4gaW5kZXggM2MwMzY2Ni4uY2FkYzQzMyAxMDA2NDQK
+PiA+ID4gPiAtLS0gYS9kcml2ZXJzL2xlZHMvTWFrZWZpbGUKPiA+ID4gPiArKysgYi9kcml2ZXJz
+L2xlZHMvTWFrZWZpbGUKPiA+ID4gPiBAQCAtNTMsNiArNTMsNyBAQCBvYmotJChDT05GSUdfTEVE
+U19NQVg4OTk3KSAgICAgICAgICAgICs9IGxlZHMtbWF4ODk5Ny5vCj4gPiA+ID4gIG9iai0kKENP
+TkZJR19MRURTX0xNMzU1eCkgICAgICAgICAgICAgICs9IGxlZHMtbG0zNTV4Lm8KPiA+ID4gPiAg
+b2JqLSQoQ09ORklHX0xFRFNfQkxJTktNKSAgICAgICAgICAgICAgKz0gbGVkcy1ibGlua20ubwo+
+ID4gPiA+ICBvYmotJChDT05GSUdfTEVEU19WRVJTQVRJTEUpICAgICAgICAgICArPSBsZWRzLXZl
+cnNhdGlsZS5vCj4gPiA+ID4gK29iai0kKENPTkZJR19MRURTX01FTkYyMUJNQykgICAgICAgICAg
+ICs9IGxlZHMtbWVuZjIxYm1jLm8KPiA+ID4gPgo+ID4gPiA+ICAjIExFRCBTUEkgRHJpdmVycwo+
+ID4gPiA+ICBvYmotJChDT05GSUdfTEVEU19EQUMxMjRTMDg1KSAgICAgICAgICArPSBsZWRzLWRh
+YzEyNHMwODUubwo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1tZW5mMjFi
+bWMuYyBiL2RyaXZlcnMvbGVkcy9sZWRzLW1lbmYyMWJtYy5jCj4gPiA+ID4gbmV3IGZpbGUgbW9k
+ZSAxMDA2NDQKPiA+ID4gPiBpbmRleCAwMDAwMDAwLi44OWRkNTc3Cj4gPiA+ID4gLS0tIC9kZXYv
+bnVsbAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLW1lbmYyMWJtYy5jCj4gPiA+ID4g
+QEAgLTAsMCArMSwxMzEgQEAKPiA+ID4gPiArLyoKPiA+ID4gPiArICogIE1FTiAxNEYwMjFQMDAg
+Qm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIChCTUMpIExFRHMgRHJpdmVyLgo+ID4gPiA+ICsg
+Kgo+ID4gPiA+ICsgKiAgVGhpcyBpcyB0aGUgY29yZSBMRUQgZHJpdmVyIG9mIHRoZSBNRU4gMTRG
+MDIxUDAwIEJNQy4KPiA+ID4gPiArICogIFRoZXJlIGFyZSBmb3VyIExFRHMgYXZhaWxhYmxlIHdo
+aWNoIGNhbiBiZSBzd2l0Y2hlZCBvbiBhbmQgb2ZmLgo+ID4gPiA+ICsgKiAgU1RBVFVTIExFRCwg
+SE9UIFNXQVAgTEVELCBVU0VSIExFRCAxLCBVU0VSIExFRCAyCj4gPiA+ID4gKyAqCj4gPiA+ID4g
+KyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgTUVOIE1pa3JvIEVsZWt0cm9uaWsgTnVlcm5iZXJnIEdt
+YkgKPiA+ID4gPiArICoKPiA+ID4gPiArICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
+OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAo+ID4gPiA+ICsgKiAg
+dW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBw
+dWJsaXNoZWQgYnkgdGhlCj4gPiA+ID4gKyAqICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBl
+aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXIKPiA+ID4gPiArICog
+IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiA+ID4gKyAqLwo+ID4gPiA+ICsKPiA+ID4g
+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgva2Vy
+bmVsLmg+Cj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiA+ID4g
+PiArI2luY2x1ZGUgPGxpbnV4L2xlZHMuaD4KPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2kyYy5o
+Pgo+ID4gPiA+ICsKPiA+ID4gPiArI2RlZmluZSBCTUNfQ01EX0xFRF9HRVRfU0VUICAgIDB4QTAK
+PiA+ID4gPiArI2RlZmluZSBCTUNfQklUX0xFRF9TVEFUVVMgICAgIEJJVCgwKQo+ID4gPiA+ICsj
+ZGVmaW5lIEJNQ19CSVRfTEVEX0hPVFNXQVAgICAgQklUKDEpCj4gPiA+ID4gKyNkZWZpbmUgQk1D
+X0JJVF9MRURfVVNFUjEgICAgICBCSVQoMikKPiA+ID4gPiArI2RlZmluZSBCTUNfQklUX0xFRF9V
+U0VSMiAgICAgIEJJVCgzKQo+ID4gPiA+ICsKPiA+ID4gPiArc3RydWN0IG1lbmYyMWJtY19sZWQg
+ewo+ID4gPiA+ICsgICAgICAgc3RydWN0IGxlZF9jbGFzc2RldiBjZGV2Owo+ID4gPiA+ICsgICAg
+ICAgdTggbGVkX2JpdDsKPiA+ID4gPiArICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Cj4gPiA+ID4g
+KyAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX2NsaWVudDsKPiA+ID4gPiArfTsKPiA+ID4g
+PiArCj4gPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgbWVuZjIxYm1jX2xlZCBsZWRzW10gPSB7Cj4gPiA+
+ID4gKyAgICAgICB7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIC5uYW1lID0gIm1lbmYyMWJtYzps
+ZWRfc3RhdHVzIiwKPiA+ID4gPiArICAgICAgICAgICAgICAgLmxlZF9iaXQgPSBCTUNfQklUX0xF
+RF9TVEFUVVMsCj4gPiA+ID4gKyAgICAgICB9LAo+ID4gPiA+ICsgICAgICAgewo+ID4gPiA+ICsg
+ICAgICAgICAgICAgICAubmFtZSA9ICJtZW5mMjFibWM6bGVkX2hvdHN3YXAiLAo+ID4gPiA+ICsg
+ICAgICAgICAgICAgICAubGVkX2JpdCA9IEJNQ19CSVRfTEVEX0hPVFNXQVAsCj4gPiA+ID4gKyAg
+ICAgICB9LAo+ID4gPiA+ICsgICAgICAgewo+ID4gPiA+ICsgICAgICAgICAgICAgICAubmFtZSA9
+ICJtZW5mMjFibWM6bGVkX3VzZXIxIiwKPiA+ID4gPiArICAgICAgICAgICAgICAgLmxlZF9iaXQg
+PSBCTUNfQklUX0xFRF9VU0VSMSwKPiA+ID4gPiArICAgICAgIH0sCj4gPiA+ID4gKyAgICAgICB7
+Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIC5uYW1lID0gIm1lbmYyMWJtYzpsZWRfdXNlcjIiLAo+
+ID4gPiA+ICsgICAgICAgICAgICAgICAubGVkX2JpdCA9IEJNQ19CSVRfTEVEX1VTRVIyLAo+ID4g
+PiA+ICsgICAgICAgfQo+ID4gPiA+ICt9Owo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIERFRklO
+RV9NVVRFWChsZWRfbG9jayk7Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgdm9pZAo+ID4gPiA+
+ICttZW5mMjFibWNfbGVkX3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldiwgZW51bSBs
+ZWRfYnJpZ2h0bmVzcyB2YWx1ZSkKPiA+ID4gPiArewo+ID4gPiA+ICsgICAgICAgaW50IGxlZF92
+YWw7Cj4gPiA+ID4gKyAgICAgICBzdHJ1Y3QgbWVuZjIxYm1jX2xlZCAqbGVkID0gY29udGFpbmVy
+X29mKGxlZF9jZGV2LAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgICBzdHJ1Y3QgbWVuZjIxYm1jX2xlZCwgY2Rldik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAg
+ICAgbXV0ZXhfbG9jaygmbGVkX2xvY2spOwo+ID4gPiA+ICsgICAgICAgbGVkX3ZhbCA9IGkyY19z
+bWJ1c19yZWFkX2J5dGVfZGF0YShsZWQtPmkyY19jbGllbnQsCj4gPiA+ID4gKyAgICAgICAgICAg
+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJNQ19DTURfTEVEX0dFVF9TRVQpOwo+ID4g
+PiA+ICsgICAgICAgaWYgKGxlZF92YWwgPCAwKQo+ID4gPiA+ICsgICAgICAgICAgICAgICBnb3Rv
+IGVycl9vdXQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgaWYgKHZhbHVlID09IExFRF9PRkYp
+Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIGxlZF92YWwgJj0gfmxlZC0+bGVkX2JpdDsKPiA+ID4g
+PiArICAgICAgIGVsc2UKPiA+ID4gPiArICAgICAgICAgICAgICAgbGVkX3ZhbCB8PSBsZWQtPmxl
+ZF9iaXQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0
+YShsZWQtPmkyY19jbGllbnQsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ICAgIEJNQ19DTURfTEVEX0dFVF9TRVQsIGxlZF92YWwpOwo+ID4gPiA+ICtlcnJfb3V0Ogo+ID4g
+PiA+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZsZWRfbG9jayk7Cj4gPiA+ID4gK30KPiA+ID4gPiAr
+Cj4gPiA+ID4gK3N0YXRpYyBpbnQgbWVuZjIxYm1jX2xlZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f
+ZGV2aWNlICpwZGV2KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgICAgICBpbnQgaTsKPiA+ID4gPiAr
+ICAgICAgIGludCByZXQ7Cj4gPiA+ID4gKyAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX2Ns
+aWVudCA9IHRvX2kyY19jbGllbnQocGRldi0+ZGV2LnBhcmVudCk7Cj4gPiA+ID4gKwo+ID4gPiA+
+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobGVkcyk7IGkrKykgewo+ID4gPiA+
+ICsgICAgICAgICAgICAgICBsZWRzW2ldLmNkZXYubmFtZSA9IGxlZHNbaV0ubmFtZTsKPiA+ID4g
+PiArICAgICAgICAgICAgICAgbGVkc1tpXS5jZGV2LmJyaWdodG5lc3Nfc2V0ID0gbWVuZjIxYm1j
+X2xlZF9zZXQ7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIGxlZHNbaV0uaTJjX2NsaWVudCA9IGky
+Y19jbGllbnQ7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIHJldCA9IGxlZF9jbGFzc2Rldl9yZWdp
+c3RlcigmcGRldi0+ZGV2LCAmbGVkc1tpXS5jZGV2KTsKPiA+ID4gPiArICAgICAgICAgICAgICAg
+aWYgKHJldCA8IDApCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfZnJl
+ZV9sZWRzOwo+ID4gPiA+ICsgICAgICAgfQo+ID4gPiA+ICsgICAgICAgZGV2X2luZm8oJnBkZXYt
+PmRldiwgIk1FTiAxNDBGMjFQMDAgQk1DIExFRCBkZXZpY2UgZW5hYmxlZFxuIik7Cj4gPiA+ID4g
+Kwo+ID4gPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICtlcnJfZnJlZV9s
+ZWRzOgo+ID4gPiA+ICsgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIHJlZ2lz
+dGVyIExFRCBkZXZpY2VcbiIpOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIGZvciAoaSA9IGkg
+LSAxOyBpID49IDA7IGktLSkKPiA+ID4gPiArICAgICAgICAgICAgICAgbGVkX2NsYXNzZGV2X3Vu
+cmVnaXN0ZXIoJmxlZHNbaV0uY2Rldik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgcmV0dXJu
+IHJldDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGludCBtZW5mMjFibWNf
+bGVkX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiA+ICt7Cj4gPiA+
+ID4gKyAgICAgICBpbnQgaTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBp
+IDwgQVJSQVlfU0laRShsZWRzKTsgaSsrKQo+ID4gPiA+ICsgICAgICAgICAgICAgICBsZWRfY2xh
+c3NkZXZfdW5yZWdpc3RlcigmbGVkc1tpXS5jZGV2KTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAg
+ICByZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIHN0cnVjdCBw
+bGF0Zm9ybV9kcml2ZXIgbWVuZjIxYm1jX2xlZCA9IHsKPiA+ID4gPiArICAgICAgIC5wcm9iZSAg
+ICAgICAgICA9IG1lbmYyMWJtY19sZWRfcHJvYmUsCj4gPiA+ID4gKyAgICAgICAucmVtb3ZlICAg
+ICAgICAgPSBtZW5mMjFibWNfbGVkX3JlbW92ZSwKPiA+ID4gPiArICAgICAgIC5kcml2ZXIgICAg
+ICAgICA9IHsKPiA+ID4gPiArICAgICAgICAgICAgICAgLm5hbWUgICAgICAgICAgID0gIm1lbmYy
+MWJtY19sZWQiLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAub3duZXIgICAgICAgICAgPSBUSElT
+X01PRFVMRSwKPiA+ID4gPiArICAgICAgIH0sCj4gPiA+ID4gK307Cj4gPiA+ID4gKwo+ID4gPiA+
+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1lbmYyMWJtY19sZWQpOwo+ID4gPiA+ICsKPiA+ID4g
+PiArTU9EVUxFX0FVVEhPUigiQW5kcmVhcyBXZXJuZXIgPGFuZHJlYXMud2VybmVyQG1lbi5kZT4i
+KTsKPiA+ID4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJNRU4gMTRGMDIxUDAwIEJNQyBsZWQgZHJp
+dmVyIik7Cj4gPiA+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPiA+ID4gPiArTU9EVUxF
+X0FMSUFTKCJwbGF0Zm9ybTptZW5mMjFibWNfbGVkIik7Cj4gPiA+ID4KPiA+IAoKLS0gCkxlZSBK
+b25lcwpMaW5hcm8gU1RNaWNyb2VsZWN0cm9uaWNzIExhbmRpbmcgVGVhbSBMZWFkCkxpbmFyby5v
+cmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBUk0gU29DcwpGb2xsb3cgTGluYXJvOiBG
+YWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
+X19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNl
+bnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xt
+LXNlbnNvcnM
diff --git a/a/content_digest b/N1/content_digest
index 86b40ee..44328a7 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -4,8 +4,8 @@
  "ref\020140829065915.GZ24579@lee--X1\0"
  "ref\020140829113815.GA30736@awelinux\0"
  "From\0Lee Jones <lee.jones@linaro.org>\0"
- "Subject\0Re: [PATCH v6 3/4] drivers/leds/leds-menf21bmc: introduce MEN 14F021P00 BMC LED driver\0"
- "Date\0Fri, 29 Aug 2014 11:59:13 +0100\0"
+ "Subject\0Re: [lm-sensors] [PATCH v6 3/4] drivers/leds/leds-menf21bmc: introduce MEN 14F021P00 BMC LED driver\0"
+ "Date\0Fri, 29 Aug 2014 10:59:13 +0000\0"
  "To\0Andreas Werner <andreas.werner@men.de>\0"
  "Cc\0Bryan Wu <cooloney@gmail.com>"
   lkml <linux-kernel@vger.kernel.org>
@@ -18,233 +18,159 @@
  " Linux LED Subsystem <linux-leds@vger.kernel.org>\0"
  "\00:1\0"
  "b\0"
- "On Fri, 29 Aug 2014, Andreas Werner wrote:\n"
- "\n"
- "> On Fri, Aug 29, 2014 at 07:59:15AM +0100, Lee Jones wrote:\n"
- "> > On Thu, 28 Aug 2014, Bryan Wu wrote:\n"
- "> > \n"
- "> > > On Wed, Aug 27, 2014 at 10:52 AM, Andreas Werner <andreas.werner@men.de> wrote:\n"
- "> > > > Added driver to support the 14F021P00 BMC LEDs.\n"
- "> > > > The BMC is a Board Management Controller including four LEDs which\n"
- "> > > > can be switched on and off.\n"
- "> > > >\n"
- "> > > \n"
- "> > > Please go ahead with my Ack\n"
- "> > > Acked-by: Bryan Wu <cooloney@gmail.com>\n"
- "> > > \n"
- "> > > Lee, will you merge this through your tree? I think we do that in one\n"
- "> > > shot is better.\n"
- "> > \n"
- "> > Yes, that's fine.  Pull-request to follow.\n"
- "> > \n"
- "> \n"
- "> Thanks to all for review.\n"
- "> \n"
- "> Who of you does the Watchdog part? Is it the part of Wim to Ack the patch\n"
- "> if everythings is right or Guenther?\n"
- "\n"
- "Wim looks like the guy:\n"
- "\n"
- "WATCHDOG DEVICE DRIVERS\n"
- "M:      Wim Van Sebroeck <wim@iguana.be>\n"
- "L:      linux-watchdog@vger.kernel.org\n"
- "W:      http://www.linux-watchdog.org/\n"
- "T:      git git://www.linux-watchdog.org/linux-watchdog.git\n"
- "S:      Maintained\n"
- "F:      Documentation/watchdog/\n"
- "F:      drivers/watchdog/\n"
- "F:      include/linux/watchdog.h\n"
- "F:      include/uapi/linux/watchdog.h\n"
- "\n"
- "> I ask because if everything is ok all the patches can go in completly that would\n"
- "> be nice.\n"
- "\n"
- "That is the plan.\n"
- "\n"
- "> > > > Signed-off-by: Andreas Werner <andreas.werner@men.de>\n"
- "> > > > ---\n"
- "> > > >  drivers/leds/Kconfig          |   9 +++\n"
- "> > > >  drivers/leds/Makefile         |   1 +\n"
- "> > > >  drivers/leds/leds-menf21bmc.c | 131 ++++++++++++++++++++++++++++++++++++++++++\n"
- "> > > >  3 files changed, 141 insertions(+)\n"
- "> > > >  create mode 100644 drivers/leds/leds-menf21bmc.c\n"
- "> > > >\n"
- "> > > > diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig\n"
- "> > > > index 27cf0cd..ec03457 100644\n"
- "> > > > --- a/drivers/leds/Kconfig\n"
- "> > > > +++ b/drivers/leds/Kconfig\n"
- "> > > > @@ -458,6 +458,15 @@ config LEDS_OT200\n"
- "> > > >           This option enables support for the LEDs on the Bachmann OT200.\n"
- "> > > >           Say Y to enable LEDs on the Bachmann OT200.\n"
- "> > > >\n"
- "> > > > +config LEDS_MENF21BMC\n"
- "> > > > +       tristate \"LED support for the MEN 14F021P00 BMC\"\n"
- "> > > > +       depends on LEDS_CLASS && MFD_MENF21BMC\n"
- "> > > > +       help\n"
- "> > > > +         Say Y here to include support for the MEN 14F021P00 BMC LEDs.\n"
- "> > > > +\n"
- "> > > > +         This driver can also be built as a module. If so the module\n"
- "> > > > +         will be called leds-menf21bmc.\n"
- "> > > > +\n"
- "> > > >  comment \"LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)\"\n"
- "> > > >\n"
- "> > > >  config LEDS_BLINKM\n"
- "> > > > diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile\n"
- "> > > > index 3c03666..cadc433 100644\n"
- "> > > > --- a/drivers/leds/Makefile\n"
- "> > > > +++ b/drivers/leds/Makefile\n"
- "> > > > @@ -53,6 +53,7 @@ obj-$(CONFIG_LEDS_MAX8997)            += leds-max8997.o\n"
- "> > > >  obj-$(CONFIG_LEDS_LM355x)              += leds-lm355x.o\n"
- "> > > >  obj-$(CONFIG_LEDS_BLINKM)              += leds-blinkm.o\n"
- "> > > >  obj-$(CONFIG_LEDS_VERSATILE)           += leds-versatile.o\n"
- "> > > > +obj-$(CONFIG_LEDS_MENF21BMC)           += leds-menf21bmc.o\n"
- "> > > >\n"
- "> > > >  # LED SPI Drivers\n"
- "> > > >  obj-$(CONFIG_LEDS_DAC124S085)          += leds-dac124s085.o\n"
- "> > > > diff --git a/drivers/leds/leds-menf21bmc.c b/drivers/leds/leds-menf21bmc.c\n"
- "> > > > new file mode 100644\n"
- "> > > > index 0000000..89dd577\n"
- "> > > > --- /dev/null\n"
- "> > > > +++ b/drivers/leds/leds-menf21bmc.c\n"
- "> > > > @@ -0,0 +1,131 @@\n"
- "> > > > +/*\n"
- "> > > > + *  MEN 14F021P00 Board Management Controller (BMC) LEDs Driver.\n"
- "> > > > + *\n"
- "> > > > + *  This is the core LED driver of the MEN 14F021P00 BMC.\n"
- "> > > > + *  There are four LEDs available which can be switched on and off.\n"
- "> > > > + *  STATUS LED, HOT SWAP LED, USER LED 1, USER LED 2\n"
- "> > > > + *\n"
- "> > > > + *  Copyright (C) 2014 MEN Mikro Elektronik Nuernberg GmbH\n"
- "> > > > + *\n"
- "> > > > + *  This program is free software; you can redistribute  it and/or modify it\n"
- "> > > > + *  under  the terms of  the GNU General  Public License as published by the\n"
- "> > > > + *  Free Software Foundation;  either version 2 of the  License, or (at your\n"
- "> > > > + *  option) any later version.\n"
- "> > > > + */\n"
- "> > > > +\n"
- "> > > > +#include <linux/module.h>\n"
- "> > > > +#include <linux/kernel.h>\n"
- "> > > > +#include <linux/platform_device.h>\n"
- "> > > > +#include <linux/leds.h>\n"
- "> > > > +#include <linux/i2c.h>\n"
- "> > > > +\n"
- "> > > > +#define BMC_CMD_LED_GET_SET    0xA0\n"
- "> > > > +#define BMC_BIT_LED_STATUS     BIT(0)\n"
- "> > > > +#define BMC_BIT_LED_HOTSWAP    BIT(1)\n"
- "> > > > +#define BMC_BIT_LED_USER1      BIT(2)\n"
- "> > > > +#define BMC_BIT_LED_USER2      BIT(3)\n"
- "> > > > +\n"
- "> > > > +struct menf21bmc_led {\n"
- "> > > > +       struct led_classdev cdev;\n"
- "> > > > +       u8 led_bit;\n"
- "> > > > +       const char *name;\n"
- "> > > > +       struct i2c_client *i2c_client;\n"
- "> > > > +};\n"
- "> > > > +\n"
- "> > > > +static struct menf21bmc_led leds[] = {\n"
- "> > > > +       {\n"
- "> > > > +               .name = \"menf21bmc:led_status\",\n"
- "> > > > +               .led_bit = BMC_BIT_LED_STATUS,\n"
- "> > > > +       },\n"
- "> > > > +       {\n"
- "> > > > +               .name = \"menf21bmc:led_hotswap\",\n"
- "> > > > +               .led_bit = BMC_BIT_LED_HOTSWAP,\n"
- "> > > > +       },\n"
- "> > > > +       {\n"
- "> > > > +               .name = \"menf21bmc:led_user1\",\n"
- "> > > > +               .led_bit = BMC_BIT_LED_USER1,\n"
- "> > > > +       },\n"
- "> > > > +       {\n"
- "> > > > +               .name = \"menf21bmc:led_user2\",\n"
- "> > > > +               .led_bit = BMC_BIT_LED_USER2,\n"
- "> > > > +       }\n"
- "> > > > +};\n"
- "> > > > +\n"
- "> > > > +static DEFINE_MUTEX(led_lock);\n"
- "> > > > +\n"
- "> > > > +static void\n"
- "> > > > +menf21bmc_led_set(struct led_classdev *led_cdev, enum led_brightness value)\n"
- "> > > > +{\n"
- "> > > > +       int led_val;\n"
- "> > > > +       struct menf21bmc_led *led = container_of(led_cdev,\n"
- "> > > > +                                       struct menf21bmc_led, cdev);\n"
- "> > > > +\n"
- "> > > > +       mutex_lock(&led_lock);\n"
- "> > > > +       led_val = i2c_smbus_read_byte_data(led->i2c_client,\n"
- "> > > > +                                          BMC_CMD_LED_GET_SET);\n"
- "> > > > +       if (led_val < 0)\n"
- "> > > > +               goto err_out;\n"
- "> > > > +\n"
- "> > > > +       if (value == LED_OFF)\n"
- "> > > > +               led_val &= ~led->led_bit;\n"
- "> > > > +       else\n"
- "> > > > +               led_val |= led->led_bit;\n"
- "> > > > +\n"
- "> > > > +       i2c_smbus_write_byte_data(led->i2c_client,\n"
- "> > > > +                                 BMC_CMD_LED_GET_SET, led_val);\n"
- "> > > > +err_out:\n"
- "> > > > +       mutex_unlock(&led_lock);\n"
- "> > > > +}\n"
- "> > > > +\n"
- "> > > > +static int menf21bmc_led_probe(struct platform_device *pdev)\n"
- "> > > > +{\n"
- "> > > > +       int i;\n"
- "> > > > +       int ret;\n"
- "> > > > +       struct i2c_client *i2c_client = to_i2c_client(pdev->dev.parent);\n"
- "> > > > +\n"
- "> > > > +       for (i = 0; i < ARRAY_SIZE(leds); i++) {\n"
- "> > > > +               leds[i].cdev.name = leds[i].name;\n"
- "> > > > +               leds[i].cdev.brightness_set = menf21bmc_led_set;\n"
- "> > > > +               leds[i].i2c_client = i2c_client;\n"
- "> > > > +               ret = led_classdev_register(&pdev->dev, &leds[i].cdev);\n"
- "> > > > +               if (ret < 0)\n"
- "> > > > +                       goto err_free_leds;\n"
- "> > > > +       }\n"
- "> > > > +       dev_info(&pdev->dev, \"MEN 140F21P00 BMC LED device enabled\\n\");\n"
- "> > > > +\n"
- "> > > > +       return 0;\n"
- "> > > > +\n"
- "> > > > +err_free_leds:\n"
- "> > > > +       dev_err(&pdev->dev, \"failed to register LED device\\n\");\n"
- "> > > > +\n"
- "> > > > +       for (i = i - 1; i >= 0; i--)\n"
- "> > > > +               led_classdev_unregister(&leds[i].cdev);\n"
- "> > > > +\n"
- "> > > > +       return ret;\n"
- "> > > > +}\n"
- "> > > > +\n"
- "> > > > +static int menf21bmc_led_remove(struct platform_device *pdev)\n"
- "> > > > +{\n"
- "> > > > +       int i;\n"
- "> > > > +\n"
- "> > > > +       for (i = 0; i < ARRAY_SIZE(leds); i++)\n"
- "> > > > +               led_classdev_unregister(&leds[i].cdev);\n"
- "> > > > +\n"
- "> > > > +       return 0;\n"
- "> > > > +}\n"
- "> > > > +\n"
- "> > > > +static struct platform_driver menf21bmc_led = {\n"
- "> > > > +       .probe          = menf21bmc_led_probe,\n"
- "> > > > +       .remove         = menf21bmc_led_remove,\n"
- "> > > > +       .driver         = {\n"
- "> > > > +               .name           = \"menf21bmc_led\",\n"
- "> > > > +               .owner          = THIS_MODULE,\n"
- "> > > > +       },\n"
- "> > > > +};\n"
- "> > > > +\n"
- "> > > > +module_platform_driver(menf21bmc_led);\n"
- "> > > > +\n"
- "> > > > +MODULE_AUTHOR(\"Andreas Werner <andreas.werner@men.de>\");\n"
- "> > > > +MODULE_DESCRIPTION(\"MEN 14F021P00 BMC led driver\");\n"
- "> > > > +MODULE_LICENSE(\"GPL v2\");\n"
- "> > > > +MODULE_ALIAS(\"platform:menf21bmc_led\");\n"
- "> > > >\n"
- "> > \n"
- "\n"
- "-- \n"
- "Lee Jones\n"
- "Linaro STMicroelectronics Landing Team Lead\n"
- "Linaro.org \342\224\202 Open source software for ARM SoCs\n"
- Follow Linaro: Facebook | Twitter | Blog
+ "T24gRnJpLCAyOSBBdWcgMjAxNCwgQW5kcmVhcyBXZXJuZXIgd3JvdGU6Cgo+IE9uIEZyaSwgQXVn\n"
+ "IDI5LCAyMDE0IGF0IDA3OjU5OjE1QU0gKzAxMDAsIExlZSBKb25lcyB3cm90ZToKPiA+IE9uIFRo\n"
+ "dSwgMjggQXVnIDIwMTQsIEJyeWFuIFd1IHdyb3RlOgo+ID4gCj4gPiA+IE9uIFdlZCwgQXVnIDI3\n"
+ "LCAyMDE0IGF0IDEwOjUyIEFNLCBBbmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJuZXJAbWVuLmRl\n"
+ "PiB3cm90ZToKPiA+ID4gPiBBZGRlZCBkcml2ZXIgdG8gc3VwcG9ydCB0aGUgMTRGMDIxUDAwIEJN\n"
+ "QyBMRURzLgo+ID4gPiA+IFRoZSBCTUMgaXMgYSBCb2FyZCBNYW5hZ2VtZW50IENvbnRyb2xsZXIg\n"
+ "aW5jbHVkaW5nIGZvdXIgTEVEcyB3aGljaAo+ID4gPiA+IGNhbiBiZSBzd2l0Y2hlZCBvbiBhbmQg\n"
+ "b2ZmLgo+ID4gPiA+Cj4gPiA+IAo+ID4gPiBQbGVhc2UgZ28gYWhlYWQgd2l0aCBteSBBY2sKPiA+\n"
+ "ID4gQWNrZWQtYnk6IEJyeWFuIFd1IDxjb29sb25leUBnbWFpbC5jb20+Cj4gPiA+IAo+ID4gPiBM\n"
+ "ZWUsIHdpbGwgeW91IG1lcmdlIHRoaXMgdGhyb3VnaCB5b3VyIHRyZWU/IEkgdGhpbmsgd2UgZG8g\n"
+ "dGhhdCBpbiBvbmUKPiA+ID4gc2hvdCBpcyBiZXR0ZXIuCj4gPiAKPiA+IFllcywgdGhhdCdzIGZp\n"
+ "bmUuICBQdWxsLXJlcXVlc3QgdG8gZm9sbG93Lgo+ID4gCj4gCj4gVGhhbmtzIHRvIGFsbCBmb3Ig\n"
+ "cmV2aWV3Lgo+IAo+IFdobyBvZiB5b3UgZG9lcyB0aGUgV2F0Y2hkb2cgcGFydD8gSXMgaXQgdGhl\n"
+ "IHBhcnQgb2YgV2ltIHRvIEFjayB0aGUgcGF0Y2gKPiBpZiBldmVyeXRoaW5ncyBpcyByaWdodCBv\n"
+ "ciBHdWVudGhlcj8KCldpbSBsb29rcyBsaWtlIHRoZSBndXk6CgpXQVRDSERPRyBERVZJQ0UgRFJJ\n"
+ "VkVSUwpNOiAgICAgIFdpbSBWYW4gU2Vicm9lY2sgPHdpbUBpZ3VhbmEuYmU+Ckw6ICAgICAgbGlu\n"
+ "dXgtd2F0Y2hkb2dAdmdlci5rZXJuZWwub3JnClc6ICAgICAgaHR0cDovL3d3dy5saW51eC13YXRj\n"
+ "aGRvZy5vcmcvClQ6ICAgICAgZ2l0IGdpdDovL3d3dy5saW51eC13YXRjaGRvZy5vcmcvbGludXgt\n"
+ "d2F0Y2hkb2cuZ2l0ClM6ICAgICAgTWFpbnRhaW5lZApGOiAgICAgIERvY3VtZW50YXRpb24vd2F0\n"
+ "Y2hkb2cvCkY6ICAgICAgZHJpdmVycy93YXRjaGRvZy8KRjogICAgICBpbmNsdWRlL2xpbnV4L3dh\n"
+ "dGNoZG9nLmgKRjogICAgICBpbmNsdWRlL3VhcGkvbGludXgvd2F0Y2hkb2cuaAoKPiBJIGFzayBi\n"
+ "ZWNhdXNlIGlmIGV2ZXJ5dGhpbmcgaXMgb2sgYWxsIHRoZSBwYXRjaGVzIGNhbiBnbyBpbiBjb21w\n"
+ "bGV0bHkgdGhhdCB3b3VsZAo+IGJlIG5pY2UuCgpUaGF0IGlzIHRoZSBwbGFuLgoKPiA+ID4gPiBT\n"
+ "aWduZWQtb2ZmLWJ5OiBBbmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJuZXJAbWVuLmRlPgo+ID4g\n"
+ "PiA+IC0tLQo+ID4gPiA+ICBkcml2ZXJzL2xlZHMvS2NvbmZpZyAgICAgICAgICB8ICAgOSArKysK\n"
+ "PiA+ID4gPiAgZHJpdmVycy9sZWRzL01ha2VmaWxlICAgICAgICAgfCAgIDEgKwo+ID4gPiA+ICBk\n"
+ "cml2ZXJzL2xlZHMvbGVkcy1tZW5mMjFibWMuYyB8IDEzMSArKysrKysrKysrKysrKysrKysrKysr\n"
+ "KysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNDEgaW5zZXJ0\n"
+ "aW9ucygrKQo+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9sZWRzL2xlZHMtbWVu\n"
+ "ZjIxYm1jLmMKPiA+ID4gPgo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvS2NvbmZp\n"
+ "ZyBiL2RyaXZlcnMvbGVkcy9LY29uZmlnCj4gPiA+ID4gaW5kZXggMjdjZjBjZC4uZWMwMzQ1NyAx\n"
+ "MDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2xlZHMvS2NvbmZpZwo+ID4gPiA+ICsrKyBiL2Ry\n"
+ "aXZlcnMvbGVkcy9LY29uZmlnCj4gPiA+ID4gQEAgLTQ1OCw2ICs0NTgsMTUgQEAgY29uZmlnIExF\n"
+ "RFNfT1QyMDAKPiA+ID4gPiAgICAgICAgICAgVGhpcyBvcHRpb24gZW5hYmxlcyBzdXBwb3J0IGZv\n"
+ "ciB0aGUgTEVEcyBvbiB0aGUgQmFjaG1hbm4gT1QyMDAuCj4gPiA+ID4gICAgICAgICAgIFNheSBZ\n"
+ "IHRvIGVuYWJsZSBMRURzIG9uIHRoZSBCYWNobWFubiBPVDIwMC4KPiA+ID4gPgo+ID4gPiA+ICtj\n"
+ "b25maWcgTEVEU19NRU5GMjFCTUMKPiA+ID4gPiArICAgICAgIHRyaXN0YXRlICJMRUQgc3VwcG9y\n"
+ "dCBmb3IgdGhlIE1FTiAxNEYwMjFQMDAgQk1DIgo+ID4gPiA+ICsgICAgICAgZGVwZW5kcyBvbiBM\n"
+ "RURTX0NMQVNTICYmIE1GRF9NRU5GMjFCTUMKPiA+ID4gPiArICAgICAgIGhlbHAKPiA+ID4gPiAr\n"
+ "ICAgICAgICAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBNRU4gMTRGMDIx\n"
+ "UDAwIEJNQyBMRURzLgo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgICAgVGhpcyBkcml2ZXIgY2Fu\n"
+ "IGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvIHRoZSBtb2R1bGUKPiA+ID4gPiArICAg\n"
+ "ICAgICAgd2lsbCBiZSBjYWxsZWQgbGVkcy1tZW5mMjFibWMuCj4gPiA+ID4gKwo+ID4gPiA+ICBj\n"
+ "b21tZW50ICJMRUQgZHJpdmVyIGZvciBibGluaygxKSBVU0IgUkdCIExFRCBpcyB1bmRlciBTcGVj\n"
+ "aWFsIEhJRCBkcml2ZXJzIChISURfVEhJTkdNKSIKPiA+ID4gPgo+ID4gPiA+ICBjb25maWcgTEVE\n"
+ "U19CTElOS00KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZWRzL01ha2VmaWxlIGIvZHJp\n"
+ "dmVycy9sZWRzL01ha2VmaWxlCj4gPiA+ID4gaW5kZXggM2MwMzY2Ni4uY2FkYzQzMyAxMDA2NDQK\n"
+ "PiA+ID4gPiAtLS0gYS9kcml2ZXJzL2xlZHMvTWFrZWZpbGUKPiA+ID4gPiArKysgYi9kcml2ZXJz\n"
+ "L2xlZHMvTWFrZWZpbGUKPiA+ID4gPiBAQCAtNTMsNiArNTMsNyBAQCBvYmotJChDT05GSUdfTEVE\n"
+ "U19NQVg4OTk3KSAgICAgICAgICAgICs9IGxlZHMtbWF4ODk5Ny5vCj4gPiA+ID4gIG9iai0kKENP\n"
+ "TkZJR19MRURTX0xNMzU1eCkgICAgICAgICAgICAgICs9IGxlZHMtbG0zNTV4Lm8KPiA+ID4gPiAg\n"
+ "b2JqLSQoQ09ORklHX0xFRFNfQkxJTktNKSAgICAgICAgICAgICAgKz0gbGVkcy1ibGlua20ubwo+\n"
+ "ID4gPiA+ICBvYmotJChDT05GSUdfTEVEU19WRVJTQVRJTEUpICAgICAgICAgICArPSBsZWRzLXZl\n"
+ "cnNhdGlsZS5vCj4gPiA+ID4gK29iai0kKENPTkZJR19MRURTX01FTkYyMUJNQykgICAgICAgICAg\n"
+ "ICs9IGxlZHMtbWVuZjIxYm1jLm8KPiA+ID4gPgo+ID4gPiA+ICAjIExFRCBTUEkgRHJpdmVycwo+\n"
+ "ID4gPiA+ICBvYmotJChDT05GSUdfTEVEU19EQUMxMjRTMDg1KSAgICAgICAgICArPSBsZWRzLWRh\n"
+ "YzEyNHMwODUubwo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2xlZHMvbGVkcy1tZW5mMjFi\n"
+ "bWMuYyBiL2RyaXZlcnMvbGVkcy9sZWRzLW1lbmYyMWJtYy5jCj4gPiA+ID4gbmV3IGZpbGUgbW9k\n"
+ "ZSAxMDA2NDQKPiA+ID4gPiBpbmRleCAwMDAwMDAwLi44OWRkNTc3Cj4gPiA+ID4gLS0tIC9kZXYv\n"
+ "bnVsbAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvbGVkcy9sZWRzLW1lbmYyMWJtYy5jCj4gPiA+ID4g\n"
+ "QEAgLTAsMCArMSwxMzEgQEAKPiA+ID4gPiArLyoKPiA+ID4gPiArICogIE1FTiAxNEYwMjFQMDAg\n"
+ "Qm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIChCTUMpIExFRHMgRHJpdmVyLgo+ID4gPiA+ICsg\n"
+ "Kgo+ID4gPiA+ICsgKiAgVGhpcyBpcyB0aGUgY29yZSBMRUQgZHJpdmVyIG9mIHRoZSBNRU4gMTRG\n"
+ "MDIxUDAwIEJNQy4KPiA+ID4gPiArICogIFRoZXJlIGFyZSBmb3VyIExFRHMgYXZhaWxhYmxlIHdo\n"
+ "aWNoIGNhbiBiZSBzd2l0Y2hlZCBvbiBhbmQgb2ZmLgo+ID4gPiA+ICsgKiAgU1RBVFVTIExFRCwg\n"
+ "SE9UIFNXQVAgTEVELCBVU0VSIExFRCAxLCBVU0VSIExFRCAyCj4gPiA+ID4gKyAqCj4gPiA+ID4g\n"
+ "KyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgTUVOIE1pa3JvIEVsZWt0cm9uaWsgTnVlcm5iZXJnIEdt\n"
+ "YkgKPiA+ID4gPiArICoKPiA+ID4gPiArICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl\n"
+ "OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAo+ID4gPiA+ICsgKiAg\n"
+ "dW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBw\n"
+ "dWJsaXNoZWQgYnkgdGhlCj4gPiA+ID4gKyAqICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBl\n"
+ "aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXIKPiA+ID4gPiArICog\n"
+ "IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gPiA+ID4gKyAqLwo+ID4gPiA+ICsKPiA+ID4g\n"
+ "PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgva2Vy\n"
+ "bmVsLmg+Cj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiA+ID4g\n"
+ "PiArI2luY2x1ZGUgPGxpbnV4L2xlZHMuaD4KPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2kyYy5o\n"
+ "Pgo+ID4gPiA+ICsKPiA+ID4gPiArI2RlZmluZSBCTUNfQ01EX0xFRF9HRVRfU0VUICAgIDB4QTAK\n"
+ "PiA+ID4gPiArI2RlZmluZSBCTUNfQklUX0xFRF9TVEFUVVMgICAgIEJJVCgwKQo+ID4gPiA+ICsj\n"
+ "ZGVmaW5lIEJNQ19CSVRfTEVEX0hPVFNXQVAgICAgQklUKDEpCj4gPiA+ID4gKyNkZWZpbmUgQk1D\n"
+ "X0JJVF9MRURfVVNFUjEgICAgICBCSVQoMikKPiA+ID4gPiArI2RlZmluZSBCTUNfQklUX0xFRF9V\n"
+ "U0VSMiAgICAgIEJJVCgzKQo+ID4gPiA+ICsKPiA+ID4gPiArc3RydWN0IG1lbmYyMWJtY19sZWQg\n"
+ "ewo+ID4gPiA+ICsgICAgICAgc3RydWN0IGxlZF9jbGFzc2RldiBjZGV2Owo+ID4gPiA+ICsgICAg\n"
+ "ICAgdTggbGVkX2JpdDsKPiA+ID4gPiArICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Cj4gPiA+ID4g\n"
+ "KyAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX2NsaWVudDsKPiA+ID4gPiArfTsKPiA+ID4g\n"
+ "PiArCj4gPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgbWVuZjIxYm1jX2xlZCBsZWRzW10gPSB7Cj4gPiA+\n"
+ "ID4gKyAgICAgICB7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIC5uYW1lID0gIm1lbmYyMWJtYzps\n"
+ "ZWRfc3RhdHVzIiwKPiA+ID4gPiArICAgICAgICAgICAgICAgLmxlZF9iaXQgPSBCTUNfQklUX0xF\n"
+ "RF9TVEFUVVMsCj4gPiA+ID4gKyAgICAgICB9LAo+ID4gPiA+ICsgICAgICAgewo+ID4gPiA+ICsg\n"
+ "ICAgICAgICAgICAgICAubmFtZSA9ICJtZW5mMjFibWM6bGVkX2hvdHN3YXAiLAo+ID4gPiA+ICsg\n"
+ "ICAgICAgICAgICAgICAubGVkX2JpdCA9IEJNQ19CSVRfTEVEX0hPVFNXQVAsCj4gPiA+ID4gKyAg\n"
+ "ICAgICB9LAo+ID4gPiA+ICsgICAgICAgewo+ID4gPiA+ICsgICAgICAgICAgICAgICAubmFtZSA9\n"
+ "ICJtZW5mMjFibWM6bGVkX3VzZXIxIiwKPiA+ID4gPiArICAgICAgICAgICAgICAgLmxlZF9iaXQg\n"
+ "PSBCTUNfQklUX0xFRF9VU0VSMSwKPiA+ID4gPiArICAgICAgIH0sCj4gPiA+ID4gKyAgICAgICB7\n"
+ "Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIC5uYW1lID0gIm1lbmYyMWJtYzpsZWRfdXNlcjIiLAo+\n"
+ "ID4gPiA+ICsgICAgICAgICAgICAgICAubGVkX2JpdCA9IEJNQ19CSVRfTEVEX1VTRVIyLAo+ID4g\n"
+ "PiA+ICsgICAgICAgfQo+ID4gPiA+ICt9Owo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIERFRklO\n"
+ "RV9NVVRFWChsZWRfbG9jayk7Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgdm9pZAo+ID4gPiA+\n"
+ "ICttZW5mMjFibWNfbGVkX3NldChzdHJ1Y3QgbGVkX2NsYXNzZGV2ICpsZWRfY2RldiwgZW51bSBs\n"
+ "ZWRfYnJpZ2h0bmVzcyB2YWx1ZSkKPiA+ID4gPiArewo+ID4gPiA+ICsgICAgICAgaW50IGxlZF92\n"
+ "YWw7Cj4gPiA+ID4gKyAgICAgICBzdHJ1Y3QgbWVuZjIxYm1jX2xlZCAqbGVkID0gY29udGFpbmVy\n"
+ "X29mKGxlZF9jZGV2LAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\n"
+ "ICAgICBzdHJ1Y3QgbWVuZjIxYm1jX2xlZCwgY2Rldik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAg\n"
+ "ICAgbXV0ZXhfbG9jaygmbGVkX2xvY2spOwo+ID4gPiA+ICsgICAgICAgbGVkX3ZhbCA9IGkyY19z\n"
+ "bWJ1c19yZWFkX2J5dGVfZGF0YShsZWQtPmkyY19jbGllbnQsCj4gPiA+ID4gKyAgICAgICAgICAg\n"
+ "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJNQ19DTURfTEVEX0dFVF9TRVQpOwo+ID4g\n"
+ "PiA+ICsgICAgICAgaWYgKGxlZF92YWwgPCAwKQo+ID4gPiA+ICsgICAgICAgICAgICAgICBnb3Rv\n"
+ "IGVycl9vdXQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgaWYgKHZhbHVlID09IExFRF9PRkYp\n"
+ "Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIGxlZF92YWwgJj0gfmxlZC0+bGVkX2JpdDsKPiA+ID4g\n"
+ "PiArICAgICAgIGVsc2UKPiA+ID4gPiArICAgICAgICAgICAgICAgbGVkX3ZhbCB8PSBsZWQtPmxl\n"
+ "ZF9iaXQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgaTJjX3NtYnVzX3dyaXRlX2J5dGVfZGF0\n"
+ "YShsZWQtPmkyY19jbGllbnQsCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg\n"
+ "ICAgIEJNQ19DTURfTEVEX0dFVF9TRVQsIGxlZF92YWwpOwo+ID4gPiA+ICtlcnJfb3V0Ogo+ID4g\n"
+ "PiA+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZsZWRfbG9jayk7Cj4gPiA+ID4gK30KPiA+ID4gPiAr\n"
+ "Cj4gPiA+ID4gK3N0YXRpYyBpbnQgbWVuZjIxYm1jX2xlZF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f\n"
+ "ZGV2aWNlICpwZGV2KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgICAgICBpbnQgaTsKPiA+ID4gPiAr\n"
+ "ICAgICAgIGludCByZXQ7Cj4gPiA+ID4gKyAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjX2Ns\n"
+ "aWVudCA9IHRvX2kyY19jbGllbnQocGRldi0+ZGV2LnBhcmVudCk7Cj4gPiA+ID4gKwo+ID4gPiA+\n"
+ "ICsgICAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobGVkcyk7IGkrKykgewo+ID4gPiA+\n"
+ "ICsgICAgICAgICAgICAgICBsZWRzW2ldLmNkZXYubmFtZSA9IGxlZHNbaV0ubmFtZTsKPiA+ID4g\n"
+ "PiArICAgICAgICAgICAgICAgbGVkc1tpXS5jZGV2LmJyaWdodG5lc3Nfc2V0ID0gbWVuZjIxYm1j\n"
+ "X2xlZF9zZXQ7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIGxlZHNbaV0uaTJjX2NsaWVudCA9IGky\n"
+ "Y19jbGllbnQ7Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIHJldCA9IGxlZF9jbGFzc2Rldl9yZWdp\n"
+ "c3RlcigmcGRldi0+ZGV2LCAmbGVkc1tpXS5jZGV2KTsKPiA+ID4gPiArICAgICAgICAgICAgICAg\n"
+ "aWYgKHJldCA8IDApCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJfZnJl\n"
+ "ZV9sZWRzOwo+ID4gPiA+ICsgICAgICAgfQo+ID4gPiA+ICsgICAgICAgZGV2X2luZm8oJnBkZXYt\n"
+ "PmRldiwgIk1FTiAxNDBGMjFQMDAgQk1DIExFRCBkZXZpY2UgZW5hYmxlZFxuIik7Cj4gPiA+ID4g\n"
+ "Kwo+ID4gPiA+ICsgICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICtlcnJfZnJlZV9s\n"
+ "ZWRzOgo+ID4gPiA+ICsgICAgICAgZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIHJlZ2lz\n"
+ "dGVyIExFRCBkZXZpY2VcbiIpOwo+ID4gPiA+ICsKPiA+ID4gPiArICAgICAgIGZvciAoaSA9IGkg\n"
+ "LSAxOyBpID49IDA7IGktLSkKPiA+ID4gPiArICAgICAgICAgICAgICAgbGVkX2NsYXNzZGV2X3Vu\n"
+ "cmVnaXN0ZXIoJmxlZHNbaV0uY2Rldik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgcmV0dXJu\n"
+ "IHJldDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGludCBtZW5mMjFibWNf\n"
+ "bGVkX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ID4gPiA+ICt7Cj4gPiA+\n"
+ "ID4gKyAgICAgICBpbnQgaTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBp\n"
+ "IDwgQVJSQVlfU0laRShsZWRzKTsgaSsrKQo+ID4gPiA+ICsgICAgICAgICAgICAgICBsZWRfY2xh\n"
+ "c3NkZXZfdW5yZWdpc3RlcigmbGVkc1tpXS5jZGV2KTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgICAg\n"
+ "ICByZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIHN0cnVjdCBw\n"
+ "bGF0Zm9ybV9kcml2ZXIgbWVuZjIxYm1jX2xlZCA9IHsKPiA+ID4gPiArICAgICAgIC5wcm9iZSAg\n"
+ "ICAgICAgICA9IG1lbmYyMWJtY19sZWRfcHJvYmUsCj4gPiA+ID4gKyAgICAgICAucmVtb3ZlICAg\n"
+ "ICAgICAgPSBtZW5mMjFibWNfbGVkX3JlbW92ZSwKPiA+ID4gPiArICAgICAgIC5kcml2ZXIgICAg\n"
+ "ICAgICA9IHsKPiA+ID4gPiArICAgICAgICAgICAgICAgLm5hbWUgICAgICAgICAgID0gIm1lbmYy\n"
+ "MWJtY19sZWQiLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAub3duZXIgICAgICAgICAgPSBUSElT\n"
+ "X01PRFVMRSwKPiA+ID4gPiArICAgICAgIH0sCj4gPiA+ID4gK307Cj4gPiA+ID4gKwo+ID4gPiA+\n"
+ "ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1lbmYyMWJtY19sZWQpOwo+ID4gPiA+ICsKPiA+ID4g\n"
+ "PiArTU9EVUxFX0FVVEhPUigiQW5kcmVhcyBXZXJuZXIgPGFuZHJlYXMud2VybmVyQG1lbi5kZT4i\n"
+ "KTsKPiA+ID4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJNRU4gMTRGMDIxUDAwIEJNQyBsZWQgZHJp\n"
+ "dmVyIik7Cj4gPiA+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKPiA+ID4gPiArTU9EVUxF\n"
+ "X0FMSUFTKCJwbGF0Zm9ybTptZW5mMjFibWNfbGVkIik7Cj4gPiA+ID4KPiA+IAoKLS0gCkxlZSBK\n"
+ "b25lcwpMaW5hcm8gU1RNaWNyb2VsZWN0cm9uaWNzIExhbmRpbmcgVGVhbSBMZWFkCkxpbmFyby5v\n"
+ "cmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBUk0gU29DcwpGb2xsb3cgTGluYXJvOiBG\n"
+ "YWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f\n"
+ "X19fX19fX19fX19fX19fXwpsbS1zZW5zb3JzIG1haWxpbmcgbGlzdApsbS1zZW5zb3JzQGxtLXNl\n"
+ "bnNvcnMub3JnCmh0dHA6Ly9saXN0cy5sbS1zZW5zb3JzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xt\n"
+ LXNlbnNvcnM
 
-2a0065cd270fc66282ecd77a9e891ea10153d25be5e00b03f4c8e807bee030e4
+130504f0fa740ccbb1de3c8b0fc502d7924fd29d4af4ad27576419264416b65d

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.