From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 06 Aug 2012 05:16:04 +0000 (GMT) From: MyungJoo Ham Subject: Re: [PATCH] Extcon: adc_jack: adc-jack driver to support 3.5 pi or simliar devices To: anish kumar , =?euc-kr?Q?=C3=D6=C2=F9=BF=EC?= , "jic23@cam.ac.uk" Cc: "linux-kernel@vger.kernel.org" , "linux-iio@vger.kernel.org" , ANISH KUMAR Reply-to: myungjoo.ham@samsung.com MIME-version: 1.0 Content-type: text/plain; charset=euc-kr MIME-version: 1.0 Message-id: <10387090.59171344230163413.JavaMail.weblogic@epml13> List-ID: PiBGcm9tOiBhbmlzaCBrdW1hciA8YW5pc2gxOTg1MTk4NTE5ODVAZ21haWwuY29tPg0KPiANCj4g RXh0ZXJuYWwgY29ubmVjdG9yIGRldmljZXMgdGhhdCBkZWNpZGVzIGNvbm5lY3Rpb24gaW5mb3Jt YXRpb24gYmFzZWQgb24NCj4gQURDIHZhbHVlcyBtYXkgdXNlIGFkYy1qYWNrIGRldmljZSBkcml2 ZXIuIFRoZSB1c2VyIHNpbXBseSBuZWVkcyB0bw0KPiBwcm92aWRlIGEgdGFibGUgb2YgYWRjIHJh bmdlIGFuZCBjb25uZWN0aW9uIHN0YXRlcy4gVGhlbiwgZXh0Y29uDQo+IGZyYW1ld29yayB3aWxs IGF1dG9tYXRpY2FsbHkgbm90aWZ5IG90aGVycy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IGFuaXNo IGt1bWFyIDxhbmlzaC5zaW5naEBzYW1zdW5nLmNvbT4NCg0KU2lnbmVkLW9mZi1ieTogTXl1bmdK b28gSGFtIDxteXVuZ2pvby5oYW1Ac2Ftc3VuZy5jb20+DQoNCj4gLS0tDQo+ICBkcml2ZXJzL2V4 dGNvbi9LY29uZmlnICAgICAgICAgIHwgICAgNSArDQo+ICBkcml2ZXJzL2V4dGNvbi9NYWtlZmls ZSAgICAgICAgIHwgICAgMSArDQo+ICBkcml2ZXJzL2V4dGNvbi9hZGNfamFjay5jICAgICAgIHwg IDE4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gIGluY2x1ZGUv bGludXgvZXh0Y29uL2FkY19qYWNrLmggfCAgMTA4ICsrKysrKysrKysrKysrKysrKysrKysrDQo+ ICA0IGZpbGVzIGNoYW5nZWQsIDI5NyBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQ0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZXh0Y29uL2FkY19qYWNrLmMNCj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBpbmNsdWRlL2xpbnV4L2V4dGNvbi9hZGNfamFjay5oDQo+IA0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9leHRjb24vS2NvbmZpZyBiL2RyaXZlcnMvZXh0Y29uL0tjb25maWcNCj4g aW5kZXggZTE3NWM4ZS4uNTk2ZTI3NyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9leHRjb24vS2Nv bmZpZw0KPiArKysgYi9kcml2ZXJzL2V4dGNvbi9LY29uZmlnDQo+IEBAIC0yMSw2ICsyMSwxMSBA QCBjb25maWcgRVhUQ09OX0dQSU8NCj4gIAkgIFNheSBZIGhlcmUgdG8gZW5hYmxlIEdQSU8gYmFz ZWQgZXh0Y29uIHN1cHBvcnQuIE5vdGUgdGhhdCBHUElPDQo+ICAJICBleHRjb24gc3VwcG9ydHMg c2luZ2xlIHN0YXRlIHBlciBleHRjb24gaW5zdGFuY2UuDQo+ICANCj4gK2NvbmZpZyBFWFRDT05f QURDX0pBQ0sNCj4gKyAgICAgICAgdHJpc3RhdGUgIkFEQyBKYWNrIGV4dGNvbiBzdXBwb3J0Ig0K PiArICAgICAgICBoZWxwDQo+ICsgICAgICAgICAgU2F5IFkgaGVyZSB0byBlbmFibGUgZXh0Y29u IGRldmljZSBkcml2ZXIgYmFzZWQgb24gQURDIHZhbHVlcy4NCj4gKw0KPiAgY29uZmlnIEVYVENP Tl9NQVg3NzY5Mw0KPiAgCXRyaXN0YXRlICJNQVg3NzY5MyBFWFRDT04gU3VwcG9ydCINCj4gIAlk ZXBlbmRzIG9uIE1GRF9NQVg3NzY5Mw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9leHRjb24vTWFr ZWZpbGUgYi9kcml2ZXJzL2V4dGNvbi9NYWtlZmlsZQ0KPiBpbmRleCA4ODk2MWIzLi5kOTVjNWVh IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2V4dGNvbi9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJz L2V4dGNvbi9NYWtlZmlsZQ0KPiBAQCAtNCw2ICs0LDcgQEANCj4gIA0KPiAgb2JqLSQoQ09ORklH X0VYVENPTikJCSs9IGV4dGNvbl9jbGFzcy5vDQo+ICBvYmotJChDT05GSUdfRVhUQ09OX0dQSU8p CSs9IGV4dGNvbl9ncGlvLm8NCj4gK29iai0kKENPTkZJR19FWFRDT05fQURDX0pBQ0spICAgKz0g YWRjX2phY2subw0KPiAgb2JqLSQoQ09ORklHX0VYVENPTl9NQVg3NzY5MykJKz0gZXh0Y29uLW1h eDc3NjkzLm8NCj4gIG9iai0kKENPTkZJR19FWFRDT05fTUFYODk5NykJKz0gZXh0Y29uLW1heDg5 OTcubw0KPiAgb2JqLSQoQ09ORklHX0VYVENPTl9BUklaT05BKQkrPSBleHRjb24tYXJpem9uYS5v DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2V4dGNvbi9hZGNfamFjay5jIGIvZHJpdmVycy9leHRj b24vYWRjX2phY2suYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi5m ZWY4MzM0DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVycy9leHRjb24vYWRjX2phY2su Yw0KPiBAQCAtMCwwICsxLDE4MyBAQA0KPiArLyoNCj4gKyAqIGRyaXZlcnMvZXh0Y29uL2FkY19q YWNrLmMNCj4gKyAqDQo+ICsgKiBBbmFsb2cgSmFjayBleHRjb24gZHJpdmVyIHdpdGggQURDLWJh c2VkIGRldGVjdGlvbiBjYXBhYmlsaXR5Lg0KPiArICoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAx MiBTYW1zdW5nIEVsZWN0cm9uaWNzDQo+ICsgKiBNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBz YW1zdW5nLmNvbT4NCj4gKyAqDQo+ICsgKiBNb2RpZmllZCBmb3IgY2FsbGluZyB0byBJSU8gdG8g Z2V0IGFkYyBieSA8YW5pc2guc2luZ2hAc2Ftc3VuZy5jb20+DQo+ICsgKg0KPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkNCj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgdmVyc2lvbiAyIGFzDQo+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbi4NCj4gKyAqDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L3Ns YWIuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4NCj4gKyNp bmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9paW8vY29uc3Vt ZXIuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9leHRjb24vYWRjX2phY2suaD4NCj4gKyNpbmNsdWRl IDxsaW51eC9leHRjb24uaD4NCj4gKw0KPiArc3RhdGljIHZvaWQgYWRjX2phY2tfaGFuZGxlcihz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICt7DQo+ICsJc3RydWN0IGFkY19qYWNrX2RhdGEg KmRhdGEgPSBjb250YWluZXJfb2YodG9fZGVsYXllZF93b3JrKHdvcmspLA0KPiArCQkJCQkJICBz dHJ1Y3QgYWRjX2phY2tfZGF0YSwNCj4gKwkJCQkJCSAgaGFuZGxlcik7DQo+ICsJdTMyIHN0YXRl ID0gMDsNCj4gKwlpbnQgcmV0LCBhZGNfdmFsOw0KPiArCWludCBpOw0KPiArDQo+ICsJaWYgKCFk YXRhLT5yZWFkeSkNCj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJcmV0ID0gaWlvX3JlYWRfY2hhbm5l bF9yYXcoZGF0YS0+Y2hhbiwgJmFkY192YWwpOw0KPiArCWlmIChyZXQgPCAwKSB7DQo+ICsJCWRl dl9lcnIoZGF0YS0+ZWRldi5kZXYsICJyZWFkIGNoYW5uZWwoKSBlcnJvcjogJWRcbiIsIHJldCk7 DQo+ICsJCXJldHVybjsNCj4gKwl9DQo+ICsNCj4gKwkvKiBHZXQgc3RhdGUgZnJvbSBhZGMgdmFs dWUgd2l0aCBhZGNfY29uZGl0aW9uICovDQo+ICsJZm9yIChpID0gMDsgaSA8IGRhdGEtPm51bV9j b25kaXRpb25zOyBpKyspIHsNCj4gKwkJc3RydWN0IGFkY19qYWNrX2NvbmQgKmRlZiA9ICZkYXRh LT5hZGNfY29uZGl0aW9uW2ldOw0KPiArCQlpZiAoIWRlZi0+c3RhdGUpDQo+ICsJCQlicmVhazsN Cj4gKwkJaWYgKGRlZi0+bWluX2FkYyA8PSBhZGNfdmFsICYmIGRlZi0+bWF4X2FkYyA+PSBhZGNf dmFsKSB7DQo+ICsJCQlzdGF0ZSA9IGRlZi0+c3RhdGU7DQo+ICsJCQlicmVhazsNCj4gKwkJfQ0K PiArCX0NCj4gKwkvKiBpZiBubyBkZWYgaGFzIG1ldCwgaXQgbWVhbnMgc3RhdGUgPSAwIChubyBj YWJsZXMgYXR0YWNoZWQpICovDQo+ICsNCj4gKwlleHRjb25fc2V0X3N0YXRlKCZkYXRhLT5lZGV2 LCBzdGF0ZSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBhZGNfamFja19pcnFf dGhyZWFkKGludCBpcnEsIHZvaWQgKl9kYXRhKQ0KPiArew0KPiArCXN0cnVjdCBhZGNfamFja19k YXRhICpkYXRhID0gX2RhdGE7DQo+ICsNCj4gKwlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmRhdGEt PmhhbmRsZXIsIGRhdGEtPmhhbmRsaW5nX2RlbGF5KTsNCj4gKw0KPiArCXJldHVybiBJUlFfSEFO RExFRDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBhZGNfamFja19wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQ0KPiArew0KPiArCXN0cnVjdCBhZGNfamFja19kYXRhICpkYXRh Ow0KPiArCXN0cnVjdCBhZGNfamFja19wZGF0YSAqcGRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1f ZGF0YTsNCj4gKwlpbnQgaSwgZXJyID0gMDsNCj4gKw0KPiArCWRhdGEgPSBremFsbG9jKHNpemVv ZihzdHJ1Y3QgYWRjX2phY2tfZGF0YSksIEdGUF9LRVJORUwpOw0KPiArCWlmICghZGF0YSkNCj4g KwkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKwlkYXRhLT5lZGV2Lm5hbWUgPSBwZGF0YS0+bmFt ZTsNCj4gKw0KPiArCWlmIChwZGF0YS0+Y2FibGVfbmFtZXMpDQo+ICsJCWRhdGEtPmVkZXYuc3Vw cG9ydGVkX2NhYmxlID0gcGRhdGEtPmNhYmxlX25hbWVzOw0KPiArCWVsc2UNCj4gKwkJZGF0YS0+ ZWRldi5zdXBwb3J0ZWRfY2FibGUgPSBleHRjb25fY2FibGVfbmFtZTsNCj4gKw0KPiArCS8qIENo ZWNrIHRoZSBsZW5ndGggb2YgYXJyYXkgYW5kIHNldCBudW1fY2FibGVzICovDQo+ICsJZm9yIChp ID0gMDsgZGF0YS0+ZWRldi5zdXBwb3J0ZWRfY2FibGVbaV07IGkrKykNCj4gKwkJOw0KPiArCWlm IChpID09IDAgfHwgaSA+IFNVUFBPUlRFRF9DQUJMRV9NQVgpIHsNCj4gKwkJZXJyID0gLUVJTlZB TDsNCj4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiZXJyb3I6IHBkYXRhLT5jYWJsZV9uYW1lcyBz aXplID0gJWRcbiIsDQo+ICsJCQlpIC0gMSk7DQo+ICsJCWdvdG8gZXJyX2FsbG9jOw0KPiArCX0N Cj4gKwlkYXRhLT5udW1fY2FibGVzID0gaTsNCj4gKw0KPiArCWlmICghcGRhdGEtPmFkY19jb25k aXRpb24gfHwNCj4gKwkgICAgIXBkYXRhLT5hZGNfY29uZGl0aW9uWzBdLnN0YXRlKSB7DQo+ICsJ CWVyciA9IC1FSU5WQUw7DQo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgImVycm9yOiBhZGNfY29u ZGl0aW9uIG5vdCBkZWZpbmVkLlxuIik7DQo+ICsJCWdvdG8gZXJyX2FsbG9jOw0KPiArCX0NCj4g KwlkYXRhLT5hZGNfY29uZGl0aW9uID0gcGRhdGEtPmFkY19jb25kaXRpb247DQo+ICsNCj4gKwkv KiBDaGVjayB0aGUgbGVuZ3RoIG9mIGFycmF5IGFuZCBzZXQgbnVtX2NvbmRpdGlvbnMgKi8NCj4g Kwlmb3IgKGkgPSAwOyBkYXRhLT5hZGNfY29uZGl0aW9uW2ldLnN0YXRlOyBpKyspDQo+ICsJCTsN Cj4gKwlkYXRhLT5udW1fY29uZGl0aW9ucyA9IGk7DQo+ICsNCj4gKwlkYXRhLT5jaGFuID0gaWlv X2NoYW5uZWxfZ2V0KGRldl9uYW1lKCZwZGV2LT5kZXYpLA0KPiArCQkJCQkJcGRhdGEtPmNvbnN1 bWVyX2NoYW5uZWwpOw0KPiArCWRhdGEtPmhhbmRsaW5nX2RlbGF5ID0gbXNlY3NfdG9famlmZmll cyhwZGF0YS0+aGFuZGxpbmdfZGVsYXlfbXMpOw0KPiArDQo+ICsJSU5JVF9ERUxBWUVEX1dPUktf REVGRVJSQUJMRSgmZGF0YS0+aGFuZGxlciwgYWRjX2phY2tfaGFuZGxlcik7DQo+ICsNCj4gKwlw bGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkYXRhKTsNCj4gKw0KPiArCWlmIChwZGF0YS0+aXJx KSB7DQo+ICsJCWRhdGEtPmlycSA9IHBkYXRhLT5pcnE7DQo+ICsNCj4gKwkJZXJyID0gcmVxdWVz dF90aHJlYWRlZF9pcnEoZGF0YS0+aXJxLCBOVUxMLA0KPiArCQkJCQkgICBhZGNfamFja19pcnFf dGhyZWFkLA0KPiArCQkJCQkgICBwZGF0YS0+aXJxX2ZsYWdzLCBwZGF0YS0+bmFtZSwNCj4gKwkJ CQkJICAgZGF0YSk7DQo+ICsNCj4gKwkJaWYgKGVycikgew0KPiArCQkJZGV2X2VycigmcGRldi0+ ZGV2LCAiZXJyb3I6IGlycSAlZFxuIiwgZGF0YS0+aXJxKTsNCj4gKwkJCWVyciA9IC1FSU5WQUw7 DQo+ICsJCQlnb3RvIGVycl9pbml0d29yazsNCj4gKwkJfQ0KPiArCX0NCj4gKwllcnIgPSBleHRj b25fZGV2X3JlZ2lzdGVyKCZkYXRhLT5lZGV2LCAmcGRldi0+ZGV2KTsNCj4gKwlpZiAoZXJyKQ0K PiArCQlnb3RvIGVycl9pcnE7DQo+ICsNCj4gKwlkYXRhLT5yZWFkeSA9IHRydWU7DQo+ICsNCj4g Kwlnb3RvIG91dDsNCj4gKw0KPiArZXJyX2lycToNCj4gKwlpZiAoZGF0YS0+aXJxKQ0KPiArCQlm cmVlX2lycShkYXRhLT5pcnEsIGRhdGEpOw0KPiArZXJyX2luaXR3b3JrOg0KPiArCWNhbmNlbF9k ZWxheWVkX3dvcmtfc3luYygmZGF0YS0+aGFuZGxlcik7DQo+ICtlcnJfYWxsb2M6DQo+ICsJa2Zy ZWUoZGF0YSk7DQo+ICtvdXQ6DQo+ICsJcmV0dXJuIGVycjsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGludCBfX2RldmV4aXQgYWRjX2phY2tfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpDQo+ICt7DQo+ICsJc3RydWN0IGFkY19qYWNrX2RhdGEgKmRhdGEgPSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShwZGV2KTsNCj4gKw0KPiArCWV4dGNvbl9kZXZfdW5yZWdpc3RlcigmZGF0YS0+ZWRl dik7DQo+ICsJaWYgKGRhdGEtPmlycSkNCj4gKwkJZnJlZV9pcnEoZGF0YS0+aXJxLCBkYXRhKTsN Cj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBOVUxMKTsNCj4gKwlrZnJlZShkYXRhKTsN Cj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3Jt X2RyaXZlciBhZGNfamFja19kcml2ZXIgPSB7DQo+ICsJLnByb2JlCQk9IGFkY19qYWNrX3Byb2Jl LA0KPiArCS5yZW1vdmUJCT0gX19kZXZleGl0X3AoYWRjX2phY2tfcmVtb3ZlKSwNCj4gKwkuZHJp dmVyCQk9IHsNCj4gKwkJLm5hbWUJPSAiYWRjLWphY2siLA0KPiArCQkub3duZXIJPSBUSElTX01P RFVMRSwNCj4gKwl9LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGludCBfX2luaXQgYWRjX2phY2tf aW5pdCh2b2lkKQ0KPiArew0KPiArCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJmFk Y19qYWNrX2RyaXZlcik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIF9fZXhpdCBhZGNfamFj a19leGl0KHZvaWQpDQo+ICt7DQo+ICsJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJmFkY19q YWNrX2RyaXZlcik7DQo+ICt9DQo+ICsNCj4gK21vZHVsZV9pbml0KGFkY19qYWNrX2luaXQpOw0K PiArbW9kdWxlX2V4aXQoYWRjX2phY2tfZXhpdCk7DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2V4dGNvbi9hZGNfamFjay5oIGIvaW5jbHVkZS9saW51eC9leHRjb24vYWRjX2phY2suaA0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi40ZDZhMWY3DQo+IC0tLSAv ZGV2L251bGwNCj4gKysrIGIvaW5jbHVkZS9saW51eC9leHRjb24vYWRjX2phY2suaA0KPiBAQCAt MCwwICsxLDEwOCBAQA0KPiArLyoNCj4gKyAqIGluY2x1ZGUvbGludXgvZXh0Y29uL2FkY19qYWNr LmgNCj4gKyAqDQo+ICsgKiBBbmFsb2cgSmFjayBleHRjb24gZHJpdmVyIHdpdGggQURDLWJhc2Vk IGRldGVjdGlvbiBjYXBhYmlsaXR5Lg0KPiArICoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAxMiBT YW1zdW5nIEVsZWN0cm9uaWNzDQo+ICsgKiBNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBzYW1z dW5nLmNvbT4NCj4gKyAqDQo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KPiArICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMNCj4gKyAq IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KPiArICoNCj4gKyAq Lw0KPiArDQo+ICsjaWZuZGVmIF9FWFRDT05fQURDX0pBQ0tfSF8NCj4gKyNkZWZpbmUgX0VYVENP Tl9BRENfSkFDS19IXyBfX0ZJTEVfXw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+ DQo+ICsjaW5jbHVkZSA8bGludXgvZXh0Y29uLmg+DQo+ICsNCj4gKy8qKg0KPiArICogc3RydWN0 IGFkY19qYWNrX2RhdGEgLSBpbnRlcm5hbCBkYXRhIGZvciBhZGNfamFjayBkZXZpY2UgZHJpdmVy DQo+ICsgKiBAZWRldgktIGV4dGNvbiBkZXZpY2UuDQo+ICsgKiBAY2FibGVfbmFtZXMJLSBsaXN0 IG9mIHN1cHBvcnRlZCBjYWJsZXMuDQo+ICsgKiBAbnVtX2NhYmxlcwktIHNpemUgb2YgY2FibGVf bmFtZXMuDQo+ICsgKiBAYWRjX2NvbmRpdGlvbgktIGxpc3Qgb2YgYWRjIHZhbHVlIGNvbmRpdGlv bnMuDQo+ICsgKiBAbnVtX2NvbmRpdGlvbgktIHNpemUgb2YgYWRjX2NvbmRpdGlvbi4NCj4gKyAq IEBpcnEJCS0gaXJxIG51bWJlciBvZiBhdHRhY2gvZGV0YWNoIGV2ZW50ICgwIGlmIG5vdCBleGlz dCkuDQo+ICsgKiBAaGFuZGxpbmdfZGVsYXkJLSBpbnRlcnJ1cHQgaGFuZGxlciB3aWxsIHNjaGVk dWxlIGV4dGNvbiBldmVudA0KPiArICoJCQloYW5kbGluZyBhdCBoYW5kbGluZ19kZWxheSBqaWZm aWVzLg0KPiArICogQGhhbmRsZXIJLSBleHRjb24gZXZlbnQgaGFuZGxlciBjYWxsZWQgYnkgaW50 ZXJydXB0IGhhbmRsZXIuDQo+ICsgKiBAY2hhbgktIGlpbyBjaGFubmVsIGJlaW5nIHF1ZXJpZWQu DQo+ICsgKiBAcmVhZHkJLSB0cnVlIGlmIGl0IGlzIHNhZmUgdG8gcnVuIGhhbmRsZXIuDQo+ICsg Ki8NCj4gK3N0cnVjdCBhZGNfamFja19kYXRhIHsNCj4gKwlzdHJ1Y3QgZXh0Y29uX2RldiBlZGV2 Ow0KPiArDQo+ICsJY29uc3QgY2hhciAqKmNhYmxlX25hbWVzOw0KPiArCWludCBudW1fY2FibGVz Ow0KPiArCXN0cnVjdCBhZGNfamFja19jb25kICphZGNfY29uZGl0aW9uOw0KPiArCWludCBudW1f Y29uZGl0aW9uczsNCj4gKw0KPiArCWludCBpcnE7DQo+ICsJdW5zaWduZWQgbG9uZyBoYW5kbGlu Z19kZWxheTsgLyogaW4gamlmZmllcyAqLw0KPiArCXN0cnVjdCBkZWxheWVkX3dvcmsgaGFuZGxl cjsNCj4gKw0KPiArCXN0cnVjdCBpaW9fY2hhbm5lbCAqY2hhbjsNCj4gKw0KPiArCWJvb2wgcmVh ZHk7DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBhZGNfamFja19jb25kIC0gY29u ZGl0aW9uIHRvIHVzZSBhbiBleHRjb24gc3RhdGUNCj4gKyAqIEBzdGF0ZQktIHRoZSBjb3JyZXNw b25kaW5nIGV4dGNvbiBzdGF0ZSAoaWYgMCwgdGhpcyBzdHJ1Y3QgZGVub3Rlcw0KPiArICoJCXRo ZSBsYXN0IGFkY19qYWNrX2NvbmQgZWxlbWVudCBhbW9uZyB0aGUgYXJyYXkpDQo+ICsgKiBAbWlu X2FkYwktIG1pbiBhZGMgdmFsdWUgZm9yIHRoaXMgY29uZGl0aW9uDQo+ICsgKiBAbWF4X2FkYwkt IG1heCBhZGMgdmFsdWUgZm9yIHRoaXMgY29uZGl0aW9uDQo+ICsgKg0KPiArICogRm9yIGV4YW1w bGUsIGlmIHsgLnN0YXRlID0gMHgzLCAubWluX2FkYyA9IDEwMCwgLm1heF9hZGMgPSAyMDB9LCBp dCBtZWFucw0KPiArICogdGhhdCBpZiBBREMgdmFsdWUgaXMgYmV0d2VlbiAoaW5jbHVzaXZlKSAx MDAgYW5kIDIwMCwgdGhhbiB0aGUgY2FibGUgMCBhbmQNCj4gKyAqIDEgYXJlIGF0dGFjaGVkICgx PDwwIHwgMTw8MSA9PSAweDMpDQo+ICsgKg0KPiArICogTm90ZSB0aGF0IHlvdSBkb24ndCBuZWVk IHRvIGRlc2NyaWJlIGNvbmRpdGlvbiBmb3IgIm5vIGNhYmxlIGF0dGFjaGVkIg0KPiArICogYmVj YXVzZSB3aGVuIG5vIGFkY19qYWNrX2NvbmQgaXMgbWV0LCBzdGF0ZSA9IDAgaXMgYXV0b21hdGlj YWxseSBjaG9zZW4uDQo+ICsgKi8NCj4gK3N0cnVjdCBhZGNfamFja19jb25kIHsNCj4gKwl1MzIg c3RhdGU7IC8qIGV4dGNvbiBzdGF0ZSB2YWx1ZS4gMCBpZiBpbnZhbGlkICovDQo+ICsJdTMyIG1p bl9hZGM7DQo+ICsJdTMyIG1heF9hZGM7DQo+ICt9Ow0KPiArDQo+ICsvKioNCj4gKyAqIHN0cnVj dCBhZGNfamFja19wZGF0YSAtIHBsYXRmb3JtIGRhdGEgZm9yIGFkYyBqYWNrIGRldmljZS4NCj4g KyAqIEBuYW1lCS0gbmFtZSBvZiB0aGUgZXh0Y29uIGRldmljZS4gSWYgbnVsbCwgImFkYy1qYWNr IiBpcyB1c2VkLg0KPiArICogQGNvbnN1bWVyX2NoYW5uZWwgLSBVbmlxdWUgbmFtZSB0byBpZGVu dGlmeSB0aGUgY2hhbm5lbCBvbiB0aGUgY29uc3VtZXINCj4gKyAqICAgICAgICAgICAgICAgICAg IHNpZGUuIFRoaXMgdHlwaWNhbGx5IGRlc2NyaWJlcyB0aGUgY2hhbm5lbHMgdXNlIHdpdGhpbg0K PiArICogICAgICAgICAgICAgICAgICAgdGhlIGNvbnN1bWVyLiBFLmcuICdiYXR0ZXJ5X3ZvbHRh Z2UnDQo+ICsgKiBAY2FibGVfbmFtZXMJLSBhcnJheSBvZiBjYWJsZSBuYW1lcyBlbmRpbmcgd2l0 aCBudWxsLiBJZiB0aGUgYXJyYXkgaXRzZWxmDQo+ICsgKgkJaWYgbnVsbCwgZXh0Y29uIHN0YW5k YXJkIGNhYmxlIG5hbWVzIGFyZSBjaG9zZW4uDQo+ICsgKiBAYWRjX2NvbnRpdGlvbgktIGFycmF5 IG9mIHN0cnVjdCBhZGNfamFja19jb25kIGNvbmRpdGlvbnMgZW5kaW5nDQo+ICsgKgkJCXdpdGgg LnN0YXRlID0gMCBlbnRyeS4gVGhpcyBkZXNjcmliZXMgaG93IHRvIGRlY29kZQ0KPiArICoJCQlh ZGMgdmFsdWVzIGludG8gZXh0Y29uIHN0YXRlLg0KPiArICogQGlycQkJLSBJUlEgbnVtYmVyIHRo YXQgaXMgdHJpZ2dlcnJlZCBieSBjYWJsZSBhdHRhY2gvZGV0YWNoDQo+ICsgKgkJZXZlbnRzLiBJ ZiBpcnEgPSAwLCB1c2Ugc2hvdWxkIG1hbnVhbGx5IHVwZGF0ZSBleHRjb24gc3RhdGUNCj4gKyAq CQl3aXRoIGV4dGNvbiBBUElzLg0KPiArICogQGlycV9mbGFncwktIGlycSBmbGFncyB1c2VkIGZv ciB0aGUgQGlycQ0KPiArICogQGhhbmRsaW5nX2RlbGF5X21zCS0gaW4gc29tZSBkZXZpY2VzLCB3 ZSBuZWVkIHRvIHJlYWQgQURDIHZhbHVlIHNvbWUNCj4gKyAqCQkJbWlsbGktc2Vjb25kcyBhZnRl ciB0aGUgaW50ZXJydXB0IG9jY3Vycy4gWW91IG1heQ0KPiArICoJCQlkZXNjcmliZSBzdWNoIGRl bGF5cyB3aXRoIEBoYW5kbGluZ19kZWxheV9tcywgd2hpY2gNCj4gKyAqCQkJaXMgcm91bmRlZC1v ZmYgYnkgamlmZmllcy4NCj4gKyAqLw0KPiArc3RydWN0IGFkY19qYWNrX3BkYXRhIHsNCj4gKwlj b25zdCBjaGFyICpuYW1lOw0KPiArCWNvbnN0IGNoYXIgKmNvbnN1bWVyX2NoYW5uZWw7DQo+ICsJ LyoNCj4gKwkgKiBOVUxMIGlmIHN0YW5kYXJkIGV4dGNvbiBuYW1lcyBhcmUgdXNlZC4NCj4gKwkg KiBUaGUgbGFzdCBlbnRyeSBzaG91bGQgYmUgTlVMTA0KPiArCSAqLw0KPiArCWNvbnN0IGNoYXIg KipjYWJsZV9uYW1lczsNCj4gKwkvKiBUaGUgbGFzdCBlbnRyeSdzIHN0YXRlIHNob3VsZCBiZSAw ICovDQo+ICsJc3RydWN0IGFkY19qYWNrX2NvbmQgKmFkY19jb25kaXRpb247DQo+ICsNCj4gKwlp bnQgaXJxOyAvKiBKYWNrIGluc2VydGlvbi9yZW1vdmFsIGludGVycnVwdCAqLw0KPiArCXVuc2ln bmVkIGxvbmcgaXJxX2ZsYWdzOw0KPiArCXVuc2lnbmVkIGxvbmcgaGFuZGxpbmdfZGVsYXlfbXM7 IC8qIGluIG1zICovDQo+ICt9Ow0KPiArDQo+ICsjZW5kaWYgLyogX0VYVENPTl9BRENfSkFDS19I ICovDQo+IC0tIA0KPiAxLjcuMQ0KPiANCj4gDQo+IA0KPiANCj4gICAgICAgIA0KPiAgIA0KPiAg ICAgICAgICANCj4gDQo=