diff for duplicates of <20140827103638.GA30142@awelinux> diff --git a/a/1.txt b/N1/1.txt index d1230a5..ba18daf 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -237,3 +237,7 @@ ok > 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 diff --git a/a/content_digest b/N1/content_digest index 0f82611..e0cc6e9 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -6,17 +6,17 @@ "Date\0Wed, 27 Aug 2014 12:36:38 +0200\0" "To\0Lee Jones <lee.jones@linaro.org>\0" "Cc\0Andreas Werner <andreas.werner@men.de>" - linux-kernel@vger.kernel.org - sameo@linux.intel.com - wim@iguana.be - linux-watchdog@vger.kernel.org - cooloney@gmail.com - rpurdie@rpsys.net - linux-leds@vger.kernel.org - jdelvare@suse.de - linux@roeck-us.net - lm-sensors@lm-sensors.org - " johannes.thumshirn@men.de\0" + <linux-kernel@vger.kernel.org> + <sameo@linux.intel.com> + <wim@iguana.be> + <linux-watchdog@vger.kernel.org> + <cooloney@gmail.com> + <rpurdie@rpsys.net> + <linux-leds@vger.kernel.org> + <jdelvare@suse.de> + <linux@roeck-us.net> + <lm-sensors@lm-sensors.org> + " <johannes.thumshirn@men.de>\0" "\00:1\0" "b\0" "On Wed, Aug 27, 2014 at 08:26:33AM +0100, Lee Jones wrote:\n" @@ -257,6 +257,10 @@ "> 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 + "> Follow Linaro: Facebook | Twitter | Blog\n" + "--\n" + "To unsubscribe from this list: send the line \"unsubscribe linux-watchdog\" in\n" + "the body of a message to majordomo@vger.kernel.org\n" + More majordomo info at http://vger.kernel.org/majordomo-info.html -a6c77dd74eb610302fd4c0b9398da0aa9a43f40a328596070efd8fde88009821 +d8962b32ffd23fcae7ccf50ffe3d4c560b54fceea54d3d9c72dd694b9801307e
diff --git a/a/1.txt b/N2/1.txt index d1230a5..2f14b36 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -1,239 +1,133 @@ -On Wed, Aug 27, 2014 at 08:26:33AM +0100, Lee Jones wrote: -> On Tue, 26 Aug 2014, Andreas Werner wrote: -> > The MEN 14F021P00 Board Management Controller provides an -> > I2C interface to the host to access the feature implemented in the BMC. -> > The BMC is a PIC Microntroller assembled on CPCI Card from MEN Mikroelektronik -> > and on a few Box/Display Computer. -> > -> > Added MFD Core driver, supporting the I2C communication to the device. -> > -> > The MFD driver currently supports the following features: -> > - Watchdog -> > - LEDs -> > - Hwmon (voltage monitoring) -> > -> > Signed-off-by: Andreas Werner <andreas.werner@men.de> -> > Acked-by: Lee Jones <lee.jones@linaro.org> -> > --- -> > drivers/mfd/Kconfig | 12 +++++ -> > drivers/mfd/Makefile | 1 + -> > drivers/mfd/menf21bmc.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++ -> > 3 files changed, 145 insertions(+) -> > create mode 100644 drivers/mfd/menf21bmc.c -> > -> > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig -> > index b8d9ca0..6a9f101 100644 -> > --- a/drivers/mfd/Kconfig -> > +++ b/drivers/mfd/Kconfig -> > @@ -453,6 +453,18 @@ config MFD_MAX8998 -> > additional drivers must be enabled in order to use the functionality -> > of the device. -> > -> > +config MFD_MENF21BMC -> > + tristate "MEN 14F021P00 Board Management Controller Support" -> > + depends on I2C -> > + select MFD_CORE -> > + help -> > + Say yes here to add support for the MEN 14F021P00 BMC -> > + which is a Board Management Controller connected to the I2C bus. -> > + The device supports multiple sub-devices like LED, HWMON and WDT. -> -> Nit: Whitespace error. -> - -Forgot to run checkpatch on Kconfig since the last change. Will fix it. - -> > + This driver provides common support for accessing the devices; -> > + additional drivers must be enabled in order to use the -> > + functionality of the BMC device. -> > + -> > config EZX_PCAP -> > bool "Motorola EZXPCAP Support" -> > depends on SPI_MASTER -> > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile -> > index 4e2bc25..37bf336 100644 -> > --- a/drivers/mfd/Makefile -> > +++ b/drivers/mfd/Makefile -> > @@ -169,6 +169,7 @@ obj-$(CONFIG_MFD_AS3711) += as3711.o -> > obj-$(CONFIG_MFD_AS3722) += as3722.o -> > obj-$(CONFIG_MFD_STW481X) += stw481x.o -> > obj-$(CONFIG_MFD_IPAQ_MICRO) += ipaq-micro.o -> > +obj-$(CONFIG_MFD_MENF21BMC) += menf21bmc.o -> > -> > intel-soc-pmic-objs := intel_soc_pmic_core.o intel_soc_pmic_crc.o -> > obj-$(CONFIG_INTEL_SOC_PMIC) += intel-soc-pmic.o -> > diff --git a/drivers/mfd/menf21bmc.c b/drivers/mfd/menf21bmc.c -> > new file mode 100644 -> > index 0000000..a6eb03f -> > --- /dev/null -> > +++ b/drivers/mfd/menf21bmc.c -> > @@ -0,0 +1,132 @@ -> > +/* -> > + * MEN 14F021P00 Board Management Controller (BMC) MFD Core Driver. -> > + * -> > + * 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/kernel.h> -> > +#include <linux/device.h> -> > +#include <linux/module.h> -> > +#include <linux/i2c.h> -> > +#include <linux/mfd/core.h> -> > + -> > +#define BMC_CMD_WDT_EXIT_PROD 0x18 -> > +#define BMC_CMD_WDT_PROD_STAT 0x19 -> > +#define BMC_CMD_REV_MAJOR 0x80 -> > +#define BMC_CMD_REV_MINOR 0x81 -> > +#define BMC_CMD_REV_MAIN 0x82 -> > + -> > +static struct mfd_cell menf21bmc_cell[] = { -> > + { .name = "menf21bmc_wdt", }, -> > + { .name = "menf21bmc_led", }, -> > + { .name = "menf21bmc_hwmon", } -> > +}; -> > + -> > +static int menf21bmc_wdt_exit_prod_mode(struct i2c_client *client) -> > +{ -> > + int val, ret; -> > + -> > + val = i2c_smbus_read_byte_data(client, BMC_CMD_WDT_PROD_STAT); -> > + if (val < 0) -> > + return val; -> > + -> > + /* -> > + * Production mode should be not active after delivery of the Board. -> > + * To be sure we check it, inform the user and exit the mode -> > + * if active. -> > + */ -> > + if (val == 0x00) { -> > + dev_info(&client->dev, -> > + "BMC in production mode. Exit production mode\n"); -> > + -> > + ret = i2c_smbus_write_byte(client, BMC_CMD_WDT_EXIT_PROD); -> > + if (ret < 0) -> > + return ret; -> > + } -> > + -> > + return 0; -> > +} -> > + -> > +static int -> > +menf21bmc_probe(struct i2c_client *client, const struct i2c_device_id *ids) -> > +{ -> > + int ret; -> > + int rev_major, rev_minor, rev_main; -> -> Really small nit (as you have to fix the whitespace err anyway): -> Can you change the order of the two lines above please? - -No problem. - -> -> > + ret = i2c_check_functionality(client->adapter, -> > + I2C_FUNC_SMBUS_BYTE_DATA | -> > + I2C_FUNC_SMBUS_WORD_DATA | -> > + I2C_FUNC_SMBUS_BYTE); -> > + if (!ret) -> > + return -ENODEV; -> > + -> > + rev_major = i2c_smbus_read_word_data(client, BMC_CMD_REV_MAJOR); -> > + if (rev_major < 0) { -> > + dev_err(&client->dev, "failed to get BMC major revision\n"); -> > + return rev_major; -> > + } -> > + -> > + rev_minor = i2c_smbus_read_word_data(client, BMC_CMD_REV_MINOR); -> > + if (rev_minor < 0) { -> > + dev_err(&client->dev, "failed to get BMC minor revision\n"); -> > + return rev_minor; -> > + } -> > + -> > + rev_main = i2c_smbus_read_word_data(client, BMC_CMD_REV_MAIN); -> > + if (rev_main < 0) { -> > + dev_err(&client->dev, "failed to get BMC main revision\n"); -> > + return rev_main; -> > + } -> > + -> > + dev_info(&client->dev, "FW Revision: %02d.%02d.%02d\n", -> > + rev_major, rev_minor, rev_main); -> -> You enforced a 'line > 80 chars' warning in your other driver just so -> you can 'do the right thing' and line up against the '('. :) -> -> Can you do that here please? -> - -yes - -> > + /* -> > + * We have to exit the Production Mode of the BMC to activate the -> > + * Watchdog functionality and the BIOS life sign monitoring. -> > + */ -> > + ret = menf21bmc_wdt_exit_prod_mode(client); -> > + if (ret < 0) { -> > + dev_err(&client->dev, "failed to leave production mode\n"); -> > + return ret; -> > + } -> > + -> > + ret = mfd_add_devices(&client->dev, 0, menf21bmc_cell, -> > + ARRAY_SIZE(menf21bmc_cell), NULL, 0, NULL); -> -> Line up to to '('. -> - -ok - -> > + if (ret < 0) { -> > + dev_err(&client->dev, "failed to add BMC sub-devices\n"); -> > + return ret; -> > + } -> > + -> > + return 0; -> > +} -> > + -> > +static int menf21bmc_remove(struct i2c_client *client) -> > +{ -> > + mfd_remove_devices(&client->dev); -> > + return 0; -> > +} -> > + -> > +static const struct i2c_device_id menf21bmc_id_table[] = { -> > + { "menf21bmc", 0 }, -> -> The second attribute is unused in this driver, please remove it. -> - -ok - -> > + { } -> > +}; -> > +MODULE_DEVICE_TABLE(i2c, menf21bmc_id_table); -> > + -> > +static struct i2c_driver menf21bmc_driver = { -> > + .driver.name = "menf21bmc", -> > + .id_table = menf21bmc_id_table, -> > + .probe = menf21bmc_probe, -> > + .remove = menf21bmc_remove, -> > +}; -> -> No DT support? -> -> > +module_i2c_driver(menf21bmc_driver); -> > + -> > +MODULE_DESCRIPTION("MEN 14F021P00 BMC mfd core driver"); -> -> s/mfd/MFD -> -> > +MODULE_AUTHOR("Andreas Werner <andreas.werner@men.de>"); -> > +MODULE_LICENSE("GPL v2"); -> -> -- -> Lee Jones -> Linaro STMicroelectronics Landing Team Lead -> Linaro.org │ Open source software for ARM SoCs -> Follow Linaro: Facebook | Twitter | Blog +T24gV2VkLCBBdWcgMjcsIDIwMTQgYXQgMDg6MjY6MzNBTSArMDEwMCwgTGVlIEpvbmVzIHdyb3Rl +Ogo+IE9uIFR1ZSwgMjYgQXVnIDIwMTQsIEFuZHJlYXMgV2VybmVyIHdyb3RlOgo+ID4gVGhlIE1F +TiAxNEYwMjFQMDAgQm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIHByb3ZpZGVzIGFuCj4gPiBJ +MkMgaW50ZXJmYWNlIHRvIHRoZSBob3N0IHRvIGFjY2VzcyB0aGUgZmVhdHVyZSBpbXBsZW1lbnRl +ZCBpbiB0aGUgQk1DLgo+ID4gVGhlIEJNQyBpcyBhIFBJQyBNaWNyb250cm9sbGVyIGFzc2VtYmxl +ZCBvbiBDUENJIENhcmQgZnJvbSBNRU4gTWlrcm9lbGVrdHJvbmlrCj4gPiBhbmQgb24gYSBmZXcg +Qm94L0Rpc3BsYXkgQ29tcHV0ZXIuCj4gPiAKPiA+IEFkZGVkIE1GRCBDb3JlIGRyaXZlciwgc3Vw +cG9ydGluZyB0aGUgSTJDIGNvbW11bmljYXRpb24gdG8gdGhlIGRldmljZS4KPiA+IAo+ID4gVGhl +IE1GRCBkcml2ZXIgY3VycmVudGx5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6Cj4g +PiAgCS0gV2F0Y2hkb2cKPiA+ICAJLSBMRURzCj4gPiAJLSBId21vbiAodm9sdGFnZSBtb25pdG9y +aW5nKQo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJu +ZXJAbWVuLmRlPgo+ID4gQWNrZWQtYnk6IExlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+ +Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL21mZC9LY29uZmlnICAgICB8ICAxMiArKysrKwo+ID4gIGRy +aXZlcnMvbWZkL01ha2VmaWxlICAgIHwgICAxICsKPiA+ICBkcml2ZXJzL21mZC9tZW5mMjFibWMu +YyB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK +PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCspCj4gPiAgY3JlYXRlIG1vZGUg +MTAwNjQ0IGRyaXZlcnMvbWZkL21lbmYyMWJtYy5jCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2 +ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwo+ID4gaW5kZXggYjhkOWNhMC4u +NmE5ZjEwMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbWZkL0tjb25maWcKPiA+ICsrKyBiL2Ry +aXZlcnMvbWZkL0tjb25maWcKPiA+IEBAIC00NTMsNiArNDUzLDE4IEBAIGNvbmZpZyBNRkRfTUFY +ODk5OAo+ID4gIAkgIGFkZGl0aW9uYWwgZHJpdmVycyBtdXN0IGJlIGVuYWJsZWQgaW4gb3JkZXIg +dG8gdXNlIHRoZSBmdW5jdGlvbmFsaXR5Cj4gPiAgCSAgb2YgdGhlIGRldmljZS4KPiA+ICAKPiA+ +ICtjb25maWcgTUZEX01FTkYyMUJNQwo+ID4gKwl0cmlzdGF0ZSAiTUVOIDE0RjAyMVAwMCBCb2Fy +ZCBNYW5hZ2VtZW50IENvbnRyb2xsZXIgU3VwcG9ydCIKPiA+ICsJZGVwZW5kcyBvbiBJMkMKPiA+ +ICsJc2VsZWN0IE1GRF9DT1JFCj4gPiArCWhlbHAKPiA+ICsJICBTYXkgeWVzIGhlcmUgdG8gYWRk +IHN1cHBvcnQgZm9yIHRoZSBNRU4gMTRGMDIxUDAwIEJNQwo+ID4gKwkgIHdoaWNoIGlzIGEgQm9h +cmQgTWFuYWdlbWVudCBDb250cm9sbGVyIGNvbm5lY3RlZCB0byB0aGUgSTJDIGJ1cy4KPiA+ICsJ +ICBUaGUgZGV2aWNlIHN1cHBvcnRzIG11bHRpcGxlIHN1Yi1kZXZpY2VzIGxpa2UgTEVELCBIV01P +TiAgYW5kIFdEVC4KPiAKPiBOaXQ6IFdoaXRlc3BhY2UgZXJyb3IuCj4KCkZvcmdvdCB0byBydW4g +Y2hlY2twYXRjaCBvbiBLY29uZmlnIHNpbmNlIHRoZSBsYXN0IGNoYW5nZS4gV2lsbCBmaXggaXQu +CiAKPiA+ICsJICBUaGlzIGRyaXZlciBwcm92aWRlcyBjb21tb24gc3VwcG9ydCBmb3IgYWNjZXNz +aW5nIHRoZSBkZXZpY2VzOwo+ID4gKwkgIGFkZGl0aW9uYWwgZHJpdmVycyBtdXN0IGJlIGVuYWJs +ZWQgaW4gb3JkZXIgdG8gdXNlIHRoZQo+ID4gKwkgIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEJNQyBk +ZXZpY2UuCj4gPiArCj4gPiAgY29uZmlnIEVaWF9QQ0FQCj4gPiAgCWJvb2wgIk1vdG9yb2xhIEVa +WFBDQVAgU3VwcG9ydCIKPiA+ICAJZGVwZW5kcyBvbiBTUElfTUFTVEVSCj4gPiBkaWZmIC0tZ2l0 +IGEvZHJpdmVycy9tZmQvTWFrZWZpbGUgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQo+ID4gaW5kZXgg +NGUyYmMyNS4uMzdiZjMzNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbWZkL01ha2VmaWxlCj4g +PiArKysgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQo+ID4gQEAgLTE2OSw2ICsxNjksNyBAQCBvYmot +JChDT05GSUdfTUZEX0FTMzcxMSkJKz0gYXMzNzExLm8KPiA+ICBvYmotJChDT05GSUdfTUZEX0FT +MzcyMikJKz0gYXMzNzIyLm8KPiA+ICBvYmotJChDT05GSUdfTUZEX1NUVzQ4MVgpCSs9IHN0dzQ4 +MXgubwo+ID4gIG9iai0kKENPTkZJR19NRkRfSVBBUV9NSUNSTykJKz0gaXBhcS1taWNyby5vCj4g +PiArb2JqLSQoQ09ORklHX01GRF9NRU5GMjFCTUMpCSs9IG1lbmYyMWJtYy5vCj4gPiAgCj4gPiAg +aW50ZWwtc29jLXBtaWMtb2JqcwkJOj0gaW50ZWxfc29jX3BtaWNfY29yZS5vIGludGVsX3NvY19w +bWljX2NyYy5vCj4gPiAgb2JqLSQoQ09ORklHX0lOVEVMX1NPQ19QTUlDKQkrPSBpbnRlbC1zb2Mt +cG1pYy5vCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvbWVuZjIxYm1jLmMgYi9kcml2ZXJz +L21mZC9tZW5mMjFibWMuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAw +MDAuLmE2ZWIwM2YKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvbWZkL21lbmYy +MWJtYy5jCj4gPiBAQCAtMCwwICsxLDEzMiBAQAo+ID4gKy8qCj4gPiArICogIE1FTiAxNEYwMjFQ +MDAgQm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIChCTUMpIE1GRCBDb3JlIERyaXZlci4KPiA+ +ICsgKgo+ID4gKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgTUVOIE1pa3JvIEVsZWt0cm9uaWsgTnVl +cm5iZXJnIEdtYkgKPiA+ICsgKgo+ID4gKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy +ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgIGl0IGFuZC9vciBtb2RpZnkgaXQKPiA+ICsgKiAgdW5k +ZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJs +aXNoZWQgYnkgdGhlCj4gPiArICogIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2 +ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgo+ID4gKyAqICBvcHRpb24pIGFu +eSBsYXRlciB2ZXJzaW9uLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJu +ZWwuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4 +L21vZHVsZS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPiA+ICsjaW5jbHVkZSA8bGlu +dXgvbWZkL2NvcmUuaD4KPiA+ICsKPiA+ICsjZGVmaW5lIEJNQ19DTURfV0RUX0VYSVRfUFJPRAkw +eDE4Cj4gPiArI2RlZmluZSBCTUNfQ01EX1dEVF9QUk9EX1NUQVQJMHgxOQo+ID4gKyNkZWZpbmUg +Qk1DX0NNRF9SRVZfTUFKT1IJMHg4MAo+ID4gKyNkZWZpbmUgQk1DX0NNRF9SRVZfTUlOT1IJMHg4 +MQo+ID4gKyNkZWZpbmUgQk1DX0NNRF9SRVZfTUFJTgkweDgyCj4gPiArCj4gPiArc3RhdGljIHN0 +cnVjdCBtZmRfY2VsbCBtZW5mMjFibWNfY2VsbFtdID0gewo+ID4gKwl7IC5uYW1lID0gIm1lbmYy +MWJtY193ZHQiLCB9LAo+ID4gKwl7IC5uYW1lID0gIm1lbmYyMWJtY19sZWQiLCB9LAo+ID4gKwl7 +IC5uYW1lID0gIm1lbmYyMWJtY19od21vbiIsIH0KPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBp +bnQgbWVuZjIxYm1jX3dkdF9leGl0X3Byb2RfbW9kZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 +KQo+ID4gK3sKPiA+ICsJaW50IHZhbCwgcmV0Owo+ID4gKwo+ID4gKwl2YWwgPSBpMmNfc21idXNf +cmVhZF9ieXRlX2RhdGEoY2xpZW50LCBCTUNfQ01EX1dEVF9QUk9EX1NUQVQpOwo+ID4gKwlpZiAo +dmFsIDwgMCkKPiA+ICsJCXJldHVybiB2YWw7Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFByb2R1 +Y3Rpb24gbW9kZSBzaG91bGQgYmUgbm90IGFjdGl2ZSBhZnRlciBkZWxpdmVyeSBvZiB0aGUgQm9h +cmQuCj4gPiArCSAqIFRvIGJlIHN1cmUgd2UgY2hlY2sgaXQsIGluZm9ybSB0aGUgdXNlciBhbmQg +ZXhpdCB0aGUgbW9kZQo+ID4gKwkgKiBpZiBhY3RpdmUuCj4gPiArCSAqLwo+ID4gKwlpZiAodmFs +ID09IDB4MDApIHsKPiA+ICsJCWRldl9pbmZvKCZjbGllbnQtPmRldiwKPiA+ICsJCQkiQk1DIGlu +IHByb2R1Y3Rpb24gbW9kZS4gRXhpdCBwcm9kdWN0aW9uIG1vZGVcbiIpOwo+ID4gKwo+ID4gKwkJ +cmV0ID0gaTJjX3NtYnVzX3dyaXRlX2J5dGUoY2xpZW50LCBCTUNfQ01EX1dEVF9FWElUX1BST0Qp +Owo+ID4gKwkJaWYgKHJldCA8IDApCj4gPiArCQkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4gKwo+ +ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludAo+ID4gK21lbmYyMWJt +Y19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBjb25zdCBzdHJ1Y3QgaTJjX2Rldmlj +ZV9pZCAqaWRzKQo+ID4gK3sKPiA+ICsJaW50IHJldDsKPiA+ICsJaW50IHJldl9tYWpvciwgcmV2 +X21pbm9yLCByZXZfbWFpbjsKPiAKPiBSZWFsbHkgc21hbGwgbml0IChhcyB5b3UgaGF2ZSB0byBm +aXggdGhlIHdoaXRlc3BhY2UgZXJyIGFueXdheSk6Cj4gICBDYW4geW91IGNoYW5nZSB0aGUgb3Jk +ZXIgb2YgdGhlIHR3byBsaW5lcyBhYm92ZSBwbGVhc2U/CgpObyBwcm9ibGVtLgoKPiAKPiA+ICsJ +cmV0ID0gaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVyLAo+ID4gKwkJCQkg +ICAgICBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEgfAo+ID4gKwkJCQkgICAgICBJMkNfRlVOQ19T +TUJVU19XT1JEX0RBVEEgfAo+ID4gKwkJCQkgICAgICBJMkNfRlVOQ19TTUJVU19CWVRFKTsKPiA+ +ICsJaWYgKCFyZXQpCj4gPiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+ICsKPiA+ICsJcmV2X21ham9y +ID0gaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKGNsaWVudCwgQk1DX0NNRF9SRVZfTUFKT1IpOwo+ +ID4gKwlpZiAocmV2X21ham9yIDwgMCkgewo+ID4gKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJm +YWlsZWQgdG8gZ2V0IEJNQyBtYWpvciByZXZpc2lvblxuIik7Cj4gPiArCQlyZXR1cm4gcmV2X21h +am9yOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldl9taW5vciA9IGkyY19zbWJ1c19yZWFkX3dvcmRf +ZGF0YShjbGllbnQsIEJNQ19DTURfUkVWX01JTk9SKTsKPiA+ICsJaWYgKHJldl9taW5vciA8IDAp +IHsKPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGdldCBCTUMgbWlub3Ig +cmV2aXNpb25cbiIpOwo+ID4gKwkJcmV0dXJuIHJldl9taW5vcjsKPiA+ICsJfQo+ID4gKwo+ID4g +KwlyZXZfbWFpbiA9IGkyY19zbWJ1c19yZWFkX3dvcmRfZGF0YShjbGllbnQsIEJNQ19DTURfUkVW +X01BSU4pOwo+ID4gKwlpZiAocmV2X21haW4gPCAwKSB7Cj4gPiArCQlkZXZfZXJyKCZjbGllbnQt +PmRldiwgImZhaWxlZCB0byBnZXQgQk1DIG1haW4gcmV2aXNpb25cbiIpOwo+ID4gKwkJcmV0dXJu +IHJldl9tYWluOwo+ID4gKwl9Cj4gPiArCj4gPiArCWRldl9pbmZvKCZjbGllbnQtPmRldiwgIkZX +IFJldmlzaW9uOiAlMDJkLiUwMmQuJTAyZFxuIiwKPiA+ICsJCQkJCXJldl9tYWpvciwgcmV2X21p +bm9yLCByZXZfbWFpbik7Cj4gCj4gWW91IGVuZm9yY2VkIGEgJ2xpbmUgPiA4MCBjaGFycycgd2Fy +bmluZyBpbiB5b3VyIG90aGVyIGRyaXZlciBqdXN0IHNvCj4geW91IGNhbiAnZG8gdGhlIHJpZ2h0 +IHRoaW5nJyBhbmQgbGluZSB1cCBhZ2FpbnN0IHRoZSAnKCcuIDopCj4gCj4gQ2FuIHlvdSBkbyB0 +aGF0IGhlcmUgcGxlYXNlPwo+IAoKeWVzCgo+ID4gKwkvKgo+ID4gKwkgKiBXZSBoYXZlIHRvIGV4 +aXQgdGhlIFByb2R1Y3Rpb24gTW9kZSBvZiB0aGUgQk1DIHRvIGFjdGl2YXRlIHRoZQo+ID4gKwkg +KiBXYXRjaGRvZyBmdW5jdGlvbmFsaXR5IGFuZCB0aGUgQklPUyBsaWZlIHNpZ24gbW9uaXRvcmlu +Zy4KPiA+ICsJICovCj4gPiArCXJldCA9IG1lbmYyMWJtY193ZHRfZXhpdF9wcm9kX21vZGUoY2xp +ZW50KTsKPiA+ICsJaWYgKHJldCA8IDApIHsKPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAi +ZmFpbGVkIHRvIGxlYXZlIHByb2R1Y3Rpb24gbW9kZVxuIik7Cj4gPiArCQlyZXR1cm4gcmV0Owo+ +ID4gKwl9Cj4gPiArCj4gPiArCXJldCA9IG1mZF9hZGRfZGV2aWNlcygmY2xpZW50LT5kZXYsIDAs +IG1lbmYyMWJtY19jZWxsLAo+ID4gKwkJCQlBUlJBWV9TSVpFKG1lbmYyMWJtY19jZWxsKSwgTlVM +TCwgMCwgTlVMTCk7Cj4gCj4gTGluZSB1cCB0byB0byAnKCcuCj4gCgpvawoKPiA+ICsJaWYgKHJl +dCA8IDApIHsKPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBCTUMg +c3ViLWRldmljZXNcbiIpOwo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4gKwo+ID4gKwly +ZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBtZW5mMjFibWNfcmVtb3ZlKHN0 +cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gPiArewo+ID4gKwltZmRfcmVtb3ZlX2RldmljZXMo +JmNsaWVudC0+ZGV2KTsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBj +b25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBtZW5mMjFibWNfaWRfdGFibGVbXSA9IHsKPiA+ICsJ +eyAibWVuZjIxYm1jIiwgMCB9LAo+IAo+IFRoZSBzZWNvbmQgYXR0cmlidXRlIGlzIHVudXNlZCBp +biB0aGlzIGRyaXZlciwgcGxlYXNlIHJlbW92ZSBpdC4KPiAKCm9rCgo+ID4gKwl7IH0KPiA+ICt9 +Owo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBtZW5mMjFibWNfaWRfdGFibGUpOwo+ID4g +Kwo+ID4gK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtZW5mMjFibWNfZHJpdmVyID0gewo+ID4g +KwkuZHJpdmVyLm5hbWUJPSAibWVuZjIxYm1jIiwKPiA+ICsJLmlkX3RhYmxlCT0gbWVuZjIxYm1j +X2lkX3RhYmxlLAo+ID4gKwkucHJvYmUJCT0gbWVuZjIxYm1jX3Byb2JlLAo+ID4gKwkucmVtb3Zl +CQk9IG1lbmYyMWJtY19yZW1vdmUsCj4gPiArfTsKPiAKPiBObyBEVCBzdXBwb3J0Pwo+IAo+ID4g +K21vZHVsZV9pMmNfZHJpdmVyKG1lbmYyMWJtY19kcml2ZXIpOwo+ID4gKwo+ID4gK01PRFVMRV9E +RVNDUklQVElPTigiTUVOIDE0RjAyMVAwMCBCTUMgbWZkIGNvcmUgZHJpdmVyIik7Cj4gCj4gcy9t +ZmQvTUZECj4gCj4gPiArTU9EVUxFX0FVVEhPUigiQW5kcmVhcyBXZXJuZXIgPGFuZHJlYXMud2Vy +bmVyQG1lbi5kZT4iKTsKPiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gCj4gLS0gCj4g +TGVlIEpvbmVzCj4gTGluYXJvIFNUTWljcm9lbGVjdHJvbmljcyBMYW5kaW5nIFRlYW0gTGVhZAo+ +IExpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBUk0gU29Dcwo+IEZvbGxv +dyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19f +X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNl +bnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4v +bGlzdGluZm8vbG0tc2Vuc29ycw= diff --git a/a/content_digest b/N2/content_digest index 0f82611..6d9b498 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -2,8 +2,8 @@ "ref\067faa70de03924edc768002df17b02e47256260c.1409074255.git.andreas.werner@men.de\0" "ref\020140827072633.GY26707@lee--X1\0" "From\0Andreas Werner <andreas.werner@men.de>\0" - "Subject\0Re: [PATCH v5 1/4] drivers/mfd/menf21bmc: introduce MEN 14F021P00 BMC MFD Core driver\0" - "Date\0Wed, 27 Aug 2014 12:36:38 +0200\0" + "Subject\0Re: [lm-sensors] [PATCH v5 1/4] drivers/mfd/menf21bmc: introduce MEN 14F021P00 BMC MFD Core driver\0" + "Date\0Wed, 27 Aug 2014 10:36:38 +0000\0" "To\0Lee Jones <lee.jones@linaro.org>\0" "Cc\0Andreas Werner <andreas.werner@men.de>" linux-kernel@vger.kernel.org @@ -19,244 +19,138 @@ " johannes.thumshirn@men.de\0" "\00:1\0" "b\0" - "On Wed, Aug 27, 2014 at 08:26:33AM +0100, Lee Jones wrote:\n" - "> On Tue, 26 Aug 2014, Andreas Werner wrote:\n" - "> > The MEN 14F021P00 Board Management Controller provides an\n" - "> > I2C interface to the host to access the feature implemented in the BMC.\n" - "> > The BMC is a PIC Microntroller assembled on CPCI Card from MEN Mikroelektronik\n" - "> > and on a few Box/Display Computer.\n" - "> > \n" - "> > Added MFD Core driver, supporting the I2C communication to the device.\n" - "> > \n" - "> > The MFD driver currently supports the following features:\n" - "> > \t- Watchdog\n" - "> > \t- LEDs\n" - "> > \t- Hwmon (voltage monitoring)\n" - "> > \n" - "> > Signed-off-by: Andreas Werner <andreas.werner@men.de>\n" - "> > Acked-by: Lee Jones <lee.jones@linaro.org>\n" - "> > ---\n" - "> > drivers/mfd/Kconfig | 12 +++++\n" - "> > drivers/mfd/Makefile | 1 +\n" - "> > drivers/mfd/menf21bmc.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++\n" - "> > 3 files changed, 145 insertions(+)\n" - "> > create mode 100644 drivers/mfd/menf21bmc.c\n" - "> > \n" - "> > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig\n" - "> > index b8d9ca0..6a9f101 100644\n" - "> > --- a/drivers/mfd/Kconfig\n" - "> > +++ b/drivers/mfd/Kconfig\n" - "> > @@ -453,6 +453,18 @@ config MFD_MAX8998\n" - "> > \t additional drivers must be enabled in order to use the functionality\n" - "> > \t of the device.\n" - "> > \n" - "> > +config MFD_MENF21BMC\n" - "> > +\ttristate \"MEN 14F021P00 Board Management Controller Support\"\n" - "> > +\tdepends on I2C\n" - "> > +\tselect MFD_CORE\n" - "> > +\thelp\n" - "> > +\t Say yes here to add support for the MEN 14F021P00 BMC\n" - "> > +\t which is a Board Management Controller connected to the I2C bus.\n" - "> > +\t The device supports multiple sub-devices like LED, HWMON and WDT.\n" - "> \n" - "> Nit: Whitespace error.\n" - ">\n" - "\n" - "Forgot to run checkpatch on Kconfig since the last change. Will fix it.\n" - " \n" - "> > +\t This driver provides common support for accessing the devices;\n" - "> > +\t additional drivers must be enabled in order to use the\n" - "> > +\t functionality of the BMC device.\n" - "> > +\n" - "> > config EZX_PCAP\n" - "> > \tbool \"Motorola EZXPCAP Support\"\n" - "> > \tdepends on SPI_MASTER\n" - "> > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile\n" - "> > index 4e2bc25..37bf336 100644\n" - "> > --- a/drivers/mfd/Makefile\n" - "> > +++ b/drivers/mfd/Makefile\n" - "> > @@ -169,6 +169,7 @@ obj-$(CONFIG_MFD_AS3711)\t+= as3711.o\n" - "> > obj-$(CONFIG_MFD_AS3722)\t+= as3722.o\n" - "> > obj-$(CONFIG_MFD_STW481X)\t+= stw481x.o\n" - "> > obj-$(CONFIG_MFD_IPAQ_MICRO)\t+= ipaq-micro.o\n" - "> > +obj-$(CONFIG_MFD_MENF21BMC)\t+= menf21bmc.o\n" - "> > \n" - "> > intel-soc-pmic-objs\t\t:= intel_soc_pmic_core.o intel_soc_pmic_crc.o\n" - "> > obj-$(CONFIG_INTEL_SOC_PMIC)\t+= intel-soc-pmic.o\n" - "> > diff --git a/drivers/mfd/menf21bmc.c b/drivers/mfd/menf21bmc.c\n" - "> > new file mode 100644\n" - "> > index 0000000..a6eb03f\n" - "> > --- /dev/null\n" - "> > +++ b/drivers/mfd/menf21bmc.c\n" - "> > @@ -0,0 +1,132 @@\n" - "> > +/*\n" - "> > + * MEN 14F021P00 Board Management Controller (BMC) MFD Core Driver.\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/kernel.h>\n" - "> > +#include <linux/device.h>\n" - "> > +#include <linux/module.h>\n" - "> > +#include <linux/i2c.h>\n" - "> > +#include <linux/mfd/core.h>\n" - "> > +\n" - "> > +#define BMC_CMD_WDT_EXIT_PROD\t0x18\n" - "> > +#define BMC_CMD_WDT_PROD_STAT\t0x19\n" - "> > +#define BMC_CMD_REV_MAJOR\t0x80\n" - "> > +#define BMC_CMD_REV_MINOR\t0x81\n" - "> > +#define BMC_CMD_REV_MAIN\t0x82\n" - "> > +\n" - "> > +static struct mfd_cell menf21bmc_cell[] = {\n" - "> > +\t{ .name = \"menf21bmc_wdt\", },\n" - "> > +\t{ .name = \"menf21bmc_led\", },\n" - "> > +\t{ .name = \"menf21bmc_hwmon\", }\n" - "> > +};\n" - "> > +\n" - "> > +static int menf21bmc_wdt_exit_prod_mode(struct i2c_client *client)\n" - "> > +{\n" - "> > +\tint val, ret;\n" - "> > +\n" - "> > +\tval = i2c_smbus_read_byte_data(client, BMC_CMD_WDT_PROD_STAT);\n" - "> > +\tif (val < 0)\n" - "> > +\t\treturn val;\n" - "> > +\n" - "> > +\t/*\n" - "> > +\t * Production mode should be not active after delivery of the Board.\n" - "> > +\t * To be sure we check it, inform the user and exit the mode\n" - "> > +\t * if active.\n" - "> > +\t */\n" - "> > +\tif (val == 0x00) {\n" - "> > +\t\tdev_info(&client->dev,\n" - "> > +\t\t\t\"BMC in production mode. Exit production mode\\n\");\n" - "> > +\n" - "> > +\t\tret = i2c_smbus_write_byte(client, BMC_CMD_WDT_EXIT_PROD);\n" - "> > +\t\tif (ret < 0)\n" - "> > +\t\t\treturn ret;\n" - "> > +\t}\n" - "> > +\n" - "> > +\treturn 0;\n" - "> > +}\n" - "> > +\n" - "> > +static int\n" - "> > +menf21bmc_probe(struct i2c_client *client, const struct i2c_device_id *ids)\n" - "> > +{\n" - "> > +\tint ret;\n" - "> > +\tint rev_major, rev_minor, rev_main;\n" - "> \n" - "> Really small nit (as you have to fix the whitespace err anyway):\n" - "> Can you change the order of the two lines above please?\n" - "\n" - "No problem.\n" - "\n" - "> \n" - "> > +\tret = i2c_check_functionality(client->adapter,\n" - "> > +\t\t\t\t I2C_FUNC_SMBUS_BYTE_DATA |\n" - "> > +\t\t\t\t I2C_FUNC_SMBUS_WORD_DATA |\n" - "> > +\t\t\t\t I2C_FUNC_SMBUS_BYTE);\n" - "> > +\tif (!ret)\n" - "> > +\t\treturn -ENODEV;\n" - "> > +\n" - "> > +\trev_major = i2c_smbus_read_word_data(client, BMC_CMD_REV_MAJOR);\n" - "> > +\tif (rev_major < 0) {\n" - "> > +\t\tdev_err(&client->dev, \"failed to get BMC major revision\\n\");\n" - "> > +\t\treturn rev_major;\n" - "> > +\t}\n" - "> > +\n" - "> > +\trev_minor = i2c_smbus_read_word_data(client, BMC_CMD_REV_MINOR);\n" - "> > +\tif (rev_minor < 0) {\n" - "> > +\t\tdev_err(&client->dev, \"failed to get BMC minor revision\\n\");\n" - "> > +\t\treturn rev_minor;\n" - "> > +\t}\n" - "> > +\n" - "> > +\trev_main = i2c_smbus_read_word_data(client, BMC_CMD_REV_MAIN);\n" - "> > +\tif (rev_main < 0) {\n" - "> > +\t\tdev_err(&client->dev, \"failed to get BMC main revision\\n\");\n" - "> > +\t\treturn rev_main;\n" - "> > +\t}\n" - "> > +\n" - "> > +\tdev_info(&client->dev, \"FW Revision: %02d.%02d.%02d\\n\",\n" - "> > +\t\t\t\t\trev_major, rev_minor, rev_main);\n" - "> \n" - "> You enforced a 'line > 80 chars' warning in your other driver just so\n" - "> you can 'do the right thing' and line up against the '('. :)\n" - "> \n" - "> Can you do that here please?\n" - "> \n" - "\n" - "yes\n" - "\n" - "> > +\t/*\n" - "> > +\t * We have to exit the Production Mode of the BMC to activate the\n" - "> > +\t * Watchdog functionality and the BIOS life sign monitoring.\n" - "> > +\t */\n" - "> > +\tret = menf21bmc_wdt_exit_prod_mode(client);\n" - "> > +\tif (ret < 0) {\n" - "> > +\t\tdev_err(&client->dev, \"failed to leave production mode\\n\");\n" - "> > +\t\treturn ret;\n" - "> > +\t}\n" - "> > +\n" - "> > +\tret = mfd_add_devices(&client->dev, 0, menf21bmc_cell,\n" - "> > +\t\t\t\tARRAY_SIZE(menf21bmc_cell), NULL, 0, NULL);\n" - "> \n" - "> Line up to to '('.\n" - "> \n" - "\n" - "ok\n" - "\n" - "> > +\tif (ret < 0) {\n" - "> > +\t\tdev_err(&client->dev, \"failed to add BMC sub-devices\\n\");\n" - "> > +\t\treturn ret;\n" - "> > +\t}\n" - "> > +\n" - "> > +\treturn 0;\n" - "> > +}\n" - "> > +\n" - "> > +static int menf21bmc_remove(struct i2c_client *client)\n" - "> > +{\n" - "> > +\tmfd_remove_devices(&client->dev);\n" - "> > +\treturn 0;\n" - "> > +}\n" - "> > +\n" - "> > +static const struct i2c_device_id menf21bmc_id_table[] = {\n" - "> > +\t{ \"menf21bmc\", 0 },\n" - "> \n" - "> The second attribute is unused in this driver, please remove it.\n" - "> \n" - "\n" - "ok\n" - "\n" - "> > +\t{ }\n" - "> > +};\n" - "> > +MODULE_DEVICE_TABLE(i2c, menf21bmc_id_table);\n" - "> > +\n" - "> > +static struct i2c_driver menf21bmc_driver = {\n" - "> > +\t.driver.name\t= \"menf21bmc\",\n" - "> > +\t.id_table\t= menf21bmc_id_table,\n" - "> > +\t.probe\t\t= menf21bmc_probe,\n" - "> > +\t.remove\t\t= menf21bmc_remove,\n" - "> > +};\n" - "> \n" - "> No DT support?\n" - "> \n" - "> > +module_i2c_driver(menf21bmc_driver);\n" - "> > +\n" - "> > +MODULE_DESCRIPTION(\"MEN 14F021P00 BMC mfd core driver\");\n" - "> \n" - "> s/mfd/MFD\n" - "> \n" - "> > +MODULE_AUTHOR(\"Andreas Werner <andreas.werner@men.de>\");\n" - "> > +MODULE_LICENSE(\"GPL v2\");\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 + "T24gV2VkLCBBdWcgMjcsIDIwMTQgYXQgMDg6MjY6MzNBTSArMDEwMCwgTGVlIEpvbmVzIHdyb3Rl\n" + "Ogo+IE9uIFR1ZSwgMjYgQXVnIDIwMTQsIEFuZHJlYXMgV2VybmVyIHdyb3RlOgo+ID4gVGhlIE1F\n" + "TiAxNEYwMjFQMDAgQm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIHByb3ZpZGVzIGFuCj4gPiBJ\n" + "MkMgaW50ZXJmYWNlIHRvIHRoZSBob3N0IHRvIGFjY2VzcyB0aGUgZmVhdHVyZSBpbXBsZW1lbnRl\n" + "ZCBpbiB0aGUgQk1DLgo+ID4gVGhlIEJNQyBpcyBhIFBJQyBNaWNyb250cm9sbGVyIGFzc2VtYmxl\n" + "ZCBvbiBDUENJIENhcmQgZnJvbSBNRU4gTWlrcm9lbGVrdHJvbmlrCj4gPiBhbmQgb24gYSBmZXcg\n" + "Qm94L0Rpc3BsYXkgQ29tcHV0ZXIuCj4gPiAKPiA+IEFkZGVkIE1GRCBDb3JlIGRyaXZlciwgc3Vw\n" + "cG9ydGluZyB0aGUgSTJDIGNvbW11bmljYXRpb24gdG8gdGhlIGRldmljZS4KPiA+IAo+ID4gVGhl\n" + "IE1GRCBkcml2ZXIgY3VycmVudGx5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6Cj4g\n" + "PiAgCS0gV2F0Y2hkb2cKPiA+ICAJLSBMRURzCj4gPiAJLSBId21vbiAodm9sdGFnZSBtb25pdG9y\n" + "aW5nKQo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJu\n" + "ZXJAbWVuLmRlPgo+ID4gQWNrZWQtYnk6IExlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFyby5vcmc+\n" + "Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL21mZC9LY29uZmlnICAgICB8ICAxMiArKysrKwo+ID4gIGRy\n" + "aXZlcnMvbWZkL01ha2VmaWxlICAgIHwgICAxICsKPiA+ICBkcml2ZXJzL21mZC9tZW5mMjFibWMu\n" + "YyB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK\n" + "PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCspCj4gPiAgY3JlYXRlIG1vZGUg\n" + "MTAwNjQ0IGRyaXZlcnMvbWZkL21lbmYyMWJtYy5jCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2\n" + "ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwo+ID4gaW5kZXggYjhkOWNhMC4u\n" + "NmE5ZjEwMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbWZkL0tjb25maWcKPiA+ICsrKyBiL2Ry\n" + "aXZlcnMvbWZkL0tjb25maWcKPiA+IEBAIC00NTMsNiArNDUzLDE4IEBAIGNvbmZpZyBNRkRfTUFY\n" + "ODk5OAo+ID4gIAkgIGFkZGl0aW9uYWwgZHJpdmVycyBtdXN0IGJlIGVuYWJsZWQgaW4gb3JkZXIg\n" + "dG8gdXNlIHRoZSBmdW5jdGlvbmFsaXR5Cj4gPiAgCSAgb2YgdGhlIGRldmljZS4KPiA+ICAKPiA+\n" + "ICtjb25maWcgTUZEX01FTkYyMUJNQwo+ID4gKwl0cmlzdGF0ZSAiTUVOIDE0RjAyMVAwMCBCb2Fy\n" + "ZCBNYW5hZ2VtZW50IENvbnRyb2xsZXIgU3VwcG9ydCIKPiA+ICsJZGVwZW5kcyBvbiBJMkMKPiA+\n" + "ICsJc2VsZWN0IE1GRF9DT1JFCj4gPiArCWhlbHAKPiA+ICsJICBTYXkgeWVzIGhlcmUgdG8gYWRk\n" + "IHN1cHBvcnQgZm9yIHRoZSBNRU4gMTRGMDIxUDAwIEJNQwo+ID4gKwkgIHdoaWNoIGlzIGEgQm9h\n" + "cmQgTWFuYWdlbWVudCBDb250cm9sbGVyIGNvbm5lY3RlZCB0byB0aGUgSTJDIGJ1cy4KPiA+ICsJ\n" + "ICBUaGUgZGV2aWNlIHN1cHBvcnRzIG11bHRpcGxlIHN1Yi1kZXZpY2VzIGxpa2UgTEVELCBIV01P\n" + "TiAgYW5kIFdEVC4KPiAKPiBOaXQ6IFdoaXRlc3BhY2UgZXJyb3IuCj4KCkZvcmdvdCB0byBydW4g\n" + "Y2hlY2twYXRjaCBvbiBLY29uZmlnIHNpbmNlIHRoZSBsYXN0IGNoYW5nZS4gV2lsbCBmaXggaXQu\n" + "CiAKPiA+ICsJICBUaGlzIGRyaXZlciBwcm92aWRlcyBjb21tb24gc3VwcG9ydCBmb3IgYWNjZXNz\n" + "aW5nIHRoZSBkZXZpY2VzOwo+ID4gKwkgIGFkZGl0aW9uYWwgZHJpdmVycyBtdXN0IGJlIGVuYWJs\n" + "ZWQgaW4gb3JkZXIgdG8gdXNlIHRoZQo+ID4gKwkgIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEJNQyBk\n" + "ZXZpY2UuCj4gPiArCj4gPiAgY29uZmlnIEVaWF9QQ0FQCj4gPiAgCWJvb2wgIk1vdG9yb2xhIEVa\n" + "WFBDQVAgU3VwcG9ydCIKPiA+ICAJZGVwZW5kcyBvbiBTUElfTUFTVEVSCj4gPiBkaWZmIC0tZ2l0\n" + "IGEvZHJpdmVycy9tZmQvTWFrZWZpbGUgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQo+ID4gaW5kZXgg\n" + "NGUyYmMyNS4uMzdiZjMzNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbWZkL01ha2VmaWxlCj4g\n" + "PiArKysgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQo+ID4gQEAgLTE2OSw2ICsxNjksNyBAQCBvYmot\n" + "JChDT05GSUdfTUZEX0FTMzcxMSkJKz0gYXMzNzExLm8KPiA+ICBvYmotJChDT05GSUdfTUZEX0FT\n" + "MzcyMikJKz0gYXMzNzIyLm8KPiA+ICBvYmotJChDT05GSUdfTUZEX1NUVzQ4MVgpCSs9IHN0dzQ4\n" + "MXgubwo+ID4gIG9iai0kKENPTkZJR19NRkRfSVBBUV9NSUNSTykJKz0gaXBhcS1taWNyby5vCj4g\n" + "PiArb2JqLSQoQ09ORklHX01GRF9NRU5GMjFCTUMpCSs9IG1lbmYyMWJtYy5vCj4gPiAgCj4gPiAg\n" + "aW50ZWwtc29jLXBtaWMtb2JqcwkJOj0gaW50ZWxfc29jX3BtaWNfY29yZS5vIGludGVsX3NvY19w\n" + "bWljX2NyYy5vCj4gPiAgb2JqLSQoQ09ORklHX0lOVEVMX1NPQ19QTUlDKQkrPSBpbnRlbC1zb2Mt\n" + "cG1pYy5vCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvbWVuZjIxYm1jLmMgYi9kcml2ZXJz\n" + "L21mZC9tZW5mMjFibWMuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAw\n" + "MDAuLmE2ZWIwM2YKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvbWZkL21lbmYy\n" + "MWJtYy5jCj4gPiBAQCAtMCwwICsxLDEzMiBAQAo+ID4gKy8qCj4gPiArICogIE1FTiAxNEYwMjFQ\n" + "MDAgQm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIChCTUMpIE1GRCBDb3JlIERyaXZlci4KPiA+\n" + "ICsgKgo+ID4gKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgTUVOIE1pa3JvIEVsZWt0cm9uaWsgTnVl\n" + "cm5iZXJnIEdtYkgKPiA+ICsgKgo+ID4gKyAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy\n" + "ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgIGl0IGFuZC9vciBtb2RpZnkgaXQKPiA+ICsgKiAgdW5k\n" + "ZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJs\n" + "aXNoZWQgYnkgdGhlCj4gPiArICogIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2\n" + "ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBvciAoYXQgeW91cgo+ID4gKyAqICBvcHRpb24pIGFu\n" + "eSBsYXRlciB2ZXJzaW9uLgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxsaW51eC9rZXJu\n" + "ZWwuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4\n" + "L21vZHVsZS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPiA+ICsjaW5jbHVkZSA8bGlu\n" + "dXgvbWZkL2NvcmUuaD4KPiA+ICsKPiA+ICsjZGVmaW5lIEJNQ19DTURfV0RUX0VYSVRfUFJPRAkw\n" + "eDE4Cj4gPiArI2RlZmluZSBCTUNfQ01EX1dEVF9QUk9EX1NUQVQJMHgxOQo+ID4gKyNkZWZpbmUg\n" + "Qk1DX0NNRF9SRVZfTUFKT1IJMHg4MAo+ID4gKyNkZWZpbmUgQk1DX0NNRF9SRVZfTUlOT1IJMHg4\n" + "MQo+ID4gKyNkZWZpbmUgQk1DX0NNRF9SRVZfTUFJTgkweDgyCj4gPiArCj4gPiArc3RhdGljIHN0\n" + "cnVjdCBtZmRfY2VsbCBtZW5mMjFibWNfY2VsbFtdID0gewo+ID4gKwl7IC5uYW1lID0gIm1lbmYy\n" + "MWJtY193ZHQiLCB9LAo+ID4gKwl7IC5uYW1lID0gIm1lbmYyMWJtY19sZWQiLCB9LAo+ID4gKwl7\n" + "IC5uYW1lID0gIm1lbmYyMWJtY19od21vbiIsIH0KPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBp\n" + "bnQgbWVuZjIxYm1jX3dkdF9leGl0X3Byb2RfbW9kZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50\n" + "KQo+ID4gK3sKPiA+ICsJaW50IHZhbCwgcmV0Owo+ID4gKwo+ID4gKwl2YWwgPSBpMmNfc21idXNf\n" + "cmVhZF9ieXRlX2RhdGEoY2xpZW50LCBCTUNfQ01EX1dEVF9QUk9EX1NUQVQpOwo+ID4gKwlpZiAo\n" + "dmFsIDwgMCkKPiA+ICsJCXJldHVybiB2YWw7Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFByb2R1\n" + "Y3Rpb24gbW9kZSBzaG91bGQgYmUgbm90IGFjdGl2ZSBhZnRlciBkZWxpdmVyeSBvZiB0aGUgQm9h\n" + "cmQuCj4gPiArCSAqIFRvIGJlIHN1cmUgd2UgY2hlY2sgaXQsIGluZm9ybSB0aGUgdXNlciBhbmQg\n" + "ZXhpdCB0aGUgbW9kZQo+ID4gKwkgKiBpZiBhY3RpdmUuCj4gPiArCSAqLwo+ID4gKwlpZiAodmFs\n" + "ID09IDB4MDApIHsKPiA+ICsJCWRldl9pbmZvKCZjbGllbnQtPmRldiwKPiA+ICsJCQkiQk1DIGlu\n" + "IHByb2R1Y3Rpb24gbW9kZS4gRXhpdCBwcm9kdWN0aW9uIG1vZGVcbiIpOwo+ID4gKwo+ID4gKwkJ\n" + "cmV0ID0gaTJjX3NtYnVzX3dyaXRlX2J5dGUoY2xpZW50LCBCTUNfQ01EX1dEVF9FWElUX1BST0Qp\n" + "Owo+ID4gKwkJaWYgKHJldCA8IDApCj4gPiArCQkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4gKwo+\n" + "ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludAo+ID4gK21lbmYyMWJt\n" + "Y19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LCBjb25zdCBzdHJ1Y3QgaTJjX2Rldmlj\n" + "ZV9pZCAqaWRzKQo+ID4gK3sKPiA+ICsJaW50IHJldDsKPiA+ICsJaW50IHJldl9tYWpvciwgcmV2\n" + "X21pbm9yLCByZXZfbWFpbjsKPiAKPiBSZWFsbHkgc21hbGwgbml0IChhcyB5b3UgaGF2ZSB0byBm\n" + "aXggdGhlIHdoaXRlc3BhY2UgZXJyIGFueXdheSk6Cj4gICBDYW4geW91IGNoYW5nZSB0aGUgb3Jk\n" + "ZXIgb2YgdGhlIHR3byBsaW5lcyBhYm92ZSBwbGVhc2U/CgpObyBwcm9ibGVtLgoKPiAKPiA+ICsJ\n" + "cmV0ID0gaTJjX2NoZWNrX2Z1bmN0aW9uYWxpdHkoY2xpZW50LT5hZGFwdGVyLAo+ID4gKwkJCQkg\n" + "ICAgICBJMkNfRlVOQ19TTUJVU19CWVRFX0RBVEEgfAo+ID4gKwkJCQkgICAgICBJMkNfRlVOQ19T\n" + "TUJVU19XT1JEX0RBVEEgfAo+ID4gKwkJCQkgICAgICBJMkNfRlVOQ19TTUJVU19CWVRFKTsKPiA+\n" + "ICsJaWYgKCFyZXQpCj4gPiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+ICsKPiA+ICsJcmV2X21ham9y\n" + "ID0gaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKGNsaWVudCwgQk1DX0NNRF9SRVZfTUFKT1IpOwo+\n" + "ID4gKwlpZiAocmV2X21ham9yIDwgMCkgewo+ID4gKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJm\n" + "YWlsZWQgdG8gZ2V0IEJNQyBtYWpvciByZXZpc2lvblxuIik7Cj4gPiArCQlyZXR1cm4gcmV2X21h\n" + "am9yOwo+ID4gKwl9Cj4gPiArCj4gPiArCXJldl9taW5vciA9IGkyY19zbWJ1c19yZWFkX3dvcmRf\n" + "ZGF0YShjbGllbnQsIEJNQ19DTURfUkVWX01JTk9SKTsKPiA+ICsJaWYgKHJldl9taW5vciA8IDAp\n" + "IHsKPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGdldCBCTUMgbWlub3Ig\n" + "cmV2aXNpb25cbiIpOwo+ID4gKwkJcmV0dXJuIHJldl9taW5vcjsKPiA+ICsJfQo+ID4gKwo+ID4g\n" + "KwlyZXZfbWFpbiA9IGkyY19zbWJ1c19yZWFkX3dvcmRfZGF0YShjbGllbnQsIEJNQ19DTURfUkVW\n" + "X01BSU4pOwo+ID4gKwlpZiAocmV2X21haW4gPCAwKSB7Cj4gPiArCQlkZXZfZXJyKCZjbGllbnQt\n" + "PmRldiwgImZhaWxlZCB0byBnZXQgQk1DIG1haW4gcmV2aXNpb25cbiIpOwo+ID4gKwkJcmV0dXJu\n" + "IHJldl9tYWluOwo+ID4gKwl9Cj4gPiArCj4gPiArCWRldl9pbmZvKCZjbGllbnQtPmRldiwgIkZX\n" + "IFJldmlzaW9uOiAlMDJkLiUwMmQuJTAyZFxuIiwKPiA+ICsJCQkJCXJldl9tYWpvciwgcmV2X21p\n" + "bm9yLCByZXZfbWFpbik7Cj4gCj4gWW91IGVuZm9yY2VkIGEgJ2xpbmUgPiA4MCBjaGFycycgd2Fy\n" + "bmluZyBpbiB5b3VyIG90aGVyIGRyaXZlciBqdXN0IHNvCj4geW91IGNhbiAnZG8gdGhlIHJpZ2h0\n" + "IHRoaW5nJyBhbmQgbGluZSB1cCBhZ2FpbnN0IHRoZSAnKCcuIDopCj4gCj4gQ2FuIHlvdSBkbyB0\n" + "aGF0IGhlcmUgcGxlYXNlPwo+IAoKeWVzCgo+ID4gKwkvKgo+ID4gKwkgKiBXZSBoYXZlIHRvIGV4\n" + "aXQgdGhlIFByb2R1Y3Rpb24gTW9kZSBvZiB0aGUgQk1DIHRvIGFjdGl2YXRlIHRoZQo+ID4gKwkg\n" + "KiBXYXRjaGRvZyBmdW5jdGlvbmFsaXR5IGFuZCB0aGUgQklPUyBsaWZlIHNpZ24gbW9uaXRvcmlu\n" + "Zy4KPiA+ICsJICovCj4gPiArCXJldCA9IG1lbmYyMWJtY193ZHRfZXhpdF9wcm9kX21vZGUoY2xp\n" + "ZW50KTsKPiA+ICsJaWYgKHJldCA8IDApIHsKPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAi\n" + "ZmFpbGVkIHRvIGxlYXZlIHByb2R1Y3Rpb24gbW9kZVxuIik7Cj4gPiArCQlyZXR1cm4gcmV0Owo+\n" + "ID4gKwl9Cj4gPiArCj4gPiArCXJldCA9IG1mZF9hZGRfZGV2aWNlcygmY2xpZW50LT5kZXYsIDAs\n" + "IG1lbmYyMWJtY19jZWxsLAo+ID4gKwkJCQlBUlJBWV9TSVpFKG1lbmYyMWJtY19jZWxsKSwgTlVM\n" + "TCwgMCwgTlVMTCk7Cj4gCj4gTGluZSB1cCB0byB0byAnKCcuCj4gCgpvawoKPiA+ICsJaWYgKHJl\n" + "dCA8IDApIHsKPiA+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBCTUMg\n" + "c3ViLWRldmljZXNcbiIpOwo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsJfQo+ID4gKwo+ID4gKwly\n" + "ZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCBtZW5mMjFibWNfcmVtb3ZlKHN0\n" + "cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCj4gPiArewo+ID4gKwltZmRfcmVtb3ZlX2RldmljZXMo\n" + "JmNsaWVudC0+ZGV2KTsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBj\n" + "b25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCBtZW5mMjFibWNfaWRfdGFibGVbXSA9IHsKPiA+ICsJ\n" + "eyAibWVuZjIxYm1jIiwgMCB9LAo+IAo+IFRoZSBzZWNvbmQgYXR0cmlidXRlIGlzIHVudXNlZCBp\n" + "biB0aGlzIGRyaXZlciwgcGxlYXNlIHJlbW92ZSBpdC4KPiAKCm9rCgo+ID4gKwl7IH0KPiA+ICt9\n" + "Owo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBtZW5mMjFibWNfaWRfdGFibGUpOwo+ID4g\n" + "Kwo+ID4gK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtZW5mMjFibWNfZHJpdmVyID0gewo+ID4g\n" + "KwkuZHJpdmVyLm5hbWUJPSAibWVuZjIxYm1jIiwKPiA+ICsJLmlkX3RhYmxlCT0gbWVuZjIxYm1j\n" + "X2lkX3RhYmxlLAo+ID4gKwkucHJvYmUJCT0gbWVuZjIxYm1jX3Byb2JlLAo+ID4gKwkucmVtb3Zl\n" + "CQk9IG1lbmYyMWJtY19yZW1vdmUsCj4gPiArfTsKPiAKPiBObyBEVCBzdXBwb3J0Pwo+IAo+ID4g\n" + "K21vZHVsZV9pMmNfZHJpdmVyKG1lbmYyMWJtY19kcml2ZXIpOwo+ID4gKwo+ID4gK01PRFVMRV9E\n" + "RVNDUklQVElPTigiTUVOIDE0RjAyMVAwMCBCTUMgbWZkIGNvcmUgZHJpdmVyIik7Cj4gCj4gcy9t\n" + "ZmQvTUZECj4gCj4gPiArTU9EVUxFX0FVVEhPUigiQW5kcmVhcyBXZXJuZXIgPGFuZHJlYXMud2Vy\n" + "bmVyQG1lbi5kZT4iKTsKPiA+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gCj4gLS0gCj4g\n" + "TGVlIEpvbmVzCj4gTGluYXJvIFNUTWljcm9lbGVjdHJvbmljcyBMYW5kaW5nIFRlYW0gTGVhZAo+\n" + "IExpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBUk0gU29Dcwo+IEZvbGxv\n" + "dyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cKCl9fX19fX19fX19fX19fX19fX19f\n" + "X19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0CmxtLXNl\n" + "bnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21haWxtYW4v\n" + bGlzdGluZm8vbG0tc2Vuc29ycw= -a6c77dd74eb610302fd4c0b9398da0aa9a43f40a328596070efd8fde88009821 +abf7b73990a7eeadc2dc35c214a0e9654c03ea28ba62e8a390ecd4e85034d290
diff --git a/a/content_digest b/N3/content_digest index 0f82611..7898d73 100644 --- a/a/content_digest +++ b/N3/content_digest @@ -6,17 +6,17 @@ "Date\0Wed, 27 Aug 2014 12:36:38 +0200\0" "To\0Lee Jones <lee.jones@linaro.org>\0" "Cc\0Andreas Werner <andreas.werner@men.de>" - linux-kernel@vger.kernel.org - sameo@linux.intel.com - wim@iguana.be - linux-watchdog@vger.kernel.org - cooloney@gmail.com - rpurdie@rpsys.net - linux-leds@vger.kernel.org - jdelvare@suse.de - linux@roeck-us.net - lm-sensors@lm-sensors.org - " johannes.thumshirn@men.de\0" + <linux-kernel@vger.kernel.org> + <sameo@linux.intel.com> + <wim@iguana.be> + <linux-watchdog@vger.kernel.org> + <cooloney@gmail.com> + <rpurdie@rpsys.net> + <linux-leds@vger.kernel.org> + <jdelvare@suse.de> + <linux@roeck-us.net> + <lm-sensors@lm-sensors.org> + " <johannes.thumshirn@men.de>\0" "\00:1\0" "b\0" "On Wed, Aug 27, 2014 at 08:26:33AM +0100, Lee Jones wrote:\n" @@ -259,4 +259,4 @@ "> Linaro.org \342\224\202 Open source software for ARM SoCs\n" > Follow Linaro: Facebook | Twitter | Blog -a6c77dd74eb610302fd4c0b9398da0aa9a43f40a328596070efd8fde88009821 +b34b122c56a387c0bdb7b8bd49c37adbb3be46b5a290a112fdf0cbf46e6e8de2
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.