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

diff --git a/a/1.txt b/N1/1.txt
index c8f6105..afad488 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -221,3 +221,7 @@ 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
diff --git a/a/content_digest b/N1/content_digest
index fd2757e..5a8de68 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -239,6 +239,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
 
-d1904caae7b5119958d3b8e48d3a2e8fa53bc22f1f6dc3a8c2b6ee0bea28b9f3
+b78c0d6bf772badbd98f491acbf81968c88e58b7affe2124f4976f1de56ac122

diff --git a/a/1.txt b/N2/1.txt
index c8f6105..442a8ca 100644
--- a/a/1.txt
+++ b/N2/1.txt
@@ -1,223 +1,122 @@
-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.
-
-> +	  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?
-
-> +	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?
-
-> +	/*
-> +	 * 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 '('.
-
-> +	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.
-
-> +	{ }
-> +};
-> +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
+T24gVHVlLCAyNiBBdWcgMjAxNCwgQW5kcmVhcyBXZXJuZXIgd3JvdGU6Cj4gVGhlIE1FTiAxNEYw
+MjFQMDAgQm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIHByb3ZpZGVzIGFuCj4gSTJDIGludGVy
+ZmFjZSB0byB0aGUgaG9zdCB0byBhY2Nlc3MgdGhlIGZlYXR1cmUgaW1wbGVtZW50ZWQgaW4gdGhl
+IEJNQy4KPiBUaGUgQk1DIGlzIGEgUElDIE1pY3JvbnRyb2xsZXIgYXNzZW1ibGVkIG9uIENQQ0kg
+Q2FyZCBmcm9tIE1FTiBNaWtyb2VsZWt0cm9uaWsKPiBhbmQgb24gYSBmZXcgQm94L0Rpc3BsYXkg
+Q29tcHV0ZXIuCj4gCj4gQWRkZWQgTUZEIENvcmUgZHJpdmVyLCBzdXBwb3J0aW5nIHRoZSBJMkMg
+Y29tbXVuaWNhdGlvbiB0byB0aGUgZGV2aWNlLgo+IAo+IFRoZSBNRkQgZHJpdmVyIGN1cnJlbnRs
+eSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOgo+ICAJLSBXYXRjaGRvZwo+ICAJLSBM
+RURzCj4gCS0gSHdtb24gKHZvbHRhZ2UgbW9uaXRvcmluZykKPiAKPiBTaWduZWQtb2ZmLWJ5OiBB
+bmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJuZXJAbWVuLmRlPgo+IEFja2VkLWJ5OiBMZWUgSm9u
+ZXMgPGxlZS5qb25lc0BsaW5hcm8ub3JnPgo+IC0tLQo+ICBkcml2ZXJzL21mZC9LY29uZmlnICAg
+ICB8ICAxMiArKysrKwo+ICBkcml2ZXJzL21mZC9NYWtlZmlsZSAgICB8ICAgMSArCj4gIGRyaXZl
+cnMvbWZkL21lbmYyMWJtYy5jIHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
+KysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCspCj4g
+IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21mZC9tZW5mMjFibWMuYwo+IAo+IGRpZmYgLS1n
+aXQgYS9kcml2ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwo+IGluZGV4IGI4
+ZDljYTAuLjZhOWYxMDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvS2NvbmZpZwo+ICsrKyBi
+L2RyaXZlcnMvbWZkL0tjb25maWcKPiBAQCAtNDUzLDYgKzQ1MywxOCBAQCBjb25maWcgTUZEX01B
+WDg5OTgKPiAgCSAgYWRkaXRpb25hbCBkcml2ZXJzIG11c3QgYmUgZW5hYmxlZCBpbiBvcmRlciB0
+byB1c2UgdGhlIGZ1bmN0aW9uYWxpdHkKPiAgCSAgb2YgdGhlIGRldmljZS4KPiAgCj4gK2NvbmZp
+ZyBNRkRfTUVORjIxQk1DCj4gKwl0cmlzdGF0ZSAiTUVOIDE0RjAyMVAwMCBCb2FyZCBNYW5hZ2Vt
+ZW50IENvbnRyb2xsZXIgU3VwcG9ydCIKPiArCWRlcGVuZHMgb24gSTJDCj4gKwlzZWxlY3QgTUZE
+X0NPUkUKPiArCWhlbHAKPiArCSAgU2F5IHllcyBoZXJlIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUg
+TUVOIDE0RjAyMVAwMCBCTUMKPiArCSAgd2hpY2ggaXMgYSBCb2FyZCBNYW5hZ2VtZW50IENvbnRy
+b2xsZXIgY29ubmVjdGVkIHRvIHRoZSBJMkMgYnVzLgo+ICsJICBUaGUgZGV2aWNlIHN1cHBvcnRz
+IG11bHRpcGxlIHN1Yi1kZXZpY2VzIGxpa2UgTEVELCBIV01PTiAgYW5kIFdEVC4KCk5pdDogV2hp
+dGVzcGFjZSBlcnJvci4KCj4gKwkgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIGNvbW1vbiBzdXBwb3J0
+IGZvciBhY2Nlc3NpbmcgdGhlIGRldmljZXM7Cj4gKwkgIGFkZGl0aW9uYWwgZHJpdmVycyBtdXN0
+IGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gdXNlIHRoZQo+ICsJICBmdW5jdGlvbmFsaXR5IG9mIHRo
+ZSBCTUMgZGV2aWNlLgo+ICsKPiAgY29uZmlnIEVaWF9QQ0FQCj4gIAlib29sICJNb3Rvcm9sYSBF
+WlhQQ0FQIFN1cHBvcnQiCj4gIAlkZXBlbmRzIG9uIFNQSV9NQVNURVIKPiBkaWZmIC0tZ2l0IGEv
+ZHJpdmVycy9tZmQvTWFrZWZpbGUgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQo+IGluZGV4IDRlMmJj
+MjUuLjM3YmYzMzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvTWFrZWZpbGUKPiArKysgYi9k
+cml2ZXJzL21mZC9NYWtlZmlsZQo+IEBAIC0xNjksNiArMTY5LDcgQEAgb2JqLSQoQ09ORklHX01G
+RF9BUzM3MTEpCSs9IGFzMzcxMS5vCj4gIG9iai0kKENPTkZJR19NRkRfQVMzNzIyKQkrPSBhczM3
+MjIubwo+ICBvYmotJChDT05GSUdfTUZEX1NUVzQ4MVgpCSs9IHN0dzQ4MXgubwo+ICBvYmotJChD
+T05GSUdfTUZEX0lQQVFfTUlDUk8pCSs9IGlwYXEtbWljcm8ubwo+ICtvYmotJChDT05GSUdfTUZE
+X01FTkYyMUJNQykJKz0gbWVuZjIxYm1jLm8KPiAgCj4gIGludGVsLXNvYy1wbWljLW9ianMJCTo9
+IGludGVsX3NvY19wbWljX2NvcmUubyBpbnRlbF9zb2NfcG1pY19jcmMubwo+ICBvYmotJChDT05G
+SUdfSU5URUxfU09DX1BNSUMpCSs9IGludGVsLXNvYy1wbWljLm8KPiBkaWZmIC0tZ2l0IGEvZHJp
+dmVycy9tZmQvbWVuZjIxYm1jLmMgYi9kcml2ZXJzL21mZC9tZW5mMjFibWMuYwo+IG5ldyBmaWxl
+IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYTZlYjAzZgo+IC0tLSAvZGV2L251bGwKPiAr
+KysgYi9kcml2ZXJzL21mZC9tZW5mMjFibWMuYwo+IEBAIC0wLDAgKzEsMTMyIEBACj4gKy8qCj4g
+KyAqICBNRU4gMTRGMDIxUDAwIEJvYXJkIE1hbmFnZW1lbnQgQ29udHJvbGxlciAoQk1DKSBNRkQg
+Q29yZSBEcml2ZXIuCj4gKyAqCj4gKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgTUVOIE1pa3JvIEVs
+ZWt0cm9uaWsgTnVlcm5iZXJnIEdtYkgKPiArICoKPiArICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVl
+IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsg
+KiAgdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBh
+cyBwdWJsaXNoZWQgYnkgdGhlCj4gKyAqICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRo
+ZXIgdmVyc2lvbiAyIG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXIKPiArICogIG9wdGlvbikg
+YW55IGxhdGVyIHZlcnNpb24uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o
+Pgo+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu
+aD4KPiArI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvbWZkL2NvcmUu
+aD4KPiArCj4gKyNkZWZpbmUgQk1DX0NNRF9XRFRfRVhJVF9QUk9ECTB4MTgKPiArI2RlZmluZSBC
+TUNfQ01EX1dEVF9QUk9EX1NUQVQJMHgxOQo+ICsjZGVmaW5lIEJNQ19DTURfUkVWX01BSk9SCTB4
+ODAKPiArI2RlZmluZSBCTUNfQ01EX1JFVl9NSU5PUgkweDgxCj4gKyNkZWZpbmUgQk1DX0NNRF9S
+RVZfTUFJTgkweDgyCj4gKwo+ICtzdGF0aWMgc3RydWN0IG1mZF9jZWxsIG1lbmYyMWJtY19jZWxs
+W10gPSB7Cj4gKwl7IC5uYW1lID0gIm1lbmYyMWJtY193ZHQiLCB9LAo+ICsJeyAubmFtZSA9ICJt
+ZW5mMjFibWNfbGVkIiwgfSwKPiArCXsgLm5hbWUgPSAibWVuZjIxYm1jX2h3bW9uIiwgfQo+ICt9
+Owo+ICsKPiArc3RhdGljIGludCBtZW5mMjFibWNfd2R0X2V4aXRfcHJvZF9tb2RlKHN0cnVjdCBp
+MmNfY2xpZW50ICpjbGllbnQpCj4gK3sKPiArCWludCB2YWwsIHJldDsKPiArCj4gKwl2YWwgPSBp
+MmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBCTUNfQ01EX1dEVF9QUk9EX1NUQVQpOwo+
+ICsJaWYgKHZhbCA8IDApCj4gKwkJcmV0dXJuIHZhbDsKPiArCj4gKwkvKgo+ICsJICogUHJvZHVj
+dGlvbiBtb2RlIHNob3VsZCBiZSBub3QgYWN0aXZlIGFmdGVyIGRlbGl2ZXJ5IG9mIHRoZSBCb2Fy
+ZC4KPiArCSAqIFRvIGJlIHN1cmUgd2UgY2hlY2sgaXQsIGluZm9ybSB0aGUgdXNlciBhbmQgZXhp
+dCB0aGUgbW9kZQo+ICsJICogaWYgYWN0aXZlLgo+ICsJICovCj4gKwlpZiAodmFsID09IDB4MDAp
+IHsKPiArCQlkZXZfaW5mbygmY2xpZW50LT5kZXYsCj4gKwkJCSJCTUMgaW4gcHJvZHVjdGlvbiBt
+b2RlLiBFeGl0IHByb2R1Y3Rpb24gbW9kZVxuIik7Cj4gKwo+ICsJCXJldCA9IGkyY19zbWJ1c193
+cml0ZV9ieXRlKGNsaWVudCwgQk1DX0NNRF9XRFRfRVhJVF9QUk9EKTsKPiArCQlpZiAocmV0IDwg
+MCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAr
+c3RhdGljIGludAo+ICttZW5mMjFibWNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwg
+Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkcykKPiArewo+ICsJaW50IHJldDsKPiArCWlu
+dCByZXZfbWFqb3IsIHJldl9taW5vciwgcmV2X21haW47CgpSZWFsbHkgc21hbGwgbml0IChhcyB5
+b3UgaGF2ZSB0byBmaXggdGhlIHdoaXRlc3BhY2UgZXJyIGFueXdheSk6CiAgQ2FuIHlvdSBjaGFu
+Z2UgdGhlIG9yZGVyIG9mIHRoZSB0d28gbGluZXMgYWJvdmUgcGxlYXNlPwoKPiArCXJldCA9IGky
+Y19jaGVja19mdW5jdGlvbmFsaXR5KGNsaWVudC0+YWRhcHRlciwKPiArCQkJCSAgICAgIEkyQ19G
+VU5DX1NNQlVTX0JZVEVfREFUQSB8Cj4gKwkJCQkgICAgICBJMkNfRlVOQ19TTUJVU19XT1JEX0RB
+VEEgfAo+ICsJCQkJICAgICAgSTJDX0ZVTkNfU01CVVNfQllURSk7Cj4gKwlpZiAoIXJldCkKPiAr
+CQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlyZXZfbWFqb3IgPSBpMmNfc21idXNfcmVhZF93b3Jk
+X2RhdGEoY2xpZW50LCBCTUNfQ01EX1JFVl9NQUpPUik7Cj4gKwlpZiAocmV2X21ham9yIDwgMCkg
+ewo+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGdldCBCTUMgbWFqb3IgcmV2
+aXNpb25cbiIpOwo+ICsJCXJldHVybiByZXZfbWFqb3I7Cj4gKwl9Cj4gKwo+ICsJcmV2X21pbm9y
+ID0gaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKGNsaWVudCwgQk1DX0NNRF9SRVZfTUlOT1IpOwo+
+ICsJaWYgKHJldl9taW5vciA8IDApIHsKPiArCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgImZhaWxl
+ZCB0byBnZXQgQk1DIG1pbm9yIHJldmlzaW9uXG4iKTsKPiArCQlyZXR1cm4gcmV2X21pbm9yOwo+
+ICsJfQo+ICsKPiArCXJldl9tYWluID0gaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKGNsaWVudCwg
+Qk1DX0NNRF9SRVZfTUFJTik7Cj4gKwlpZiAocmV2X21haW4gPCAwKSB7Cj4gKwkJZGV2X2Vycigm
+Y2xpZW50LT5kZXYsICJmYWlsZWQgdG8gZ2V0IEJNQyBtYWluIHJldmlzaW9uXG4iKTsKPiArCQly
+ZXR1cm4gcmV2X21haW47Cj4gKwl9Cj4gKwo+ICsJZGV2X2luZm8oJmNsaWVudC0+ZGV2LCAiRlcg
+UmV2aXNpb246ICUwMmQuJTAyZC4lMDJkXG4iLAo+ICsJCQkJCXJldl9tYWpvciwgcmV2X21pbm9y
+LCByZXZfbWFpbik7CgpZb3UgZW5mb3JjZWQgYSAnbGluZSA+IDgwIGNoYXJzJyB3YXJuaW5nIGlu
+IHlvdXIgb3RoZXIgZHJpdmVyIGp1c3Qgc28KeW91IGNhbiAnZG8gdGhlIHJpZ2h0IHRoaW5nJyBh
+bmQgbGluZSB1cCBhZ2FpbnN0IHRoZSAnKCcuIDopCgpDYW4geW91IGRvIHRoYXQgaGVyZSBwbGVh
+c2U/Cgo+ICsJLyoKPiArCSAqIFdlIGhhdmUgdG8gZXhpdCB0aGUgUHJvZHVjdGlvbiBNb2RlIG9m
+IHRoZSBCTUMgdG8gYWN0aXZhdGUgdGhlCj4gKwkgKiBXYXRjaGRvZyBmdW5jdGlvbmFsaXR5IGFu
+ZCB0aGUgQklPUyBsaWZlIHNpZ24gbW9uaXRvcmluZy4KPiArCSAqLwo+ICsJcmV0ID0gbWVuZjIx
+Ym1jX3dkdF9leGl0X3Byb2RfbW9kZShjbGllbnQpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlk
+ZXZfZXJyKCZjbGllbnQtPmRldiwgImZhaWxlZCB0byBsZWF2ZSBwcm9kdWN0aW9uIG1vZGVcbiIp
+Owo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gbWZkX2FkZF9kZXZpY2VzKCZj
+bGllbnQtPmRldiwgMCwgbWVuZjIxYm1jX2NlbGwsCj4gKwkJCQlBUlJBWV9TSVpFKG1lbmYyMWJt
+Y19jZWxsKSwgTlVMTCwgMCwgTlVMTCk7CgpMaW5lIHVwIHRvIHRvICcoJy4KCj4gKwlpZiAocmV0
+IDwgMCkgewo+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBCTUMgc3Vi
+LWRldmljZXNcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g
+K30KPiArCj4gK3N0YXRpYyBpbnQgbWVuZjIxYm1jX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq
+Y2xpZW50KQo+ICt7Cj4gKwltZmRfcmVtb3ZlX2RldmljZXMoJmNsaWVudC0+ZGV2KTsKPiArCXJl
+dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbWVu
+ZjIxYm1jX2lkX3RhYmxlW10gPSB7Cj4gKwl7ICJtZW5mMjFibWMiLCAwIH0sCgpUaGUgc2Vjb25k
+IGF0dHJpYnV0ZSBpcyB1bnVzZWQgaW4gdGhpcyBkcml2ZXIsIHBsZWFzZSByZW1vdmUgaXQuCgo+
+ICsJeyB9Cj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBtZW5mMjFibWNfaWRfdGFi
+bGUpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIG1lbmYyMWJtY19kcml2ZXIgPSB7
+Cj4gKwkuZHJpdmVyLm5hbWUJPSAibWVuZjIxYm1jIiwKPiArCS5pZF90YWJsZQk9IG1lbmYyMWJt
+Y19pZF90YWJsZSwKPiArCS5wcm9iZQkJPSBtZW5mMjFibWNfcHJvYmUsCj4gKwkucmVtb3ZlCQk9
+IG1lbmYyMWJtY19yZW1vdmUsCj4gK307CgpObyBEVCBzdXBwb3J0PwoKPiArbW9kdWxlX2kyY19k
+cml2ZXIobWVuZjIxYm1jX2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1FTiAx
+NEYwMjFQMDAgQk1DIG1mZCBjb3JlIGRyaXZlciIpOwoKcy9tZmQvTUZECgo+ICtNT0RVTEVfQVVU
+SE9SKCJBbmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJuZXJAbWVuLmRlPiIpOwo+ICtNT0RVTEVf
+TElDRU5TRSgiR1BMIHYyIik7CgotLSAKTGVlIEpvbmVzCkxpbmFybyBTVE1pY3JvZWxlY3Ryb25p
+Y3MgTGFuZGluZyBUZWFtIExlYWQKTGluYXJvLm9yZyDilIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUg
+Zm9yIEFSTSBTb0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cKCl9f
+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMg
+bWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNl
+bnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=
diff --git a/a/content_digest b/N2/content_digest
index fd2757e..7cc3fab 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -1,8 +1,8 @@
  "ref\0cover.1409074255.git.andreas.werner@men.de\0"
  "ref\067faa70de03924edc768002df17b02e47256260c.1409074255.git.andreas.werner@men.de\0"
  "From\0Lee Jones <lee.jones@linaro.org>\0"
- "Subject\0Re: [PATCH v5 1/4] drivers/mfd/menf21bmc: introduce MEN 14F021P00 BMC MFD Core driver\0"
- "Date\0Wed, 27 Aug 2014 08:26:33 +0100\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 07:26:33 +0000\0"
  "To\0Andreas Werner <andreas.werner@men.de>\0"
  "Cc\0linux-kernel@vger.kernel.org"
   sameo@linux.intel.com
@@ -17,228 +17,127 @@
  " johannes.thumshirn@men.de\0"
  "\00:1\0"
  "b\0"
- "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"
- "> +\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"
- "> +\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"
- "> +\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"
- "> +\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"
- "> +\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
+ "T24gVHVlLCAyNiBBdWcgMjAxNCwgQW5kcmVhcyBXZXJuZXIgd3JvdGU6Cj4gVGhlIE1FTiAxNEYw\n"
+ "MjFQMDAgQm9hcmQgTWFuYWdlbWVudCBDb250cm9sbGVyIHByb3ZpZGVzIGFuCj4gSTJDIGludGVy\n"
+ "ZmFjZSB0byB0aGUgaG9zdCB0byBhY2Nlc3MgdGhlIGZlYXR1cmUgaW1wbGVtZW50ZWQgaW4gdGhl\n"
+ "IEJNQy4KPiBUaGUgQk1DIGlzIGEgUElDIE1pY3JvbnRyb2xsZXIgYXNzZW1ibGVkIG9uIENQQ0kg\n"
+ "Q2FyZCBmcm9tIE1FTiBNaWtyb2VsZWt0cm9uaWsKPiBhbmQgb24gYSBmZXcgQm94L0Rpc3BsYXkg\n"
+ "Q29tcHV0ZXIuCj4gCj4gQWRkZWQgTUZEIENvcmUgZHJpdmVyLCBzdXBwb3J0aW5nIHRoZSBJMkMg\n"
+ "Y29tbXVuaWNhdGlvbiB0byB0aGUgZGV2aWNlLgo+IAo+IFRoZSBNRkQgZHJpdmVyIGN1cnJlbnRs\n"
+ "eSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOgo+ICAJLSBXYXRjaGRvZwo+ICAJLSBM\n"
+ "RURzCj4gCS0gSHdtb24gKHZvbHRhZ2UgbW9uaXRvcmluZykKPiAKPiBTaWduZWQtb2ZmLWJ5OiBB\n"
+ "bmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJuZXJAbWVuLmRlPgo+IEFja2VkLWJ5OiBMZWUgSm9u\n"
+ "ZXMgPGxlZS5qb25lc0BsaW5hcm8ub3JnPgo+IC0tLQo+ICBkcml2ZXJzL21mZC9LY29uZmlnICAg\n"
+ "ICB8ICAxMiArKysrKwo+ICBkcml2ZXJzL21mZC9NYWtlZmlsZSAgICB8ICAgMSArCj4gIGRyaXZl\n"
+ "cnMvbWZkL21lbmYyMWJtYy5jIHwgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr\n"
+ "KysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDE0NSBpbnNlcnRpb25zKCspCj4g\n"
+ "IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21mZC9tZW5mMjFibWMuYwo+IAo+IGRpZmYgLS1n\n"
+ "aXQgYS9kcml2ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwo+IGluZGV4IGI4\n"
+ "ZDljYTAuLjZhOWYxMDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvS2NvbmZpZwo+ICsrKyBi\n"
+ "L2RyaXZlcnMvbWZkL0tjb25maWcKPiBAQCAtNDUzLDYgKzQ1MywxOCBAQCBjb25maWcgTUZEX01B\n"
+ "WDg5OTgKPiAgCSAgYWRkaXRpb25hbCBkcml2ZXJzIG11c3QgYmUgZW5hYmxlZCBpbiBvcmRlciB0\n"
+ "byB1c2UgdGhlIGZ1bmN0aW9uYWxpdHkKPiAgCSAgb2YgdGhlIGRldmljZS4KPiAgCj4gK2NvbmZp\n"
+ "ZyBNRkRfTUVORjIxQk1DCj4gKwl0cmlzdGF0ZSAiTUVOIDE0RjAyMVAwMCBCb2FyZCBNYW5hZ2Vt\n"
+ "ZW50IENvbnRyb2xsZXIgU3VwcG9ydCIKPiArCWRlcGVuZHMgb24gSTJDCj4gKwlzZWxlY3QgTUZE\n"
+ "X0NPUkUKPiArCWhlbHAKPiArCSAgU2F5IHllcyBoZXJlIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUg\n"
+ "TUVOIDE0RjAyMVAwMCBCTUMKPiArCSAgd2hpY2ggaXMgYSBCb2FyZCBNYW5hZ2VtZW50IENvbnRy\n"
+ "b2xsZXIgY29ubmVjdGVkIHRvIHRoZSBJMkMgYnVzLgo+ICsJICBUaGUgZGV2aWNlIHN1cHBvcnRz\n"
+ "IG11bHRpcGxlIHN1Yi1kZXZpY2VzIGxpa2UgTEVELCBIV01PTiAgYW5kIFdEVC4KCk5pdDogV2hp\n"
+ "dGVzcGFjZSBlcnJvci4KCj4gKwkgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIGNvbW1vbiBzdXBwb3J0\n"
+ "IGZvciBhY2Nlc3NpbmcgdGhlIGRldmljZXM7Cj4gKwkgIGFkZGl0aW9uYWwgZHJpdmVycyBtdXN0\n"
+ "IGJlIGVuYWJsZWQgaW4gb3JkZXIgdG8gdXNlIHRoZQo+ICsJICBmdW5jdGlvbmFsaXR5IG9mIHRo\n"
+ "ZSBCTUMgZGV2aWNlLgo+ICsKPiAgY29uZmlnIEVaWF9QQ0FQCj4gIAlib29sICJNb3Rvcm9sYSBF\n"
+ "WlhQQ0FQIFN1cHBvcnQiCj4gIAlkZXBlbmRzIG9uIFNQSV9NQVNURVIKPiBkaWZmIC0tZ2l0IGEv\n"
+ "ZHJpdmVycy9tZmQvTWFrZWZpbGUgYi9kcml2ZXJzL21mZC9NYWtlZmlsZQo+IGluZGV4IDRlMmJj\n"
+ "MjUuLjM3YmYzMzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZmQvTWFrZWZpbGUKPiArKysgYi9k\n"
+ "cml2ZXJzL21mZC9NYWtlZmlsZQo+IEBAIC0xNjksNiArMTY5LDcgQEAgb2JqLSQoQ09ORklHX01G\n"
+ "RF9BUzM3MTEpCSs9IGFzMzcxMS5vCj4gIG9iai0kKENPTkZJR19NRkRfQVMzNzIyKQkrPSBhczM3\n"
+ "MjIubwo+ICBvYmotJChDT05GSUdfTUZEX1NUVzQ4MVgpCSs9IHN0dzQ4MXgubwo+ICBvYmotJChD\n"
+ "T05GSUdfTUZEX0lQQVFfTUlDUk8pCSs9IGlwYXEtbWljcm8ubwo+ICtvYmotJChDT05GSUdfTUZE\n"
+ "X01FTkYyMUJNQykJKz0gbWVuZjIxYm1jLm8KPiAgCj4gIGludGVsLXNvYy1wbWljLW9ianMJCTo9\n"
+ "IGludGVsX3NvY19wbWljX2NvcmUubyBpbnRlbF9zb2NfcG1pY19jcmMubwo+ICBvYmotJChDT05G\n"
+ "SUdfSU5URUxfU09DX1BNSUMpCSs9IGludGVsLXNvYy1wbWljLm8KPiBkaWZmIC0tZ2l0IGEvZHJp\n"
+ "dmVycy9tZmQvbWVuZjIxYm1jLmMgYi9kcml2ZXJzL21mZC9tZW5mMjFibWMuYwo+IG5ldyBmaWxl\n"
+ "IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYTZlYjAzZgo+IC0tLSAvZGV2L251bGwKPiAr\n"
+ "KysgYi9kcml2ZXJzL21mZC9tZW5mMjFibWMuYwo+IEBAIC0wLDAgKzEsMTMyIEBACj4gKy8qCj4g\n"
+ "KyAqICBNRU4gMTRGMDIxUDAwIEJvYXJkIE1hbmFnZW1lbnQgQ29udHJvbGxlciAoQk1DKSBNRkQg\n"
+ "Q29yZSBEcml2ZXIuCj4gKyAqCj4gKyAqICBDb3B5cmlnaHQgKEMpIDIwMTQgTUVOIE1pa3JvIEVs\n"
+ "ZWt0cm9uaWsgTnVlcm5iZXJnIEdtYkgKPiArICoKPiArICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVl\n"
+ "IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAo+ICsg\n"
+ "KiAgdW5kZXIgIHRoZSB0ZXJtcyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBh\n"
+ "cyBwdWJsaXNoZWQgYnkgdGhlCj4gKyAqICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRo\n"
+ "ZXIgdmVyc2lvbiAyIG9mIHRoZSAgTGljZW5zZSwgb3IgKGF0IHlvdXIKPiArICogIG9wdGlvbikg\n"
+ "YW55IGxhdGVyIHZlcnNpb24uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o\n"
+ "Pgo+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUu\n"
+ "aD4KPiArI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgo+ICsjaW5jbHVkZSA8bGludXgvbWZkL2NvcmUu\n"
+ "aD4KPiArCj4gKyNkZWZpbmUgQk1DX0NNRF9XRFRfRVhJVF9QUk9ECTB4MTgKPiArI2RlZmluZSBC\n"
+ "TUNfQ01EX1dEVF9QUk9EX1NUQVQJMHgxOQo+ICsjZGVmaW5lIEJNQ19DTURfUkVWX01BSk9SCTB4\n"
+ "ODAKPiArI2RlZmluZSBCTUNfQ01EX1JFVl9NSU5PUgkweDgxCj4gKyNkZWZpbmUgQk1DX0NNRF9S\n"
+ "RVZfTUFJTgkweDgyCj4gKwo+ICtzdGF0aWMgc3RydWN0IG1mZF9jZWxsIG1lbmYyMWJtY19jZWxs\n"
+ "W10gPSB7Cj4gKwl7IC5uYW1lID0gIm1lbmYyMWJtY193ZHQiLCB9LAo+ICsJeyAubmFtZSA9ICJt\n"
+ "ZW5mMjFibWNfbGVkIiwgfSwKPiArCXsgLm5hbWUgPSAibWVuZjIxYm1jX2h3bW9uIiwgfQo+ICt9\n"
+ "Owo+ICsKPiArc3RhdGljIGludCBtZW5mMjFibWNfd2R0X2V4aXRfcHJvZF9tb2RlKHN0cnVjdCBp\n"
+ "MmNfY2xpZW50ICpjbGllbnQpCj4gK3sKPiArCWludCB2YWwsIHJldDsKPiArCj4gKwl2YWwgPSBp\n"
+ "MmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBCTUNfQ01EX1dEVF9QUk9EX1NUQVQpOwo+\n"
+ "ICsJaWYgKHZhbCA8IDApCj4gKwkJcmV0dXJuIHZhbDsKPiArCj4gKwkvKgo+ICsJICogUHJvZHVj\n"
+ "dGlvbiBtb2RlIHNob3VsZCBiZSBub3QgYWN0aXZlIGFmdGVyIGRlbGl2ZXJ5IG9mIHRoZSBCb2Fy\n"
+ "ZC4KPiArCSAqIFRvIGJlIHN1cmUgd2UgY2hlY2sgaXQsIGluZm9ybSB0aGUgdXNlciBhbmQgZXhp\n"
+ "dCB0aGUgbW9kZQo+ICsJICogaWYgYWN0aXZlLgo+ICsJICovCj4gKwlpZiAodmFsID09IDB4MDAp\n"
+ "IHsKPiArCQlkZXZfaW5mbygmY2xpZW50LT5kZXYsCj4gKwkJCSJCTUMgaW4gcHJvZHVjdGlvbiBt\n"
+ "b2RlLiBFeGl0IHByb2R1Y3Rpb24gbW9kZVxuIik7Cj4gKwo+ICsJCXJldCA9IGkyY19zbWJ1c193\n"
+ "cml0ZV9ieXRlKGNsaWVudCwgQk1DX0NNRF9XRFRfRVhJVF9QUk9EKTsKPiArCQlpZiAocmV0IDwg\n"
+ "MCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAr\n"
+ "c3RhdGljIGludAo+ICttZW5mMjFibWNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwg\n"
+ "Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmlkcykKPiArewo+ICsJaW50IHJldDsKPiArCWlu\n"
+ "dCByZXZfbWFqb3IsIHJldl9taW5vciwgcmV2X21haW47CgpSZWFsbHkgc21hbGwgbml0IChhcyB5\n"
+ "b3UgaGF2ZSB0byBmaXggdGhlIHdoaXRlc3BhY2UgZXJyIGFueXdheSk6CiAgQ2FuIHlvdSBjaGFu\n"
+ "Z2UgdGhlIG9yZGVyIG9mIHRoZSB0d28gbGluZXMgYWJvdmUgcGxlYXNlPwoKPiArCXJldCA9IGky\n"
+ "Y19jaGVja19mdW5jdGlvbmFsaXR5KGNsaWVudC0+YWRhcHRlciwKPiArCQkJCSAgICAgIEkyQ19G\n"
+ "VU5DX1NNQlVTX0JZVEVfREFUQSB8Cj4gKwkJCQkgICAgICBJMkNfRlVOQ19TTUJVU19XT1JEX0RB\n"
+ "VEEgfAo+ICsJCQkJICAgICAgSTJDX0ZVTkNfU01CVVNfQllURSk7Cj4gKwlpZiAoIXJldCkKPiAr\n"
+ "CQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlyZXZfbWFqb3IgPSBpMmNfc21idXNfcmVhZF93b3Jk\n"
+ "X2RhdGEoY2xpZW50LCBCTUNfQ01EX1JFVl9NQUpPUik7Cj4gKwlpZiAocmV2X21ham9yIDwgMCkg\n"
+ "ewo+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGdldCBCTUMgbWFqb3IgcmV2\n"
+ "aXNpb25cbiIpOwo+ICsJCXJldHVybiByZXZfbWFqb3I7Cj4gKwl9Cj4gKwo+ICsJcmV2X21pbm9y\n"
+ "ID0gaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKGNsaWVudCwgQk1DX0NNRF9SRVZfTUlOT1IpOwo+\n"
+ "ICsJaWYgKHJldl9taW5vciA8IDApIHsKPiArCQlkZXZfZXJyKCZjbGllbnQtPmRldiwgImZhaWxl\n"
+ "ZCB0byBnZXQgQk1DIG1pbm9yIHJldmlzaW9uXG4iKTsKPiArCQlyZXR1cm4gcmV2X21pbm9yOwo+\n"
+ "ICsJfQo+ICsKPiArCXJldl9tYWluID0gaTJjX3NtYnVzX3JlYWRfd29yZF9kYXRhKGNsaWVudCwg\n"
+ "Qk1DX0NNRF9SRVZfTUFJTik7Cj4gKwlpZiAocmV2X21haW4gPCAwKSB7Cj4gKwkJZGV2X2Vycigm\n"
+ "Y2xpZW50LT5kZXYsICJmYWlsZWQgdG8gZ2V0IEJNQyBtYWluIHJldmlzaW9uXG4iKTsKPiArCQly\n"
+ "ZXR1cm4gcmV2X21haW47Cj4gKwl9Cj4gKwo+ICsJZGV2X2luZm8oJmNsaWVudC0+ZGV2LCAiRlcg\n"
+ "UmV2aXNpb246ICUwMmQuJTAyZC4lMDJkXG4iLAo+ICsJCQkJCXJldl9tYWpvciwgcmV2X21pbm9y\n"
+ "LCByZXZfbWFpbik7CgpZb3UgZW5mb3JjZWQgYSAnbGluZSA+IDgwIGNoYXJzJyB3YXJuaW5nIGlu\n"
+ "IHlvdXIgb3RoZXIgZHJpdmVyIGp1c3Qgc28KeW91IGNhbiAnZG8gdGhlIHJpZ2h0IHRoaW5nJyBh\n"
+ "bmQgbGluZSB1cCBhZ2FpbnN0IHRoZSAnKCcuIDopCgpDYW4geW91IGRvIHRoYXQgaGVyZSBwbGVh\n"
+ "c2U/Cgo+ICsJLyoKPiArCSAqIFdlIGhhdmUgdG8gZXhpdCB0aGUgUHJvZHVjdGlvbiBNb2RlIG9m\n"
+ "IHRoZSBCTUMgdG8gYWN0aXZhdGUgdGhlCj4gKwkgKiBXYXRjaGRvZyBmdW5jdGlvbmFsaXR5IGFu\n"
+ "ZCB0aGUgQklPUyBsaWZlIHNpZ24gbW9uaXRvcmluZy4KPiArCSAqLwo+ICsJcmV0ID0gbWVuZjIx\n"
+ "Ym1jX3dkdF9leGl0X3Byb2RfbW9kZShjbGllbnQpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlk\n"
+ "ZXZfZXJyKCZjbGllbnQtPmRldiwgImZhaWxlZCB0byBsZWF2ZSBwcm9kdWN0aW9uIG1vZGVcbiIp\n"
+ "Owo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gbWZkX2FkZF9kZXZpY2VzKCZj\n"
+ "bGllbnQtPmRldiwgMCwgbWVuZjIxYm1jX2NlbGwsCj4gKwkJCQlBUlJBWV9TSVpFKG1lbmYyMWJt\n"
+ "Y19jZWxsKSwgTlVMTCwgMCwgTlVMTCk7CgpMaW5lIHVwIHRvIHRvICcoJy4KCj4gKwlpZiAocmV0\n"
+ "IDwgMCkgewo+ICsJCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBCTUMgc3Vi\n"
+ "LWRldmljZXNcbiIpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g\n"
+ "K30KPiArCj4gK3N0YXRpYyBpbnQgbWVuZjIxYm1jX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAq\n"
+ "Y2xpZW50KQo+ICt7Cj4gKwltZmRfcmVtb3ZlX2RldmljZXMoJmNsaWVudC0+ZGV2KTsKPiArCXJl\n"
+ "dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgbWVu\n"
+ "ZjIxYm1jX2lkX3RhYmxlW10gPSB7Cj4gKwl7ICJtZW5mMjFibWMiLCAwIH0sCgpUaGUgc2Vjb25k\n"
+ "IGF0dHJpYnV0ZSBpcyB1bnVzZWQgaW4gdGhpcyBkcml2ZXIsIHBsZWFzZSByZW1vdmUgaXQuCgo+\n"
+ "ICsJeyB9Cj4gK307Cj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUoaTJjLCBtZW5mMjFibWNfaWRfdGFi\n"
+ "bGUpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIG1lbmYyMWJtY19kcml2ZXIgPSB7\n"
+ "Cj4gKwkuZHJpdmVyLm5hbWUJPSAibWVuZjIxYm1jIiwKPiArCS5pZF90YWJsZQk9IG1lbmYyMWJt\n"
+ "Y19pZF90YWJsZSwKPiArCS5wcm9iZQkJPSBtZW5mMjFibWNfcHJvYmUsCj4gKwkucmVtb3ZlCQk9\n"
+ "IG1lbmYyMWJtY19yZW1vdmUsCj4gK307CgpObyBEVCBzdXBwb3J0PwoKPiArbW9kdWxlX2kyY19k\n"
+ "cml2ZXIobWVuZjIxYm1jX2RyaXZlcik7Cj4gKwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1FTiAx\n"
+ "NEYwMjFQMDAgQk1DIG1mZCBjb3JlIGRyaXZlciIpOwoKcy9tZmQvTUZECgo+ICtNT0RVTEVfQVVU\n"
+ "SE9SKCJBbmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJuZXJAbWVuLmRlPiIpOwo+ICtNT0RVTEVf\n"
+ "TElDRU5TRSgiR1BMIHYyIik7CgotLSAKTGVlIEpvbmVzCkxpbmFybyBTVE1pY3JvZWxlY3Ryb25p\n"
+ "Y3MgTGFuZGluZyBUZWFtIExlYWQKTGluYXJvLm9yZyDilIIgT3BlbiBzb3VyY2Ugc29mdHdhcmUg\n"
+ "Zm9yIEFSTSBTb0NzCkZvbGxvdyBMaW5hcm86IEZhY2Vib29rIHwgVHdpdHRlciB8IEJsb2cKCl9f\n"
+ "X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMg\n"
+ "bWFpbGluZyBsaXN0CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNl\n"
+ bnNvcnMub3JnL21haWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw=
 
-d1904caae7b5119958d3b8e48d3a2e8fa53bc22f1f6dc3a8c2b6ee0bea28b9f3
+7fe9c2d85519c49ad85c86b7808b9066c674eb88f6eb17075d093a4bc28f9d49

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.