All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <1510587328.2699.8.camel@synopsys.com>

diff --git a/a/1.txt b/N1/1.txt
index 949f1f5..b3e1e4e 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,200 +1,126 @@
-Hi Stephen, Michael,
-
-Please treat this message as a polite reminder to review my patch.
-It would be really nice to see this patch in 4.15.
-
-Thanks.
-
-On Fri, 2017-09-29 at 16:13 +0300, Eugeniy Paltsev wrote:
-> Add option to set initial output frequency of plls via
-> "clock-frequency" property in pll's device tree node.
-> This frequency will be set while pll driver probed.
-> 
-> The usage example is setting CPU clock frequency on boot
-> See discussion:
-> https://www.mail-archive.com/linux-snps-arc@lists.infradead.org/msg02689.html
-> 
-> Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
-> ---
->  .../bindings/clock/snps,hsdk-pll-clock.txt         |  5 ++++
->  .../devicetree/bindings/clock/snps,pll-clock.txt   |  5 ++++
->  drivers/clk/axs10x/pll_clock.c                     | 34 ++++++++++++++++++++--
->  drivers/clk/clk-hsdk-pll.c                         | 34 ++++++++++++++++++++--
->  4 files changed, 74 insertions(+), 4 deletions(-)
-> 
-> diff --git a/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt b/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt
-> index c56c755..5703059 100644
-> --- a/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt
-> +++ b/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt
-> @@ -13,6 +13,10 @@ Required properties:
->  - clocks: shall be the input parent clock phandle for the PLL.
->  - #clock-cells: from common clock binding; Should always be set to 0.
->  
-> +Optional properties:
-> +- clock-frequency: output frequency generated by pll in Hz which will be set
-> +while probing. Should be a single cell.
-> +
->  Example:
->  	input_clk: input-clk {
->  		clock-frequency = <33333333>;
-> @@ -25,4 +29,5 @@ Example:
->  		reg = <0x00 0x10>;
->  		#clock-cells = <0>;
->  		clocks = <&input_clk>;
-> +		clock-frequency = <1000000000>;
->  	};
-> diff --git a/Documentation/devicetree/bindings/clock/snps,pll-clock.txt b/Documentation/devicetree/bindings/clock/snps,pll-clock.txt
-> index 11fe487..5908f99 100644
-> --- a/Documentation/devicetree/bindings/clock/snps,pll-clock.txt
-> +++ b/Documentation/devicetree/bindings/clock/snps,pll-clock.txt
-> @@ -13,6 +13,10 @@ registers and second for corresponding LOCK CGU register.
->  - clocks: shall be the input parent clock phandle for the PLL.
->  - #clock-cells: from common clock binding; Should always be set to 0.
->  
-> +Optional properties:
-> +- clock-frequency: output frequency generated by pll in Hz which will be set
-> +while probing. Should be a single cell.
-> +
->  Example:
->  	input-clk: input-clk {
->  		clock-frequency = <33333333>;
-> @@ -25,4 +29,5 @@ Example:
->  		reg = <0x80 0x10>, <0x100 0x10>;
->  		#clock-cells = <0>;
->  		clocks = <&input-clk>;
-> +		clock-frequency = <100000000>;
->  	};
-> diff --git a/drivers/clk/axs10x/pll_clock.c b/drivers/clk/axs10x/pll_clock.c
-> index 25d8c24..3f4345d 100644
-> --- a/drivers/clk/axs10x/pll_clock.c
-> +++ b/drivers/clk/axs10x/pll_clock.c
-> @@ -11,6 +11,7 @@
->  #include <linux/platform_device.h>
->  #include <linux/module.h>
->  #include <linux/clk-provider.h>
-> +#include <linux/clk.h>
->  #include <linux/delay.h>
->  #include <linux/err.h>
->  #include <linux/device.h>
-> @@ -215,6 +216,25 @@ static const struct clk_ops axs10x_pll_ops = {
->  	.set_rate = axs10x_pll_set_rate,
->  };
->  
-> +static void set_pll_rate_from_of(struct clk *clk, struct device_node *node)
-> +{
-> +	u32 requested_rate;
-> +
-> +	/* If we specify initial pll output frequency try to set it */
-> +	if (of_property_read_u32(node, "clock-frequency", &requested_rate))
-> +		return;
-> +
-> +	if (clk_prepare_enable(clk)) {
-> +		pr_err("Cannot enable %s clock.\n", node->name);
-> +		return;
-> +	}
-> +
-> +	if (clk_set_rate(clk, requested_rate))
-> +		pr_err("Cannot set %s clock rate.\n", node->name);
-> +
-> +	pr_debug("Set %s clock to %u\n", node->name, requested_rate);
-> +}
-> +
->  static int axs10x_pll_clk_probe(struct platform_device *pdev)
->  {
->  	struct device *dev = &pdev->dev;
-> @@ -258,8 +278,15 @@ static int axs10x_pll_clk_probe(struct platform_device *pdev)
->  		return ret;
->  	}
->  
-> -	return of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,
-> -			&pll_clk->hw);
-> +	ret =  of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,
-> +				      &pll_clk->hw);
-> +	if (ret)
-> +		return ret;
-> +
-> +	/* If we specify initial pll output frequency in dts try to set it */
-> +	set_pll_rate_from_of(pll_clk->hw.clk, dev->of_node);
-> +
-> +	return 0;
->  }
->  
->  static int axs10x_pll_clk_remove(struct platform_device *pdev)
-> @@ -311,6 +338,9 @@ static void __init of_axs10x_pll_clk_setup(struct device_node *node)
->  		goto err_unregister_clk;
->  	}
->  
-> +	/* If we specify initial pll output frequency in dts try to set it */
-> +	set_pll_rate_from_of(pll_clk->hw.clk, node);
-> +
->  	return;
->  
->  err_unregister_clk:
-> diff --git a/drivers/clk/clk-hsdk-pll.c b/drivers/clk/clk-hsdk-pll.c
-> index bbf23717..74fd006 100644
-> --- a/drivers/clk/clk-hsdk-pll.c
-> +++ b/drivers/clk/clk-hsdk-pll.c
-> @@ -9,6 +9,7 @@
->   */
->  
->  #include <linux/clk-provider.h>
-> +#include <linux/clk.h>
->  #include <linux/delay.h>
->  #include <linux/device.h>
->  #include <linux/err.h>
-> @@ -295,6 +296,25 @@ static const struct clk_ops hsdk_pll_ops = {
->  	.set_rate = hsdk_pll_set_rate,
->  };
->  
-> +static void set_pll_rate_from_of(struct clk *clk, struct device_node *node)
-> +{
-> +	u32 requested_rate;
-> +
-> +	/* If we specify initial pll output frequency try to set it */
-> +	if (of_property_read_u32(node, "clock-frequency", &requested_rate))
-> +		return;
-> +
-> +	if (clk_prepare_enable(clk)) {
-> +		pr_err("Cannot enable %s clock.\n", node->name);
-> +		return;
-> +	}
-> +
-> +	if (clk_set_rate(clk, requested_rate))
-> +		pr_err("Cannot set %s clock rate.\n", node->name);
-> +
-> +	pr_debug("Set %s clock to %u\n", node->name, requested_rate);
-> +}
-> +
->  static int hsdk_pll_clk_probe(struct platform_device *pdev)
->  {
->  	int ret;
-> @@ -340,8 +360,15 @@ static int hsdk_pll_clk_probe(struct platform_device *pdev)
->  		return ret;
->  	}
->  
-> -	return of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,
-> -			&pll_clk->hw);
-> +	ret =  of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,
-> +				      &pll_clk->hw);
-> +	if (ret)
-> +		return ret;
-> +
-> +	/* If we specify initial pll output frequency in dts try to set it */
-> +	set_pll_rate_from_of(pll_clk->hw.clk, dev->of_node);
-> +
-> +	return 0;
->  }
->  
->  static int hsdk_pll_clk_remove(struct platform_device *pdev)
-> @@ -400,6 +427,9 @@ static void __init of_hsdk_pll_clk_setup(struct device_node *node)
->  		goto err_unmap_spec_regs;
->  	}
->  
-> +	/* If we specify initial pll output frequency in dts try to set it */
-> +	set_pll_rate_from_of(pll_clk->hw.clk, node);
-> +
->  	return;
->  
->  err_unmap_spec_regs:
--- 
- Eugeniy Paltsev
\ No newline at end of file
+SGkgU3RlcGhlbiwgTWljaGFlbCwNCg0KUGxlYXNlIHRyZWF0IHRoaXMgbWVzc2FnZSBhcyBhIHBv
+bGl0ZSByZW1pbmRlciB0byByZXZpZXcgbXkgcGF0Y2guDQpJdCB3b3VsZCBiZSByZWFsbHkgbmlj
+ZSB0byBzZWUgdGhpcyBwYXRjaCBpbiA0LjE1Lg0KDQpUaGFua3MuDQoNCk9uIEZyaSwgMjAxNy0w
+OS0yOSBhdCAxNjoxMyArMDMwMCwgRXVnZW5peSBQYWx0c2V2IHdyb3RlOg0KPiBBZGQgb3B0aW9u
+IHRvIHNldCBpbml0aWFsIG91dHB1dCBmcmVxdWVuY3kgb2YgcGxscyB2aWENCj4gImNsb2NrLWZy
+ZXF1ZW5jeSIgcHJvcGVydHkgaW4gcGxsJ3MgZGV2aWNlIHRyZWUgbm9kZS4NCj4gVGhpcyBmcmVx
+dWVuY3kgd2lsbCBiZSBzZXQgd2hpbGUgcGxsIGRyaXZlciBwcm9iZWQuDQo+IA0KPiBUaGUgdXNh
+Z2UgZXhhbXBsZSBpcyBzZXR0aW5nIENQVSBjbG9jayBmcmVxdWVuY3kgb24gYm9vdA0KPiBTZWUg
+ZGlzY3Vzc2lvbjoNCj4gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9saW51eC1zbnBzLWFy
+Y0BsaXN0cy5pbmZyYWRlYWQub3JnL21zZzAyNjg5Lmh0bWwNCj4gDQo+IFNpZ25lZC1vZmYtYnk6
+IEV1Z2VuaXkgUGFsdHNldiA8RXVnZW5peS5QYWx0c2V2QHN5bm9wc3lzLmNvbT4NCj4gLS0tDQo+
+IMKgLi4uL2JpbmRpbmdzL2Nsb2NrL3NucHMsaHNkay1wbGwtY2xvY2sudHh0wqDCoMKgwqDCoMKg
+wqDCoMKgfMKgwqA1ICsrKysNCj4gwqAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zbnBz
+LHBsbC1jbG9jay50eHTCoMKgwqB8wqDCoDUgKysrKw0KPiDCoGRyaXZlcnMvY2xrL2F4czEweC9w
+bGxfY2xvY2suY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgMzQg
+KysrKysrKysrKysrKysrKysrKystLQ0KPiDCoGRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jwqDC
+oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDM0ICsrKysr
+KysrKysrKysrKysrKysrLS0NCj4gwqA0IGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyks
+IDQgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0
+cmVlL2JpbmRpbmdzL2Nsb2NrL3NucHMsaHNkay1wbGwtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlv
+bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3NucHMsaHNkay1wbGwtY2xvY2sudHh0DQo+IGlu
+ZGV4IGM1NmM3NTUuLjU3MDMwNTkgMTAwNjQ0DQo+IC0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNl
+dHJlZS9iaW5kaW5ncy9jbG9jay9zbnBzLGhzZGstcGxsLWNsb2NrLnR4dA0KPiArKysgYi9Eb2N1
+bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc25wcyxoc2RrLXBsbC1jbG9jay50
+eHQNCj4gQEAgLTEzLDYgKzEzLDEwIEBAIFJlcXVpcmVkIHByb3BlcnRpZXM6DQo+IMKgLSBjbG9j
+a3M6IHNoYWxsIGJlIHRoZSBpbnB1dCBwYXJlbnQgY2xvY2sgcGhhbmRsZSBmb3IgdGhlIFBMTC4N
+Cj4gwqAtICNjbG9jay1jZWxsczogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgU2hvdWxkIGFs
+d2F5cyBiZSBzZXQgdG8gMC4NCj4gwqANCj4gK09wdGlvbmFsIHByb3BlcnRpZXM6DQo+ICstIGNs
+b2NrLWZyZXF1ZW5jeTogb3V0cHV0IGZyZXF1ZW5jeSBnZW5lcmF0ZWQgYnkgcGxsIGluIEh6IHdo
+aWNoIHdpbGwgYmUgc2V0DQo+ICt3aGlsZSBwcm9iaW5nLiBTaG91bGQgYmUgYSBzaW5nbGUgY2Vs
+bC4NCj4gKw0KPiDCoEV4YW1wbGU6DQo+IMKgCWlucHV0X2NsazogaW5wdXQtY2xrIHsNCj4gwqAJ
+CWNsb2NrLWZyZXF1ZW5jeSA9IDwzMzMzMzMzMz47DQo+IEBAIC0yNSw0ICsyOSw1IEBAIEV4YW1w
+bGU6DQo+IMKgCQlyZWcgPSA8MHgwMCAweDEwPjsNCj4gwqAJCSNjbG9jay1jZWxscyA9IDwwPjsN
+Cj4gwqAJCWNsb2NrcyA9IDwmaW5wdXRfY2xrPjsNCj4gKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEw
+MDAwMDAwMDA+Ow0KPiDCoAl9Ow0KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0
+cmVlL2JpbmRpbmdzL2Nsb2NrL3NucHMscGxsLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2
+aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zbnBzLHBsbC1jbG9jay50eHQNCj4gaW5kZXggMTFmZTQ4
+Ny4uNTkwOGY5OSAxMDA2NDQNCj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
+bmdzL2Nsb2NrL3NucHMscGxsLWNsb2NrLnR4dA0KPiArKysgYi9Eb2N1bWVudGF0aW9uL2Rldmlj
+ZXRyZWUvYmluZGluZ3MvY2xvY2svc25wcyxwbGwtY2xvY2sudHh0DQo+IEBAIC0xMyw2ICsxMywx
+MCBAQCByZWdpc3RlcnMgYW5kIHNlY29uZCBmb3IgY29ycmVzcG9uZGluZyBMT0NLIENHVSByZWdp
+c3Rlci4NCj4gwqAtIGNsb2Nrczogc2hhbGwgYmUgdGhlIGlucHV0IHBhcmVudCBjbG9jayBwaGFu
+ZGxlIGZvciB0aGUgUExMLg0KPiDCoC0gI2Nsb2NrLWNlbGxzOiBmcm9tIGNvbW1vbiBjbG9jayBi
+aW5kaW5nOyBTaG91bGQgYWx3YXlzIGJlIHNldCB0byAwLg0KPiDCoA0KPiArT3B0aW9uYWwgcHJv
+cGVydGllczoNCj4gKy0gY2xvY2stZnJlcXVlbmN5OiBvdXRwdXQgZnJlcXVlbmN5IGdlbmVyYXRl
+ZCBieSBwbGwgaW4gSHogd2hpY2ggd2lsbCBiZSBzZXQNCj4gK3doaWxlIHByb2JpbmcuIFNob3Vs
+ZCBiZSBhIHNpbmdsZSBjZWxsLg0KPiArDQo+IMKgRXhhbXBsZToNCj4gwqAJaW5wdXQtY2xrOiBp
+bnB1dC1jbGsgew0KPiDCoAkJY2xvY2stZnJlcXVlbmN5ID0gPDMzMzMzMzMzPjsNCj4gQEAgLTI1
+LDQgKzI5LDUgQEAgRXhhbXBsZToNCj4gwqAJCXJlZyA9IDwweDgwIDB4MTA+LCA8MHgxMDAgMHgx
+MD47DQo+IMKgCQkjY2xvY2stY2VsbHMgPSA8MD47DQo+IMKgCQljbG9ja3MgPSA8JmlucHV0LWNs
+az47DQo+ICsJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMDAwMDAwMDA+Ow0KPiDCoAl9Ow0KPiBkaWZm
+IC0tZ2l0IGEvZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jIGIvZHJpdmVycy9jbGsvYXhz
+MTB4L3BsbF9jbG9jay5jDQo+IGluZGV4IDI1ZDhjMjQuLjNmNDM0NWQgMTAwNjQ0DQo+IC0tLSBh
+L2RyaXZlcnMvY2xrL2F4czEweC9wbGxfY2xvY2suYw0KPiArKysgYi9kcml2ZXJzL2Nsay9heHMx
+MHgvcGxsX2Nsb2NrLmMNCj4gQEAgLTExLDYgKzExLDcgQEANCj4gwqAjaW5jbHVkZSA8bGludXgv
+cGxhdGZvcm1fZGV2aWNlLmg+DQo+IMKgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiDCoCNp
+bmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4N
+Cj4gwqAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gwqAjaW5jbHVkZSA8bGludXgvZXJyLmg+
+DQo+IMKgI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KPiBAQCAtMjE1LDYgKzIxNiwyNSBAQCBz
+dGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgYXhzMTB4X3BsbF9vcHMgPSB7DQo+IMKgCS5zZXRf
+cmF0ZSA9IGF4czEweF9wbGxfc2V0X3JhdGUsDQo+IMKgfTsNCj4gwqANCj4gK3N0YXRpYyB2b2lk
+IHNldF9wbGxfcmF0ZV9mcm9tX29mKHN0cnVjdCBjbGsgKmNsaywgc3RydWN0IGRldmljZV9ub2Rl
+ICpub2RlKQ0KPiArew0KPiArCXUzMiByZXF1ZXN0ZWRfcmF0ZTsNCj4gKw0KPiArCS8qIElmIHdl
+IHNwZWNpZnkgaW5pdGlhbCBwbGwgb3V0cHV0IGZyZXF1ZW5jeSB0cnkgdG8gc2V0IGl0ICovDQo+
+ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJjbG9jay1mcmVxdWVuY3kiLCAmcmVx
+dWVzdGVkX3JhdGUpKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlpZiAoY2xrX3ByZXBhcmVfZW5h
+YmxlKGNsaykpIHsNCj4gKwkJcHJfZXJyKCJDYW5ub3QgZW5hYmxlICVzIGNsb2NrLlxuIiwgbm9k
+ZS0+bmFtZSk7DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICsNCj4gKwlpZiAoY2xrX3NldF9yYXRl
+KGNsaywgcmVxdWVzdGVkX3JhdGUpKQ0KPiArCQlwcl9lcnIoIkNhbm5vdCBzZXQgJXMgY2xvY2sg
+cmF0ZS5cbiIsIG5vZGUtPm5hbWUpOw0KPiArDQo+ICsJcHJfZGVidWcoIlNldCAlcyBjbG9jayB0
+byAldVxuIiwgbm9kZS0+bmFtZSwgcmVxdWVzdGVkX3JhdGUpOw0KPiArfQ0KPiArDQo+IMKgc3Rh
+dGljIGludCBheHMxMHhfcGxsX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2
+KQ0KPiDCoHsNCj4gwqAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gQEAgLTI1
+OCw4ICsyNzgsMTUgQEAgc3RhdGljIGludCBheHMxMHhfcGxsX2Nsa19wcm9iZShzdHJ1Y3QgcGxh
+dGZvcm1fZGV2aWNlICpwZGV2KQ0KPiDCoAkJcmV0dXJuIHJldDsNCj4gwqAJfQ0KPiDCoA0KPiAt
+CXJldHVybiBvZl9jbGtfYWRkX2h3X3Byb3ZpZGVyKGRldi0+b2Zfbm9kZSwgb2ZfY2xrX2h3X3Np
+bXBsZV9nZXQsDQo+IC0JCQkmcGxsX2Nsay0+aHcpOw0KPiArCXJldCA9wqDCoG9mX2Nsa19hZGRf
+aHdfcHJvdmlkZXIoZGV2LT5vZl9ub2RlLCBvZl9jbGtfaHdfc2ltcGxlX2dldCwNCj4gKwkJCQnC
+oMKgwqDCoMKgwqAmcGxsX2Nsay0+aHcpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7
+DQo+ICsNCj4gKwkvKiBJZiB3ZSBzcGVjaWZ5IGluaXRpYWwgcGxsIG91dHB1dCBmcmVxdWVuY3kg
+aW4gZHRzIHRyeSB0byBzZXQgaXQgKi8NCj4gKwlzZXRfcGxsX3JhdGVfZnJvbV9vZihwbGxfY2xr
+LT5ody5jbGssIGRldi0+b2Zfbm9kZSk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gwqB9DQo+IMKg
+DQo+IMKgc3RhdGljIGludCBheHMxMHhfcGxsX2Nsa19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl
+dmljZSAqcGRldikNCj4gQEAgLTMxMSw2ICszMzgsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgb2Zf
+YXhzMTB4X3BsbF9jbGtfc2V0dXAoc3RydWN0IGRldmljZV9ub2RlICpub2RlKQ0KPiDCoAkJZ290
+byBlcnJfdW5yZWdpc3Rlcl9jbGs7DQo+IMKgCX0NCj4gwqANCj4gKwkvKiBJZiB3ZSBzcGVjaWZ5
+IGluaXRpYWwgcGxsIG91dHB1dCBmcmVxdWVuY3kgaW4gZHRzIHRyeSB0byBzZXQgaXQgKi8NCj4g
+KwlzZXRfcGxsX3JhdGVfZnJvbV9vZihwbGxfY2xrLT5ody5jbGssIG5vZGUpOw0KPiArDQo+IMKg
+CXJldHVybjsNCj4gwqANCj4gwqBlcnJfdW5yZWdpc3Rlcl9jbGs6DQo+IGRpZmYgLS1naXQgYS9k
+cml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYyBiL2RyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jDQo+
+IGluZGV4IGJiZjIzNzE3Li43NGZkMDA2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2Nsay9jbGst
+aHNkay1wbGwuYw0KPiArKysgYi9kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYw0KPiBAQCAtOSw2
+ICs5LDcgQEANCj4gwqAgKi8NCj4gwqANCj4gwqAjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVy
+Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+IMKgI2luY2x1ZGUgPGxpbnV4L2RlbGF5
+Lmg+DQo+IMKgI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KPiDCoCNpbmNsdWRlIDxsaW51eC9l
+cnIuaD4NCj4gQEAgLTI5NSw2ICsyOTYsMjUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3Bz
+IGhzZGtfcGxsX29wcyA9IHsNCj4gwqAJLnNldF9yYXRlID0gaHNka19wbGxfc2V0X3JhdGUsDQo+
+IMKgfTsNCj4gwqANCj4gK3N0YXRpYyB2b2lkIHNldF9wbGxfcmF0ZV9mcm9tX29mKHN0cnVjdCBj
+bGsgKmNsaywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKQ0KPiArew0KPiArCXUzMiByZXF1ZXN0
+ZWRfcmF0ZTsNCj4gKw0KPiArCS8qIElmIHdlIHNwZWNpZnkgaW5pdGlhbCBwbGwgb3V0cHV0IGZy
+ZXF1ZW5jeSB0cnkgdG8gc2V0IGl0ICovDQo+ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5v
+ZGUsICJjbG9jay1mcmVxdWVuY3kiLCAmcmVxdWVzdGVkX3JhdGUpKQ0KPiArCQlyZXR1cm47DQo+
+ICsNCj4gKwlpZiAoY2xrX3ByZXBhcmVfZW5hYmxlKGNsaykpIHsNCj4gKwkJcHJfZXJyKCJDYW5u
+b3QgZW5hYmxlICVzIGNsb2NrLlxuIiwgbm9kZS0+bmFtZSk7DQo+ICsJCXJldHVybjsNCj4gKwl9
+DQo+ICsNCj4gKwlpZiAoY2xrX3NldF9yYXRlKGNsaywgcmVxdWVzdGVkX3JhdGUpKQ0KPiArCQlw
+cl9lcnIoIkNhbm5vdCBzZXQgJXMgY2xvY2sgcmF0ZS5cbiIsIG5vZGUtPm5hbWUpOw0KPiArDQo+
+ICsJcHJfZGVidWcoIlNldCAlcyBjbG9jayB0byAldVxuIiwgbm9kZS0+bmFtZSwgcmVxdWVzdGVk
+X3JhdGUpOw0KPiArfQ0KPiArDQo+IMKgc3RhdGljIGludCBoc2RrX3BsbF9jbGtfcHJvYmUoc3Ry
+dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gwqB7DQo+IMKgCWludCByZXQ7DQo+IEBAIC0z
+NDAsOCArMzYwLDE1IEBAIHN0YXRpYyBpbnQgaHNka19wbGxfY2xrX3Byb2JlKHN0cnVjdCBwbGF0
+Zm9ybV9kZXZpY2UgKnBkZXYpDQo+IMKgCQlyZXR1cm4gcmV0Ow0KPiDCoAl9DQo+IMKgDQo+IC0J
+cmV0dXJuIG9mX2Nsa19hZGRfaHdfcHJvdmlkZXIoZGV2LT5vZl9ub2RlLCBvZl9jbGtfaHdfc2lt
+cGxlX2dldCwNCj4gLQkJCSZwbGxfY2xrLT5odyk7DQo+ICsJcmV0ID3CoMKgb2ZfY2xrX2FkZF9o
+d19wcm92aWRlcihkZXYtPm9mX25vZGUsIG9mX2Nsa19od19zaW1wbGVfZ2V0LA0KPiArCQkJCcKg
+wqDCoMKgwqDCoCZwbGxfY2xrLT5odyk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsN
+Cj4gKw0KPiArCS8qIElmIHdlIHNwZWNpZnkgaW5pdGlhbCBwbGwgb3V0cHV0IGZyZXF1ZW5jeSBp
+biBkdHMgdHJ5IHRvIHNldCBpdCAqLw0KPiArCXNldF9wbGxfcmF0ZV9mcm9tX29mKHBsbF9jbGst
+Pmh3LmNsaywgZGV2LT5vZl9ub2RlKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiDCoH0NCj4gwqAN
+Cj4gwqBzdGF0aWMgaW50IGhzZGtfcGxsX2Nsa19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj
+ZSAqcGRldikNCj4gQEAgLTQwMCw2ICs0MjcsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgb2ZfaHNk
+a19wbGxfY2xrX3NldHVwKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkNCj4gwqAJCWdvdG8gZXJy
+X3VubWFwX3NwZWNfcmVnczsNCj4gwqAJfQ0KPiDCoA0KPiArCS8qIElmIHdlIHNwZWNpZnkgaW5p
+dGlhbCBwbGwgb3V0cHV0IGZyZXF1ZW5jeSBpbiBkdHMgdHJ5IHRvIHNldCBpdCAqLw0KPiArCXNl
+dF9wbGxfcmF0ZV9mcm9tX29mKHBsbF9jbGstPmh3LmNsaywgbm9kZSk7DQo+ICsNCj4gwqAJcmV0
+dXJuOw0KPiDCoA0KPiDCoGVycl91bm1hcF9zcGVjX3JlZ3M6DQotLSANCsKgRXVnZW5peSBQYWx0
+c2V2
\ No newline at end of file
diff --git a/a/content_digest b/N1/content_digest
index 8728207..efac546 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -28,206 +28,132 @@
   "b\0"
 ]
 [
-  "Hi Stephen, Michael,\n",
-  "\n",
-  "Please treat this message as a polite reminder to review my patch.\n",
-  "It would be really nice to see this patch in 4.15.\n",
-  "\n",
-  "Thanks.\n",
-  "\n",
-  "On Fri, 2017-09-29 at 16:13 +0300, Eugeniy Paltsev wrote:\n",
-  "> Add option to set initial output frequency of plls via\n",
-  "> \"clock-frequency\" property in pll's device tree node.\n",
-  "> This frequency will be set while pll driver probed.\n",
-  "> \n",
-  "> The usage example is setting CPU clock frequency on boot\n",
-  "> See discussion:\n",
-  "> https://www.mail-archive.com/linux-snps-arc\@lists.infradead.org/msg02689.html\n",
-  "> \n",
-  "> Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev\@synopsys.com>\n",
-  "> ---\n",
-  "> \302\240.../bindings/clock/snps,hsdk-pll-clock.txt\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2405 ++++\n",
-  "> \302\240.../devicetree/bindings/clock/snps,pll-clock.txt\302\240\302\240\302\240|\302\240\302\2405 ++++\n",
-  "> \302\240drivers/clk/axs10x/pll_clock.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 34 ++++++++++++++++++++--\n",
-  "> \302\240drivers/clk/clk-hsdk-pll.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 34 ++++++++++++++++++++--\n",
-  "> \302\2404 files changed, 74 insertions(+), 4 deletions(-)\n",
-  "> \n",
-  "> diff --git a/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt b/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt\n",
-  "> index c56c755..5703059 100644\n",
-  "> --- a/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt\n",
-  "> +++ b/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt\n",
-  "> \@\@ -13,6 +13,10 \@\@ Required properties:\n",
-  "> \302\240- clocks: shall be the input parent clock phandle for the PLL.\n",
-  "> \302\240- #clock-cells: from common clock binding; Should always be set to 0.\n",
-  "> \302\240\n",
-  "> +Optional properties:\n",
-  "> +- clock-frequency: output frequency generated by pll in Hz which will be set\n",
-  "> +while probing. Should be a single cell.\n",
-  "> +\n",
-  "> \302\240Example:\n",
-  "> \302\240\tinput_clk: input-clk {\n",
-  "> \302\240\t\tclock-frequency = <33333333>;\n",
-  "> \@\@ -25,4 +29,5 \@\@ Example:\n",
-  "> \302\240\t\treg = <0x00 0x10>;\n",
-  "> \302\240\t\t#clock-cells = <0>;\n",
-  "> \302\240\t\tclocks = <&input_clk>;\n",
-  "> +\t\tclock-frequency = <1000000000>;\n",
-  "> \302\240\t};\n",
-  "> diff --git a/Documentation/devicetree/bindings/clock/snps,pll-clock.txt b/Documentation/devicetree/bindings/clock/snps,pll-clock.txt\n",
-  "> index 11fe487..5908f99 100644\n",
-  "> --- a/Documentation/devicetree/bindings/clock/snps,pll-clock.txt\n",
-  "> +++ b/Documentation/devicetree/bindings/clock/snps,pll-clock.txt\n",
-  "> \@\@ -13,6 +13,10 \@\@ registers and second for corresponding LOCK CGU register.\n",
-  "> \302\240- clocks: shall be the input parent clock phandle for the PLL.\n",
-  "> \302\240- #clock-cells: from common clock binding; Should always be set to 0.\n",
-  "> \302\240\n",
-  "> +Optional properties:\n",
-  "> +- clock-frequency: output frequency generated by pll in Hz which will be set\n",
-  "> +while probing. Should be a single cell.\n",
-  "> +\n",
-  "> \302\240Example:\n",
-  "> \302\240\tinput-clk: input-clk {\n",
-  "> \302\240\t\tclock-frequency = <33333333>;\n",
-  "> \@\@ -25,4 +29,5 \@\@ Example:\n",
-  "> \302\240\t\treg = <0x80 0x10>, <0x100 0x10>;\n",
-  "> \302\240\t\t#clock-cells = <0>;\n",
-  "> \302\240\t\tclocks = <&input-clk>;\n",
-  "> +\t\tclock-frequency = <100000000>;\n",
-  "> \302\240\t};\n",
-  "> diff --git a/drivers/clk/axs10x/pll_clock.c b/drivers/clk/axs10x/pll_clock.c\n",
-  "> index 25d8c24..3f4345d 100644\n",
-  "> --- a/drivers/clk/axs10x/pll_clock.c\n",
-  "> +++ b/drivers/clk/axs10x/pll_clock.c\n",
-  "> \@\@ -11,6 +11,7 \@\@\n",
-  "> \302\240#include <linux/platform_device.h>\n",
-  "> \302\240#include <linux/module.h>\n",
-  "> \302\240#include <linux/clk-provider.h>\n",
-  "> +#include <linux/clk.h>\n",
-  "> \302\240#include <linux/delay.h>\n",
-  "> \302\240#include <linux/err.h>\n",
-  "> \302\240#include <linux/device.h>\n",
-  "> \@\@ -215,6 +216,25 \@\@ static const struct clk_ops axs10x_pll_ops = {\n",
-  "> \302\240\t.set_rate = axs10x_pll_set_rate,\n",
-  "> \302\240};\n",
-  "> \302\240\n",
-  "> +static void set_pll_rate_from_of(struct clk *clk, struct device_node *node)\n",
-  "> +{\n",
-  "> +\tu32 requested_rate;\n",
-  "> +\n",
-  "> +\t/* If we specify initial pll output frequency try to set it */\n",
-  "> +\tif (of_property_read_u32(node, \"clock-frequency\", &requested_rate))\n",
-  "> +\t\treturn;\n",
-  "> +\n",
-  "> +\tif (clk_prepare_enable(clk)) {\n",
-  "> +\t\tpr_err(\"Cannot enable %s clock.\\n\", node->name);\n",
-  "> +\t\treturn;\n",
-  "> +\t}\n",
-  "> +\n",
-  "> +\tif (clk_set_rate(clk, requested_rate))\n",
-  "> +\t\tpr_err(\"Cannot set %s clock rate.\\n\", node->name);\n",
-  "> +\n",
-  "> +\tpr_debug(\"Set %s clock to %u\\n\", node->name, requested_rate);\n",
-  "> +}\n",
-  "> +\n",
-  "> \302\240static int axs10x_pll_clk_probe(struct platform_device *pdev)\n",
-  "> \302\240{\n",
-  "> \302\240\tstruct device *dev = &pdev->dev;\n",
-  "> \@\@ -258,8 +278,15 \@\@ static int axs10x_pll_clk_probe(struct platform_device *pdev)\n",
-  "> \302\240\t\treturn ret;\n",
-  "> \302\240\t}\n",
-  "> \302\240\n",
-  "> -\treturn of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,\n",
-  "> -\t\t\t&pll_clk->hw);\n",
-  "> +\tret =\302\240\302\240of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,\n",
-  "> +\t\t\t\t\302\240\302\240\302\240\302\240\302\240\302\240&pll_clk->hw);\n",
-  "> +\tif (ret)\n",
-  "> +\t\treturn ret;\n",
-  "> +\n",
-  "> +\t/* If we specify initial pll output frequency in dts try to set it */\n",
-  "> +\tset_pll_rate_from_of(pll_clk->hw.clk, dev->of_node);\n",
-  "> +\n",
-  "> +\treturn 0;\n",
-  "> \302\240}\n",
-  "> \302\240\n",
-  "> \302\240static int axs10x_pll_clk_remove(struct platform_device *pdev)\n",
-  "> \@\@ -311,6 +338,9 \@\@ static void __init of_axs10x_pll_clk_setup(struct device_node *node)\n",
-  "> \302\240\t\tgoto err_unregister_clk;\n",
-  "> \302\240\t}\n",
-  "> \302\240\n",
-  "> +\t/* If we specify initial pll output frequency in dts try to set it */\n",
-  "> +\tset_pll_rate_from_of(pll_clk->hw.clk, node);\n",
-  "> +\n",
-  "> \302\240\treturn;\n",
-  "> \302\240\n",
-  "> \302\240err_unregister_clk:\n",
-  "> diff --git a/drivers/clk/clk-hsdk-pll.c b/drivers/clk/clk-hsdk-pll.c\n",
-  "> index bbf23717..74fd006 100644\n",
-  "> --- a/drivers/clk/clk-hsdk-pll.c\n",
-  "> +++ b/drivers/clk/clk-hsdk-pll.c\n",
-  "> \@\@ -9,6 +9,7 \@\@\n",
-  "> \302\240 */\n",
-  "> \302\240\n",
-  "> \302\240#include <linux/clk-provider.h>\n",
-  "> +#include <linux/clk.h>\n",
-  "> \302\240#include <linux/delay.h>\n",
-  "> \302\240#include <linux/device.h>\n",
-  "> \302\240#include <linux/err.h>\n",
-  "> \@\@ -295,6 +296,25 \@\@ static const struct clk_ops hsdk_pll_ops = {\n",
-  "> \302\240\t.set_rate = hsdk_pll_set_rate,\n",
-  "> \302\240};\n",
-  "> \302\240\n",
-  "> +static void set_pll_rate_from_of(struct clk *clk, struct device_node *node)\n",
-  "> +{\n",
-  "> +\tu32 requested_rate;\n",
-  "> +\n",
-  "> +\t/* If we specify initial pll output frequency try to set it */\n",
-  "> +\tif (of_property_read_u32(node, \"clock-frequency\", &requested_rate))\n",
-  "> +\t\treturn;\n",
-  "> +\n",
-  "> +\tif (clk_prepare_enable(clk)) {\n",
-  "> +\t\tpr_err(\"Cannot enable %s clock.\\n\", node->name);\n",
-  "> +\t\treturn;\n",
-  "> +\t}\n",
-  "> +\n",
-  "> +\tif (clk_set_rate(clk, requested_rate))\n",
-  "> +\t\tpr_err(\"Cannot set %s clock rate.\\n\", node->name);\n",
-  "> +\n",
-  "> +\tpr_debug(\"Set %s clock to %u\\n\", node->name, requested_rate);\n",
-  "> +}\n",
-  "> +\n",
-  "> \302\240static int hsdk_pll_clk_probe(struct platform_device *pdev)\n",
-  "> \302\240{\n",
-  "> \302\240\tint ret;\n",
-  "> \@\@ -340,8 +360,15 \@\@ static int hsdk_pll_clk_probe(struct platform_device *pdev)\n",
-  "> \302\240\t\treturn ret;\n",
-  "> \302\240\t}\n",
-  "> \302\240\n",
-  "> -\treturn of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,\n",
-  "> -\t\t\t&pll_clk->hw);\n",
-  "> +\tret =\302\240\302\240of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,\n",
-  "> +\t\t\t\t\302\240\302\240\302\240\302\240\302\240\302\240&pll_clk->hw);\n",
-  "> +\tif (ret)\n",
-  "> +\t\treturn ret;\n",
-  "> +\n",
-  "> +\t/* If we specify initial pll output frequency in dts try to set it */\n",
-  "> +\tset_pll_rate_from_of(pll_clk->hw.clk, dev->of_node);\n",
-  "> +\n",
-  "> +\treturn 0;\n",
-  "> \302\240}\n",
-  "> \302\240\n",
-  "> \302\240static int hsdk_pll_clk_remove(struct platform_device *pdev)\n",
-  "> \@\@ -400,6 +427,9 \@\@ static void __init of_hsdk_pll_clk_setup(struct device_node *node)\n",
-  "> \302\240\t\tgoto err_unmap_spec_regs;\n",
-  "> \302\240\t}\n",
-  "> \302\240\n",
-  "> +\t/* If we specify initial pll output frequency in dts try to set it */\n",
-  "> +\tset_pll_rate_from_of(pll_clk->hw.clk, node);\n",
-  "> +\n",
-  "> \302\240\treturn;\n",
-  "> \302\240\n",
-  "> \302\240err_unmap_spec_regs:\n",
-  "-- \n",
-  "\302\240Eugeniy Paltsev"
+  "SGkgU3RlcGhlbiwgTWljaGFlbCwNCg0KUGxlYXNlIHRyZWF0IHRoaXMgbWVzc2FnZSBhcyBhIHBv\n",
+  "bGl0ZSByZW1pbmRlciB0byByZXZpZXcgbXkgcGF0Y2guDQpJdCB3b3VsZCBiZSByZWFsbHkgbmlj\n",
+  "ZSB0byBzZWUgdGhpcyBwYXRjaCBpbiA0LjE1Lg0KDQpUaGFua3MuDQoNCk9uIEZyaSwgMjAxNy0w\n",
+  "OS0yOSBhdCAxNjoxMyArMDMwMCwgRXVnZW5peSBQYWx0c2V2IHdyb3RlOg0KPiBBZGQgb3B0aW9u\n",
+  "IHRvIHNldCBpbml0aWFsIG91dHB1dCBmcmVxdWVuY3kgb2YgcGxscyB2aWENCj4gImNsb2NrLWZy\n",
+  "ZXF1ZW5jeSIgcHJvcGVydHkgaW4gcGxsJ3MgZGV2aWNlIHRyZWUgbm9kZS4NCj4gVGhpcyBmcmVx\n",
+  "dWVuY3kgd2lsbCBiZSBzZXQgd2hpbGUgcGxsIGRyaXZlciBwcm9iZWQuDQo+IA0KPiBUaGUgdXNh\n",
+  "Z2UgZXhhbXBsZSBpcyBzZXR0aW5nIENQVSBjbG9jayBmcmVxdWVuY3kgb24gYm9vdA0KPiBTZWUg\n",
+  "ZGlzY3Vzc2lvbjoNCj4gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9saW51eC1zbnBzLWFy\n",
+  "Y0BsaXN0cy5pbmZyYWRlYWQub3JnL21zZzAyNjg5Lmh0bWwNCj4gDQo+IFNpZ25lZC1vZmYtYnk6\n",
+  "IEV1Z2VuaXkgUGFsdHNldiA8RXVnZW5peS5QYWx0c2V2QHN5bm9wc3lzLmNvbT4NCj4gLS0tDQo+\n",
+  "IMKgLi4uL2JpbmRpbmdzL2Nsb2NrL3NucHMsaHNkay1wbGwtY2xvY2sudHh0wqDCoMKgwqDCoMKg\n",
+  "wqDCoMKgfMKgwqA1ICsrKysNCj4gwqAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zbnBz\n",
+  "LHBsbC1jbG9jay50eHTCoMKgwqB8wqDCoDUgKysrKw0KPiDCoGRyaXZlcnMvY2xrL2F4czEweC9w\n",
+  "bGxfY2xvY2suY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgMzQg\n",
+  "KysrKysrKysrKysrKysrKysrKystLQ0KPiDCoGRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jwqDC\n",
+  "oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDM0ICsrKysr\n",
+  "KysrKysrKysrKysrKysrLS0NCj4gwqA0IGZpbGVzIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyks\n",
+  "IDQgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0\n",
+  "cmVlL2JpbmRpbmdzL2Nsb2NrL3NucHMsaHNkay1wbGwtY2xvY2sudHh0IGIvRG9jdW1lbnRhdGlv\n",
+  "bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3NucHMsaHNkay1wbGwtY2xvY2sudHh0DQo+IGlu\n",
+  "ZGV4IGM1NmM3NTUuLjU3MDMwNTkgMTAwNjQ0DQo+IC0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNl\n",
+  "dHJlZS9iaW5kaW5ncy9jbG9jay9zbnBzLGhzZGstcGxsLWNsb2NrLnR4dA0KPiArKysgYi9Eb2N1\n",
+  "bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc25wcyxoc2RrLXBsbC1jbG9jay50\n",
+  "eHQNCj4gQEAgLTEzLDYgKzEzLDEwIEBAIFJlcXVpcmVkIHByb3BlcnRpZXM6DQo+IMKgLSBjbG9j\n",
+  "a3M6IHNoYWxsIGJlIHRoZSBpbnB1dCBwYXJlbnQgY2xvY2sgcGhhbmRsZSBmb3IgdGhlIFBMTC4N\n",
+  "Cj4gwqAtICNjbG9jay1jZWxsczogZnJvbSBjb21tb24gY2xvY2sgYmluZGluZzsgU2hvdWxkIGFs\n",
+  "d2F5cyBiZSBzZXQgdG8gMC4NCj4gwqANCj4gK09wdGlvbmFsIHByb3BlcnRpZXM6DQo+ICstIGNs\n",
+  "b2NrLWZyZXF1ZW5jeTogb3V0cHV0IGZyZXF1ZW5jeSBnZW5lcmF0ZWQgYnkgcGxsIGluIEh6IHdo\n",
+  "aWNoIHdpbGwgYmUgc2V0DQo+ICt3aGlsZSBwcm9iaW5nLiBTaG91bGQgYmUgYSBzaW5nbGUgY2Vs\n",
+  "bC4NCj4gKw0KPiDCoEV4YW1wbGU6DQo+IMKgCWlucHV0X2NsazogaW5wdXQtY2xrIHsNCj4gwqAJ\n",
+  "CWNsb2NrLWZyZXF1ZW5jeSA9IDwzMzMzMzMzMz47DQo+IEBAIC0yNSw0ICsyOSw1IEBAIEV4YW1w\n",
+  "bGU6DQo+IMKgCQlyZWcgPSA8MHgwMCAweDEwPjsNCj4gwqAJCSNjbG9jay1jZWxscyA9IDwwPjsN\n",
+  "Cj4gwqAJCWNsb2NrcyA9IDwmaW5wdXRfY2xrPjsNCj4gKwkJY2xvY2stZnJlcXVlbmN5ID0gPDEw\n",
+  "MDAwMDAwMDA+Ow0KPiDCoAl9Ow0KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0\n",
+  "cmVlL2JpbmRpbmdzL2Nsb2NrL3NucHMscGxsLWNsb2NrLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2\n",
+  "aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zbnBzLHBsbC1jbG9jay50eHQNCj4gaW5kZXggMTFmZTQ4\n",
+  "Ny4uNTkwOGY5OSAxMDA2NDQNCj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp\n",
+  "bmdzL2Nsb2NrL3NucHMscGxsLWNsb2NrLnR4dA0KPiArKysgYi9Eb2N1bWVudGF0aW9uL2Rldmlj\n",
+  "ZXRyZWUvYmluZGluZ3MvY2xvY2svc25wcyxwbGwtY2xvY2sudHh0DQo+IEBAIC0xMyw2ICsxMywx\n",
+  "MCBAQCByZWdpc3RlcnMgYW5kIHNlY29uZCBmb3IgY29ycmVzcG9uZGluZyBMT0NLIENHVSByZWdp\n",
+  "c3Rlci4NCj4gwqAtIGNsb2Nrczogc2hhbGwgYmUgdGhlIGlucHV0IHBhcmVudCBjbG9jayBwaGFu\n",
+  "ZGxlIGZvciB0aGUgUExMLg0KPiDCoC0gI2Nsb2NrLWNlbGxzOiBmcm9tIGNvbW1vbiBjbG9jayBi\n",
+  "aW5kaW5nOyBTaG91bGQgYWx3YXlzIGJlIHNldCB0byAwLg0KPiDCoA0KPiArT3B0aW9uYWwgcHJv\n",
+  "cGVydGllczoNCj4gKy0gY2xvY2stZnJlcXVlbmN5OiBvdXRwdXQgZnJlcXVlbmN5IGdlbmVyYXRl\n",
+  "ZCBieSBwbGwgaW4gSHogd2hpY2ggd2lsbCBiZSBzZXQNCj4gK3doaWxlIHByb2JpbmcuIFNob3Vs\n",
+  "ZCBiZSBhIHNpbmdsZSBjZWxsLg0KPiArDQo+IMKgRXhhbXBsZToNCj4gwqAJaW5wdXQtY2xrOiBp\n",
+  "bnB1dC1jbGsgew0KPiDCoAkJY2xvY2stZnJlcXVlbmN5ID0gPDMzMzMzMzMzPjsNCj4gQEAgLTI1\n",
+  "LDQgKzI5LDUgQEAgRXhhbXBsZToNCj4gwqAJCXJlZyA9IDwweDgwIDB4MTA+LCA8MHgxMDAgMHgx\n",
+  "MD47DQo+IMKgCQkjY2xvY2stY2VsbHMgPSA8MD47DQo+IMKgCQljbG9ja3MgPSA8JmlucHV0LWNs\n",
+  "az47DQo+ICsJCWNsb2NrLWZyZXF1ZW5jeSA9IDwxMDAwMDAwMDA+Ow0KPiDCoAl9Ow0KPiBkaWZm\n",
+  "IC0tZ2l0IGEvZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jIGIvZHJpdmVycy9jbGsvYXhz\n",
+  "MTB4L3BsbF9jbG9jay5jDQo+IGluZGV4IDI1ZDhjMjQuLjNmNDM0NWQgMTAwNjQ0DQo+IC0tLSBh\n",
+  "L2RyaXZlcnMvY2xrL2F4czEweC9wbGxfY2xvY2suYw0KPiArKysgYi9kcml2ZXJzL2Nsay9heHMx\n",
+  "MHgvcGxsX2Nsb2NrLmMNCj4gQEAgLTExLDYgKzExLDcgQEANCj4gwqAjaW5jbHVkZSA8bGludXgv\n",
+  "cGxhdGZvcm1fZGV2aWNlLmg+DQo+IMKgI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiDCoCNp\n",
+  "bmNsdWRlIDxsaW51eC9jbGstcHJvdmlkZXIuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4N\n",
+  "Cj4gwqAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gwqAjaW5jbHVkZSA8bGludXgvZXJyLmg+\n",
+  "DQo+IMKgI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KPiBAQCAtMjE1LDYgKzIxNiwyNSBAQCBz\n",
+  "dGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgYXhzMTB4X3BsbF9vcHMgPSB7DQo+IMKgCS5zZXRf\n",
+  "cmF0ZSA9IGF4czEweF9wbGxfc2V0X3JhdGUsDQo+IMKgfTsNCj4gwqANCj4gK3N0YXRpYyB2b2lk\n",
+  "IHNldF9wbGxfcmF0ZV9mcm9tX29mKHN0cnVjdCBjbGsgKmNsaywgc3RydWN0IGRldmljZV9ub2Rl\n",
+  "ICpub2RlKQ0KPiArew0KPiArCXUzMiByZXF1ZXN0ZWRfcmF0ZTsNCj4gKw0KPiArCS8qIElmIHdl\n",
+  "IHNwZWNpZnkgaW5pdGlhbCBwbGwgb3V0cHV0IGZyZXF1ZW5jeSB0cnkgdG8gc2V0IGl0ICovDQo+\n",
+  "ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJjbG9jay1mcmVxdWVuY3kiLCAmcmVx\n",
+  "dWVzdGVkX3JhdGUpKQ0KPiArCQlyZXR1cm47DQo+ICsNCj4gKwlpZiAoY2xrX3ByZXBhcmVfZW5h\n",
+  "YmxlKGNsaykpIHsNCj4gKwkJcHJfZXJyKCJDYW5ub3QgZW5hYmxlICVzIGNsb2NrLlxuIiwgbm9k\n",
+  "ZS0+bmFtZSk7DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICsNCj4gKwlpZiAoY2xrX3NldF9yYXRl\n",
+  "KGNsaywgcmVxdWVzdGVkX3JhdGUpKQ0KPiArCQlwcl9lcnIoIkNhbm5vdCBzZXQgJXMgY2xvY2sg\n",
+  "cmF0ZS5cbiIsIG5vZGUtPm5hbWUpOw0KPiArDQo+ICsJcHJfZGVidWcoIlNldCAlcyBjbG9jayB0\n",
+  "byAldVxuIiwgbm9kZS0+bmFtZSwgcmVxdWVzdGVkX3JhdGUpOw0KPiArfQ0KPiArDQo+IMKgc3Rh\n",
+  "dGljIGludCBheHMxMHhfcGxsX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2\n",
+  "KQ0KPiDCoHsNCj4gwqAJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gQEAgLTI1\n",
+  "OCw4ICsyNzgsMTUgQEAgc3RhdGljIGludCBheHMxMHhfcGxsX2Nsa19wcm9iZShzdHJ1Y3QgcGxh\n",
+  "dGZvcm1fZGV2aWNlICpwZGV2KQ0KPiDCoAkJcmV0dXJuIHJldDsNCj4gwqAJfQ0KPiDCoA0KPiAt\n",
+  "CXJldHVybiBvZl9jbGtfYWRkX2h3X3Byb3ZpZGVyKGRldi0+b2Zfbm9kZSwgb2ZfY2xrX2h3X3Np\n",
+  "bXBsZV9nZXQsDQo+IC0JCQkmcGxsX2Nsay0+aHcpOw0KPiArCXJldCA9wqDCoG9mX2Nsa19hZGRf\n",
+  "aHdfcHJvdmlkZXIoZGV2LT5vZl9ub2RlLCBvZl9jbGtfaHdfc2ltcGxlX2dldCwNCj4gKwkJCQnC\n",
+  "oMKgwqDCoMKgwqAmcGxsX2Nsay0+aHcpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7\n",
+  "DQo+ICsNCj4gKwkvKiBJZiB3ZSBzcGVjaWZ5IGluaXRpYWwgcGxsIG91dHB1dCBmcmVxdWVuY3kg\n",
+  "aW4gZHRzIHRyeSB0byBzZXQgaXQgKi8NCj4gKwlzZXRfcGxsX3JhdGVfZnJvbV9vZihwbGxfY2xr\n",
+  "LT5ody5jbGssIGRldi0+b2Zfbm9kZSk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gwqB9DQo+IMKg\n",
+  "DQo+IMKgc3RhdGljIGludCBheHMxMHhfcGxsX2Nsa19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl\n",
+  "dmljZSAqcGRldikNCj4gQEAgLTMxMSw2ICszMzgsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgb2Zf\n",
+  "YXhzMTB4X3BsbF9jbGtfc2V0dXAoc3RydWN0IGRldmljZV9ub2RlICpub2RlKQ0KPiDCoAkJZ290\n",
+  "byBlcnJfdW5yZWdpc3Rlcl9jbGs7DQo+IMKgCX0NCj4gwqANCj4gKwkvKiBJZiB3ZSBzcGVjaWZ5\n",
+  "IGluaXRpYWwgcGxsIG91dHB1dCBmcmVxdWVuY3kgaW4gZHRzIHRyeSB0byBzZXQgaXQgKi8NCj4g\n",
+  "KwlzZXRfcGxsX3JhdGVfZnJvbV9vZihwbGxfY2xrLT5ody5jbGssIG5vZGUpOw0KPiArDQo+IMKg\n",
+  "CXJldHVybjsNCj4gwqANCj4gwqBlcnJfdW5yZWdpc3Rlcl9jbGs6DQo+IGRpZmYgLS1naXQgYS9k\n",
+  "cml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYyBiL2RyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jDQo+\n",
+  "IGluZGV4IGJiZjIzNzE3Li43NGZkMDA2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2Nsay9jbGst\n",
+  "aHNkay1wbGwuYw0KPiArKysgYi9kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYw0KPiBAQCAtOSw2\n",
+  "ICs5LDcgQEANCj4gwqAgKi8NCj4gwqANCj4gwqAjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVy\n",
+  "Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+IMKgI2luY2x1ZGUgPGxpbnV4L2RlbGF5\n",
+  "Lmg+DQo+IMKgI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KPiDCoCNpbmNsdWRlIDxsaW51eC9l\n",
+  "cnIuaD4NCj4gQEAgLTI5NSw2ICsyOTYsMjUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3Bz\n",
+  "IGhzZGtfcGxsX29wcyA9IHsNCj4gwqAJLnNldF9yYXRlID0gaHNka19wbGxfc2V0X3JhdGUsDQo+\n",
+  "IMKgfTsNCj4gwqANCj4gK3N0YXRpYyB2b2lkIHNldF9wbGxfcmF0ZV9mcm9tX29mKHN0cnVjdCBj\n",
+  "bGsgKmNsaywgc3RydWN0IGRldmljZV9ub2RlICpub2RlKQ0KPiArew0KPiArCXUzMiByZXF1ZXN0\n",
+  "ZWRfcmF0ZTsNCj4gKw0KPiArCS8qIElmIHdlIHNwZWNpZnkgaW5pdGlhbCBwbGwgb3V0cHV0IGZy\n",
+  "ZXF1ZW5jeSB0cnkgdG8gc2V0IGl0ICovDQo+ICsJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5v\n",
+  "ZGUsICJjbG9jay1mcmVxdWVuY3kiLCAmcmVxdWVzdGVkX3JhdGUpKQ0KPiArCQlyZXR1cm47DQo+\n",
+  "ICsNCj4gKwlpZiAoY2xrX3ByZXBhcmVfZW5hYmxlKGNsaykpIHsNCj4gKwkJcHJfZXJyKCJDYW5u\n",
+  "b3QgZW5hYmxlICVzIGNsb2NrLlxuIiwgbm9kZS0+bmFtZSk7DQo+ICsJCXJldHVybjsNCj4gKwl9\n",
+  "DQo+ICsNCj4gKwlpZiAoY2xrX3NldF9yYXRlKGNsaywgcmVxdWVzdGVkX3JhdGUpKQ0KPiArCQlw\n",
+  "cl9lcnIoIkNhbm5vdCBzZXQgJXMgY2xvY2sgcmF0ZS5cbiIsIG5vZGUtPm5hbWUpOw0KPiArDQo+\n",
+  "ICsJcHJfZGVidWcoIlNldCAlcyBjbG9jayB0byAldVxuIiwgbm9kZS0+bmFtZSwgcmVxdWVzdGVk\n",
+  "X3JhdGUpOw0KPiArfQ0KPiArDQo+IMKgc3RhdGljIGludCBoc2RrX3BsbF9jbGtfcHJvYmUoc3Ry\n",
+  "dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gwqB7DQo+IMKgCWludCByZXQ7DQo+IEBAIC0z\n",
+  "NDAsOCArMzYwLDE1IEBAIHN0YXRpYyBpbnQgaHNka19wbGxfY2xrX3Byb2JlKHN0cnVjdCBwbGF0\n",
+  "Zm9ybV9kZXZpY2UgKnBkZXYpDQo+IMKgCQlyZXR1cm4gcmV0Ow0KPiDCoAl9DQo+IMKgDQo+IC0J\n",
+  "cmV0dXJuIG9mX2Nsa19hZGRfaHdfcHJvdmlkZXIoZGV2LT5vZl9ub2RlLCBvZl9jbGtfaHdfc2lt\n",
+  "cGxlX2dldCwNCj4gLQkJCSZwbGxfY2xrLT5odyk7DQo+ICsJcmV0ID3CoMKgb2ZfY2xrX2FkZF9o\n",
+  "d19wcm92aWRlcihkZXYtPm9mX25vZGUsIG9mX2Nsa19od19zaW1wbGVfZ2V0LA0KPiArCQkJCcKg\n",
+  "wqDCoMKgwqDCoCZwbGxfY2xrLT5odyk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsN\n",
+  "Cj4gKw0KPiArCS8qIElmIHdlIHNwZWNpZnkgaW5pdGlhbCBwbGwgb3V0cHV0IGZyZXF1ZW5jeSBp\n",
+  "biBkdHMgdHJ5IHRvIHNldCBpdCAqLw0KPiArCXNldF9wbGxfcmF0ZV9mcm9tX29mKHBsbF9jbGst\n",
+  "Pmh3LmNsaywgZGV2LT5vZl9ub2RlKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiDCoH0NCj4gwqAN\n",
+  "Cj4gwqBzdGF0aWMgaW50IGhzZGtfcGxsX2Nsa19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj\n",
+  "ZSAqcGRldikNCj4gQEAgLTQwMCw2ICs0MjcsOSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgb2ZfaHNk\n",
+  "a19wbGxfY2xrX3NldHVwKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSkNCj4gwqAJCWdvdG8gZXJy\n",
+  "X3VubWFwX3NwZWNfcmVnczsNCj4gwqAJfQ0KPiDCoA0KPiArCS8qIElmIHdlIHNwZWNpZnkgaW5p\n",
+  "dGlhbCBwbGwgb3V0cHV0IGZyZXF1ZW5jeSBpbiBkdHMgdHJ5IHRvIHNldCBpdCAqLw0KPiArCXNl\n",
+  "dF9wbGxfcmF0ZV9mcm9tX29mKHBsbF9jbGstPmh3LmNsaywgbm9kZSk7DQo+ICsNCj4gwqAJcmV0\n",
+  "dXJuOw0KPiDCoA0KPiDCoGVycl91bm1hcF9zcGVjX3JlZ3M6DQotLSANCsKgRXVnZW5peSBQYWx0\n",
+  "c2V2"
 ]
 
-7beebb4ece846e83846691af9bcce68c862aa51aa404a96b385c91f04d9c49cb
+19d1afb0b88c8a52845288fab6c23ef67b5d464f5d523eab99ad39e5bdc1381c

diff --git a/a/1.txt b/N2/1.txt
index 949f1f5..4304691 100644
--- a/a/1.txt
+++ b/N2/1.txt
@@ -5,81 +5,81 @@ It would be really nice to see this patch in 4.15.
 
 Thanks.
 
-On Fri, 2017-09-29 at 16:13 +0300, Eugeniy Paltsev wrote:
+On Fri, 2017-09-29@16:13 +0300, Eugeniy Paltsev wrote:
 > Add option to set initial output frequency of plls via
 > "clock-frequency" property in pll's device tree node.
 > This frequency will be set while pll driver probed.
 > 
 > The usage example is setting CPU clock frequency on boot
 > See discussion:
-> https://www.mail-archive.com/linux-snps-arc@lists.infradead.org/msg02689.html
+> https://www.mail-archive.com/linux-snps-arc at lists.infradead.org/msg02689.html
 > 
-> Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
+> Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev at synopsys.com>
 > ---
->  .../bindings/clock/snps,hsdk-pll-clock.txt         |  5 ++++
->  .../devicetree/bindings/clock/snps,pll-clock.txt   |  5 ++++
->  drivers/clk/axs10x/pll_clock.c                     | 34 ++++++++++++++++++++--
->  drivers/clk/clk-hsdk-pll.c                         | 34 ++++++++++++++++++++--
->  4 files changed, 74 insertions(+), 4 deletions(-)
+> ?.../bindings/clock/snps,hsdk-pll-clock.txt?????????|??5 ++++
+> ?.../devicetree/bindings/clock/snps,pll-clock.txt???|??5 ++++
+> ?drivers/clk/axs10x/pll_clock.c?????????????????????| 34 ++++++++++++++++++++--
+> ?drivers/clk/clk-hsdk-pll.c?????????????????????????| 34 ++++++++++++++++++++--
+> ?4 files changed, 74 insertions(+), 4 deletions(-)
 > 
 > diff --git a/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt b/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt
 > index c56c755..5703059 100644
 > --- a/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt
 > +++ b/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt
 > @@ -13,6 +13,10 @@ Required properties:
->  - clocks: shall be the input parent clock phandle for the PLL.
->  - #clock-cells: from common clock binding; Should always be set to 0.
->  
+> ?- clocks: shall be the input parent clock phandle for the PLL.
+> ?- #clock-cells: from common clock binding; Should always be set to 0.
+> ?
 > +Optional properties:
 > +- clock-frequency: output frequency generated by pll in Hz which will be set
 > +while probing. Should be a single cell.
 > +
->  Example:
->  	input_clk: input-clk {
->  		clock-frequency = <33333333>;
+> ?Example:
+> ?	input_clk: input-clk {
+> ?		clock-frequency = <33333333>;
 > @@ -25,4 +29,5 @@ Example:
->  		reg = <0x00 0x10>;
->  		#clock-cells = <0>;
->  		clocks = <&input_clk>;
+> ?		reg = <0x00 0x10>;
+> ?		#clock-cells = <0>;
+> ?		clocks = <&input_clk>;
 > +		clock-frequency = <1000000000>;
->  	};
+> ?	};
 > diff --git a/Documentation/devicetree/bindings/clock/snps,pll-clock.txt b/Documentation/devicetree/bindings/clock/snps,pll-clock.txt
 > index 11fe487..5908f99 100644
 > --- a/Documentation/devicetree/bindings/clock/snps,pll-clock.txt
 > +++ b/Documentation/devicetree/bindings/clock/snps,pll-clock.txt
 > @@ -13,6 +13,10 @@ registers and second for corresponding LOCK CGU register.
->  - clocks: shall be the input parent clock phandle for the PLL.
->  - #clock-cells: from common clock binding; Should always be set to 0.
->  
+> ?- clocks: shall be the input parent clock phandle for the PLL.
+> ?- #clock-cells: from common clock binding; Should always be set to 0.
+> ?
 > +Optional properties:
 > +- clock-frequency: output frequency generated by pll in Hz which will be set
 > +while probing. Should be a single cell.
 > +
->  Example:
->  	input-clk: input-clk {
->  		clock-frequency = <33333333>;
+> ?Example:
+> ?	input-clk: input-clk {
+> ?		clock-frequency = <33333333>;
 > @@ -25,4 +29,5 @@ Example:
->  		reg = <0x80 0x10>, <0x100 0x10>;
->  		#clock-cells = <0>;
->  		clocks = <&input-clk>;
+> ?		reg = <0x80 0x10>, <0x100 0x10>;
+> ?		#clock-cells = <0>;
+> ?		clocks = <&input-clk>;
 > +		clock-frequency = <100000000>;
->  	};
+> ?	};
 > diff --git a/drivers/clk/axs10x/pll_clock.c b/drivers/clk/axs10x/pll_clock.c
 > index 25d8c24..3f4345d 100644
 > --- a/drivers/clk/axs10x/pll_clock.c
 > +++ b/drivers/clk/axs10x/pll_clock.c
 > @@ -11,6 +11,7 @@
->  #include <linux/platform_device.h>
->  #include <linux/module.h>
->  #include <linux/clk-provider.h>
+> ?#include <linux/platform_device.h>
+> ?#include <linux/module.h>
+> ?#include <linux/clk-provider.h>
 > +#include <linux/clk.h>
->  #include <linux/delay.h>
->  #include <linux/err.h>
->  #include <linux/device.h>
+> ?#include <linux/delay.h>
+> ?#include <linux/err.h>
+> ?#include <linux/device.h>
 > @@ -215,6 +216,25 @@ static const struct clk_ops axs10x_pll_ops = {
->  	.set_rate = axs10x_pll_set_rate,
->  };
->  
+> ?	.set_rate = axs10x_pll_set_rate,
+> ?};
+> ?
 > +static void set_pll_rate_from_of(struct clk *clk, struct device_node *node)
 > +{
 > +	u32 requested_rate;
@@ -99,17 +99,17 @@ On Fri, 2017-09-29 at 16:13 +0300, Eugeniy Paltsev wrote:
 > +	pr_debug("Set %s clock to %u\n", node->name, requested_rate);
 > +}
 > +
->  static int axs10x_pll_clk_probe(struct platform_device *pdev)
->  {
->  	struct device *dev = &pdev->dev;
+> ?static int axs10x_pll_clk_probe(struct platform_device *pdev)
+> ?{
+> ?	struct device *dev = &pdev->dev;
 > @@ -258,8 +278,15 @@ static int axs10x_pll_clk_probe(struct platform_device *pdev)
->  		return ret;
->  	}
->  
+> ?		return ret;
+> ?	}
+> ?
 > -	return of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,
 > -			&pll_clk->hw);
-> +	ret =  of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,
-> +				      &pll_clk->hw);
+> +	ret =??of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,
+> +				??????&pll_clk->hw);
 > +	if (ret)
 > +		return ret;
 > +
@@ -117,35 +117,35 @@ On Fri, 2017-09-29 at 16:13 +0300, Eugeniy Paltsev wrote:
 > +	set_pll_rate_from_of(pll_clk->hw.clk, dev->of_node);
 > +
 > +	return 0;
->  }
->  
->  static int axs10x_pll_clk_remove(struct platform_device *pdev)
+> ?}
+> ?
+> ?static int axs10x_pll_clk_remove(struct platform_device *pdev)
 > @@ -311,6 +338,9 @@ static void __init of_axs10x_pll_clk_setup(struct device_node *node)
->  		goto err_unregister_clk;
->  	}
->  
+> ?		goto err_unregister_clk;
+> ?	}
+> ?
 > +	/* If we specify initial pll output frequency in dts try to set it */
 > +	set_pll_rate_from_of(pll_clk->hw.clk, node);
 > +
->  	return;
->  
->  err_unregister_clk:
+> ?	return;
+> ?
+> ?err_unregister_clk:
 > diff --git a/drivers/clk/clk-hsdk-pll.c b/drivers/clk/clk-hsdk-pll.c
 > index bbf23717..74fd006 100644
 > --- a/drivers/clk/clk-hsdk-pll.c
 > +++ b/drivers/clk/clk-hsdk-pll.c
 > @@ -9,6 +9,7 @@
->   */
->  
->  #include <linux/clk-provider.h>
+> ? */
+> ?
+> ?#include <linux/clk-provider.h>
 > +#include <linux/clk.h>
->  #include <linux/delay.h>
->  #include <linux/device.h>
->  #include <linux/err.h>
+> ?#include <linux/delay.h>
+> ?#include <linux/device.h>
+> ?#include <linux/err.h>
 > @@ -295,6 +296,25 @@ static const struct clk_ops hsdk_pll_ops = {
->  	.set_rate = hsdk_pll_set_rate,
->  };
->  
+> ?	.set_rate = hsdk_pll_set_rate,
+> ?};
+> ?
 > +static void set_pll_rate_from_of(struct clk *clk, struct device_node *node)
 > +{
 > +	u32 requested_rate;
@@ -165,17 +165,17 @@ On Fri, 2017-09-29 at 16:13 +0300, Eugeniy Paltsev wrote:
 > +	pr_debug("Set %s clock to %u\n", node->name, requested_rate);
 > +}
 > +
->  static int hsdk_pll_clk_probe(struct platform_device *pdev)
->  {
->  	int ret;
+> ?static int hsdk_pll_clk_probe(struct platform_device *pdev)
+> ?{
+> ?	int ret;
 > @@ -340,8 +360,15 @@ static int hsdk_pll_clk_probe(struct platform_device *pdev)
->  		return ret;
->  	}
->  
+> ?		return ret;
+> ?	}
+> ?
 > -	return of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,
 > -			&pll_clk->hw);
-> +	ret =  of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,
-> +				      &pll_clk->hw);
+> +	ret =??of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,
+> +				??????&pll_clk->hw);
 > +	if (ret)
 > +		return ret;
 > +
@@ -183,18 +183,18 @@ On Fri, 2017-09-29 at 16:13 +0300, Eugeniy Paltsev wrote:
 > +	set_pll_rate_from_of(pll_clk->hw.clk, dev->of_node);
 > +
 > +	return 0;
->  }
->  
->  static int hsdk_pll_clk_remove(struct platform_device *pdev)
+> ?}
+> ?
+> ?static int hsdk_pll_clk_remove(struct platform_device *pdev)
 > @@ -400,6 +427,9 @@ static void __init of_hsdk_pll_clk_setup(struct device_node *node)
->  		goto err_unmap_spec_regs;
->  	}
->  
+> ?		goto err_unmap_spec_regs;
+> ?	}
+> ?
 > +	/* If we specify initial pll output frequency in dts try to set it */
 > +	set_pll_rate_from_of(pll_clk->hw.clk, node);
 > +
->  	return;
->  
->  err_unmap_spec_regs:
+> ?	return;
+> ?
+> ?err_unmap_spec_regs:
 -- 
- Eugeniy Paltsev
\ No newline at end of file
+?Eugeniy Paltsev
\ No newline at end of file
diff --git a/a/content_digest b/N2/content_digest
index 8728207..1dab433 100644
--- a/a/content_digest
+++ b/N2/content_digest
@@ -2,24 +2,16 @@
   "ref\00020170929131357.26796-1-Eugeniy.Paltsev\@synopsys.com\0"
 ]
 [
-  "From\0Eugeniy Paltsev <Eugeniy.Paltsev\@synopsys.com>\0"
+  "From\0Eugeniy.Paltsev\@synopsys.com (Eugeniy Paltsev)\0"
 ]
 [
-  "Subject\0Re: [PATCH] CLK: ARC: Set initial pll output frequency specified in device tree\0"
+  "Subject\0[PATCH] CLK: ARC: Set initial pll output frequency specified in device tree\0"
 ]
 [
   "Date\0Mon, 13 Nov 2017 15:35:29 +0000\0"
 ]
 [
-  "To\0linux-clk\@vger.kernel.org <linux-clk\@vger.kernel.org>\0"
-]
-[
-  "Cc\0linux-kernel\@vger.kernel.org <linux-kernel\@vger.kernel.org>",
-  " mark.rutland\@arm.com <mark.rutland\@arm.com>",
-  " mturquette\@baylibre.com <mturquette\@baylibre.com>",
-  " sboyd\@codeaurora.org <sboyd\@codeaurora.org>",
-  " robh+dt\@kernel.org <robh+dt\@kernel.org>",
-  " linux-snps-arc\@lists.infradead.org <linux-snps-arc\@lists.infradead.org>\0"
+  "To\0linux-snps-arc\@lists.infradead.org\0"
 ]
 [
   "\0000:1\0"
@@ -35,81 +27,81 @@
   "\n",
   "Thanks.\n",
   "\n",
-  "On Fri, 2017-09-29 at 16:13 +0300, Eugeniy Paltsev wrote:\n",
+  "On Fri, 2017-09-29\@16:13 +0300, Eugeniy Paltsev wrote:\n",
   "> Add option to set initial output frequency of plls via\n",
   "> \"clock-frequency\" property in pll's device tree node.\n",
   "> This frequency will be set while pll driver probed.\n",
   "> \n",
   "> The usage example is setting CPU clock frequency on boot\n",
   "> See discussion:\n",
-  "> https://www.mail-archive.com/linux-snps-arc\@lists.infradead.org/msg02689.html\n",
+  "> https://www.mail-archive.com/linux-snps-arc at lists.infradead.org/msg02689.html\n",
   "> \n",
-  "> Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev\@synopsys.com>\n",
+  "> Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev at synopsys.com>\n",
   "> ---\n",
-  "> \302\240.../bindings/clock/snps,hsdk-pll-clock.txt\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240|\302\240\302\2405 ++++\n",
-  "> \302\240.../devicetree/bindings/clock/snps,pll-clock.txt\302\240\302\240\302\240|\302\240\302\2405 ++++\n",
-  "> \302\240drivers/clk/axs10x/pll_clock.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 34 ++++++++++++++++++++--\n",
-  "> \302\240drivers/clk/clk-hsdk-pll.c\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240| 34 ++++++++++++++++++++--\n",
-  "> \302\2404 files changed, 74 insertions(+), 4 deletions(-)\n",
+  "> ?.../bindings/clock/snps,hsdk-pll-clock.txt?????????|??5 ++++\n",
+  "> ?.../devicetree/bindings/clock/snps,pll-clock.txt???|??5 ++++\n",
+  "> ?drivers/clk/axs10x/pll_clock.c?????????????????????| 34 ++++++++++++++++++++--\n",
+  "> ?drivers/clk/clk-hsdk-pll.c?????????????????????????| 34 ++++++++++++++++++++--\n",
+  "> ?4 files changed, 74 insertions(+), 4 deletions(-)\n",
   "> \n",
   "> diff --git a/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt b/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt\n",
   "> index c56c755..5703059 100644\n",
   "> --- a/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt\n",
   "> +++ b/Documentation/devicetree/bindings/clock/snps,hsdk-pll-clock.txt\n",
   "> \@\@ -13,6 +13,10 \@\@ Required properties:\n",
-  "> \302\240- clocks: shall be the input parent clock phandle for the PLL.\n",
-  "> \302\240- #clock-cells: from common clock binding; Should always be set to 0.\n",
-  "> \302\240\n",
+  "> ?- clocks: shall be the input parent clock phandle for the PLL.\n",
+  "> ?- #clock-cells: from common clock binding; Should always be set to 0.\n",
+  "> ?\n",
   "> +Optional properties:\n",
   "> +- clock-frequency: output frequency generated by pll in Hz which will be set\n",
   "> +while probing. Should be a single cell.\n",
   "> +\n",
-  "> \302\240Example:\n",
-  "> \302\240\tinput_clk: input-clk {\n",
-  "> \302\240\t\tclock-frequency = <33333333>;\n",
+  "> ?Example:\n",
+  "> ?\tinput_clk: input-clk {\n",
+  "> ?\t\tclock-frequency = <33333333>;\n",
   "> \@\@ -25,4 +29,5 \@\@ Example:\n",
-  "> \302\240\t\treg = <0x00 0x10>;\n",
-  "> \302\240\t\t#clock-cells = <0>;\n",
-  "> \302\240\t\tclocks = <&input_clk>;\n",
+  "> ?\t\treg = <0x00 0x10>;\n",
+  "> ?\t\t#clock-cells = <0>;\n",
+  "> ?\t\tclocks = <&input_clk>;\n",
   "> +\t\tclock-frequency = <1000000000>;\n",
-  "> \302\240\t};\n",
+  "> ?\t};\n",
   "> diff --git a/Documentation/devicetree/bindings/clock/snps,pll-clock.txt b/Documentation/devicetree/bindings/clock/snps,pll-clock.txt\n",
   "> index 11fe487..5908f99 100644\n",
   "> --- a/Documentation/devicetree/bindings/clock/snps,pll-clock.txt\n",
   "> +++ b/Documentation/devicetree/bindings/clock/snps,pll-clock.txt\n",
   "> \@\@ -13,6 +13,10 \@\@ registers and second for corresponding LOCK CGU register.\n",
-  "> \302\240- clocks: shall be the input parent clock phandle for the PLL.\n",
-  "> \302\240- #clock-cells: from common clock binding; Should always be set to 0.\n",
-  "> \302\240\n",
+  "> ?- clocks: shall be the input parent clock phandle for the PLL.\n",
+  "> ?- #clock-cells: from common clock binding; Should always be set to 0.\n",
+  "> ?\n",
   "> +Optional properties:\n",
   "> +- clock-frequency: output frequency generated by pll in Hz which will be set\n",
   "> +while probing. Should be a single cell.\n",
   "> +\n",
-  "> \302\240Example:\n",
-  "> \302\240\tinput-clk: input-clk {\n",
-  "> \302\240\t\tclock-frequency = <33333333>;\n",
+  "> ?Example:\n",
+  "> ?\tinput-clk: input-clk {\n",
+  "> ?\t\tclock-frequency = <33333333>;\n",
   "> \@\@ -25,4 +29,5 \@\@ Example:\n",
-  "> \302\240\t\treg = <0x80 0x10>, <0x100 0x10>;\n",
-  "> \302\240\t\t#clock-cells = <0>;\n",
-  "> \302\240\t\tclocks = <&input-clk>;\n",
+  "> ?\t\treg = <0x80 0x10>, <0x100 0x10>;\n",
+  "> ?\t\t#clock-cells = <0>;\n",
+  "> ?\t\tclocks = <&input-clk>;\n",
   "> +\t\tclock-frequency = <100000000>;\n",
-  "> \302\240\t};\n",
+  "> ?\t};\n",
   "> diff --git a/drivers/clk/axs10x/pll_clock.c b/drivers/clk/axs10x/pll_clock.c\n",
   "> index 25d8c24..3f4345d 100644\n",
   "> --- a/drivers/clk/axs10x/pll_clock.c\n",
   "> +++ b/drivers/clk/axs10x/pll_clock.c\n",
   "> \@\@ -11,6 +11,7 \@\@\n",
-  "> \302\240#include <linux/platform_device.h>\n",
-  "> \302\240#include <linux/module.h>\n",
-  "> \302\240#include <linux/clk-provider.h>\n",
+  "> ?#include <linux/platform_device.h>\n",
+  "> ?#include <linux/module.h>\n",
+  "> ?#include <linux/clk-provider.h>\n",
   "> +#include <linux/clk.h>\n",
-  "> \302\240#include <linux/delay.h>\n",
-  "> \302\240#include <linux/err.h>\n",
-  "> \302\240#include <linux/device.h>\n",
+  "> ?#include <linux/delay.h>\n",
+  "> ?#include <linux/err.h>\n",
+  "> ?#include <linux/device.h>\n",
   "> \@\@ -215,6 +216,25 \@\@ static const struct clk_ops axs10x_pll_ops = {\n",
-  "> \302\240\t.set_rate = axs10x_pll_set_rate,\n",
-  "> \302\240};\n",
-  "> \302\240\n",
+  "> ?\t.set_rate = axs10x_pll_set_rate,\n",
+  "> ?};\n",
+  "> ?\n",
   "> +static void set_pll_rate_from_of(struct clk *clk, struct device_node *node)\n",
   "> +{\n",
   "> +\tu32 requested_rate;\n",
@@ -129,17 +121,17 @@
   "> +\tpr_debug(\"Set %s clock to %u\\n\", node->name, requested_rate);\n",
   "> +}\n",
   "> +\n",
-  "> \302\240static int axs10x_pll_clk_probe(struct platform_device *pdev)\n",
-  "> \302\240{\n",
-  "> \302\240\tstruct device *dev = &pdev->dev;\n",
+  "> ?static int axs10x_pll_clk_probe(struct platform_device *pdev)\n",
+  "> ?{\n",
+  "> ?\tstruct device *dev = &pdev->dev;\n",
   "> \@\@ -258,8 +278,15 \@\@ static int axs10x_pll_clk_probe(struct platform_device *pdev)\n",
-  "> \302\240\t\treturn ret;\n",
-  "> \302\240\t}\n",
-  "> \302\240\n",
+  "> ?\t\treturn ret;\n",
+  "> ?\t}\n",
+  "> ?\n",
   "> -\treturn of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,\n",
   "> -\t\t\t&pll_clk->hw);\n",
-  "> +\tret =\302\240\302\240of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,\n",
-  "> +\t\t\t\t\302\240\302\240\302\240\302\240\302\240\302\240&pll_clk->hw);\n",
+  "> +\tret =??of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,\n",
+  "> +\t\t\t\t??????&pll_clk->hw);\n",
   "> +\tif (ret)\n",
   "> +\t\treturn ret;\n",
   "> +\n",
@@ -147,35 +139,35 @@
   "> +\tset_pll_rate_from_of(pll_clk->hw.clk, dev->of_node);\n",
   "> +\n",
   "> +\treturn 0;\n",
-  "> \302\240}\n",
-  "> \302\240\n",
-  "> \302\240static int axs10x_pll_clk_remove(struct platform_device *pdev)\n",
+  "> ?}\n",
+  "> ?\n",
+  "> ?static int axs10x_pll_clk_remove(struct platform_device *pdev)\n",
   "> \@\@ -311,6 +338,9 \@\@ static void __init of_axs10x_pll_clk_setup(struct device_node *node)\n",
-  "> \302\240\t\tgoto err_unregister_clk;\n",
-  "> \302\240\t}\n",
-  "> \302\240\n",
+  "> ?\t\tgoto err_unregister_clk;\n",
+  "> ?\t}\n",
+  "> ?\n",
   "> +\t/* If we specify initial pll output frequency in dts try to set it */\n",
   "> +\tset_pll_rate_from_of(pll_clk->hw.clk, node);\n",
   "> +\n",
-  "> \302\240\treturn;\n",
-  "> \302\240\n",
-  "> \302\240err_unregister_clk:\n",
+  "> ?\treturn;\n",
+  "> ?\n",
+  "> ?err_unregister_clk:\n",
   "> diff --git a/drivers/clk/clk-hsdk-pll.c b/drivers/clk/clk-hsdk-pll.c\n",
   "> index bbf23717..74fd006 100644\n",
   "> --- a/drivers/clk/clk-hsdk-pll.c\n",
   "> +++ b/drivers/clk/clk-hsdk-pll.c\n",
   "> \@\@ -9,6 +9,7 \@\@\n",
-  "> \302\240 */\n",
-  "> \302\240\n",
-  "> \302\240#include <linux/clk-provider.h>\n",
+  "> ? */\n",
+  "> ?\n",
+  "> ?#include <linux/clk-provider.h>\n",
   "> +#include <linux/clk.h>\n",
-  "> \302\240#include <linux/delay.h>\n",
-  "> \302\240#include <linux/device.h>\n",
-  "> \302\240#include <linux/err.h>\n",
+  "> ?#include <linux/delay.h>\n",
+  "> ?#include <linux/device.h>\n",
+  "> ?#include <linux/err.h>\n",
   "> \@\@ -295,6 +296,25 \@\@ static const struct clk_ops hsdk_pll_ops = {\n",
-  "> \302\240\t.set_rate = hsdk_pll_set_rate,\n",
-  "> \302\240};\n",
-  "> \302\240\n",
+  "> ?\t.set_rate = hsdk_pll_set_rate,\n",
+  "> ?};\n",
+  "> ?\n",
   "> +static void set_pll_rate_from_of(struct clk *clk, struct device_node *node)\n",
   "> +{\n",
   "> +\tu32 requested_rate;\n",
@@ -195,17 +187,17 @@
   "> +\tpr_debug(\"Set %s clock to %u\\n\", node->name, requested_rate);\n",
   "> +}\n",
   "> +\n",
-  "> \302\240static int hsdk_pll_clk_probe(struct platform_device *pdev)\n",
-  "> \302\240{\n",
-  "> \302\240\tint ret;\n",
+  "> ?static int hsdk_pll_clk_probe(struct platform_device *pdev)\n",
+  "> ?{\n",
+  "> ?\tint ret;\n",
   "> \@\@ -340,8 +360,15 \@\@ static int hsdk_pll_clk_probe(struct platform_device *pdev)\n",
-  "> \302\240\t\treturn ret;\n",
-  "> \302\240\t}\n",
-  "> \302\240\n",
+  "> ?\t\treturn ret;\n",
+  "> ?\t}\n",
+  "> ?\n",
   "> -\treturn of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,\n",
   "> -\t\t\t&pll_clk->hw);\n",
-  "> +\tret =\302\240\302\240of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,\n",
-  "> +\t\t\t\t\302\240\302\240\302\240\302\240\302\240\302\240&pll_clk->hw);\n",
+  "> +\tret =??of_clk_add_hw_provider(dev->of_node, of_clk_hw_simple_get,\n",
+  "> +\t\t\t\t??????&pll_clk->hw);\n",
   "> +\tif (ret)\n",
   "> +\t\treturn ret;\n",
   "> +\n",
@@ -213,21 +205,21 @@
   "> +\tset_pll_rate_from_of(pll_clk->hw.clk, dev->of_node);\n",
   "> +\n",
   "> +\treturn 0;\n",
-  "> \302\240}\n",
-  "> \302\240\n",
-  "> \302\240static int hsdk_pll_clk_remove(struct platform_device *pdev)\n",
+  "> ?}\n",
+  "> ?\n",
+  "> ?static int hsdk_pll_clk_remove(struct platform_device *pdev)\n",
   "> \@\@ -400,6 +427,9 \@\@ static void __init of_hsdk_pll_clk_setup(struct device_node *node)\n",
-  "> \302\240\t\tgoto err_unmap_spec_regs;\n",
-  "> \302\240\t}\n",
-  "> \302\240\n",
+  "> ?\t\tgoto err_unmap_spec_regs;\n",
+  "> ?\t}\n",
+  "> ?\n",
   "> +\t/* If we specify initial pll output frequency in dts try to set it */\n",
   "> +\tset_pll_rate_from_of(pll_clk->hw.clk, node);\n",
   "> +\n",
-  "> \302\240\treturn;\n",
-  "> \302\240\n",
-  "> \302\240err_unmap_spec_regs:\n",
+  "> ?\treturn;\n",
+  "> ?\n",
+  "> ?err_unmap_spec_regs:\n",
   "-- \n",
-  "\302\240Eugeniy Paltsev"
+  "?Eugeniy Paltsev"
 ]
 
-7beebb4ece846e83846691af9bcce68c862aa51aa404a96b385c91f04d9c49cb
+b44ab7cbb8e8e8cefbf0bef4f6b643ccf1db67cebf7b2f9fbd66c04e521a1bf4

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.