From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liviu Dudau Subject: Re: [RFC PATCH 1/3] amba-clcd: Add Device Tree support to amba-clcd driver Date: Thu, 20 Sep 2012 11:24:53 +0100 Message-ID: <20120920102453.GG32603@e102652-lin.cambridge.arm.com> References: <1348070666-9153-1-git-send-email-ryan.harkin@linaro.org> <1348070666-9153-2-git-send-email-ryan.harkin@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1348070666-9153-2-git-send-email-ryan.harkin@linaro.org> Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Ryan Harkin Cc: "stigge@antcom.de" , "tixy@linaro.org" , "linux-fbdev@vger.kernel.org" , Pawel Moll , "devicetree-discuss@lists.ozlabs.org" , "spear-devel@list.st.com" , "shiraz.hashim@st.com" , "viresh.linux@gmail.com" , "arnd.bergmann@linaro.org" , "linux-arm-kernel@lists.infradead.org" List-Id: devicetree@vger.kernel.org T24gV2VkLCBTZXAgMTksIDIwMTIgYXQgMDU6MDQ6MjRQTSArMDEwMCwgUnlhbiBIYXJraW4gd3Jv dGU6Cj4gQWRkIHN1cHBvcnQgdG8gcGFyc2UgdGhlIGRpc3BsYXkgY29uZmlndXJhdGlvbiBmcm9t IGRldmljZSB0cmVlLgo+Cj4gSWYgdGhlIGJvYXJkIGRvZXMgbm90IHByb3ZpZGUgcGxhdGZvcm0g c3BlY2lmaWMgZnVuY3Rpb25zIGluIHRoZSBzdHJ1Y3QKPiBjbGNkX2JvYXJkIGNvbnRhaW5lZCB3 aXRoIHRoZSBhbWJhIGRldmljZSBpbmZvLCB0aGVuIGRlZmF1bHRzIGFyZSBwcm92aWRlZAo+IGJ5 IHRoZSBkcml2ZXIuCj4KPiBUaGUgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbiBjYW4gZWl0aGVy IGFzayBmb3IgYSBETUEgc2V0dXAgb3IgcHJvdmlkZSBhCj4gZnJhbWVidWZmZXIgYWRkcmVzcyB0 byBiZSByZW1hcHBlZCBpbnRvIHRoZSBkcml2ZXIuCj4KPiBTaWduZWQtb2ZmLWJ5OiBSeWFuIEhh cmtpbiA8cnlhbi5oYXJraW5AbGluYXJvLm9yZz4KPiAtLS0KPiAgZHJpdmVycy92aWRlby9hbWJh LWNsY2QuYyB8ICAyNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gIDEgZmlsZSBjaGFuZ2VkLCAyNTMgaW5zZXJ0aW9ucygrKQo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdmlkZW8vYW1iYS1jbGNkLmMgYi9kcml2ZXJzL3ZpZGVvL2FtYmEtY2xjZC5jCj4g aW5kZXggMGEyY2NlNy4uMDFkYmFkMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2FtYmEt Y2xjZC5jCj4gKysrIGIvZHJpdmVycy92aWRlby9hbWJhLWNsY2QuYwo+IEBAIC0xNiw3ICsxNiwx MCBAQAo+ICAjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8bGludXgvZG1hLW1h cHBpbmcuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21lbWJsb2NrLmg+Cj4gICNpbmNsdWRlIDxsaW51 eC9tbS5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2ZiLmg+ Cj4gICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9pb3BvcnQuaD4K PiBAQCAtMzkxLDYgKzM5NCwxOSBAQCBzdGF0aWMgaW50IGNsY2RmYl9ibGFuayhpbnQgYmxhbmtf bW9kZSwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gICAgICAgfQo+ICAgICAgIHJldHVybiAwOwo+ ICB9Cj4gK2ludCBjbGNkZmJfbW1hcF9kbWEoc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSkKPiArewo+ICsgICAgIHJldHVybiBkbWFfbW1hcF93cml0ZWNvbWJp bmUoJmZiLT5kZXYtPmRldiwgdm1hLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmItPmZiLnNjcmVlbl9iYXNlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmItPmZiLmZpeC5zbWVtX3N0YXJ0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmItPmZiLmZpeC5zbWVtX2xlbik7Cj4gK30KPiArCj4gK3ZvaWQgY2xjZGZiX3JlbW92 ZV9kbWEoc3RydWN0IGNsY2RfZmIgKmZiKQo+ICt7Cj4gKyAgICAgZG1hX2ZyZWVfd3JpdGVjb21i aW5lKCZmYi0+ZGV2LT5kZXYsIGZiLT5mYi5maXguc21lbV9sZW4sCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZiLT5mYi5zY3JlZW5fYmFzZSwgZmItPmZiLmZpeC5zbWVtX3N0YXJ0KTsK PiArfQo+Cj4gIHN0YXRpYyBpbnQgY2xjZGZiX21tYXAoc3RydWN0IGZiX2luZm8gKmluZm8sCj4g ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gQEAgLTU0 MiwxMiArNTU4LDI0OSBAQCBzdGF0aWMgaW50IGNsY2RmYl9yZWdpc3RlcihzdHJ1Y3QgY2xjZF9m YiAqZmIpCj4gICAgICAgcmV0dXJuIHJldDsKPiAgfQo+Cj4gK3N0cnVjdCBzdHJpbmdfbG9va3Vw IHsKPiArICAgICBjb25zdCBjaGFyICpzdHJpbmc7Cj4gKyAgICAgY29uc3QgdTMyICAgICAgIHZh bDsKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qgc3RyaW5nX2xvb2t1cCB2bW9kZV9sb29rdXBz W10gPSB7Cj4gKyAgICAgeyAiRkJfVk1PREVfTk9OSU5URVJMQUNFRCIsIEZCX1ZNT0RFX05PTklO VEVSTEFDRUR9LAo+ICsgICAgIHsgIkZCX1ZNT0RFX0lOVEVSTEFDRUQiLCAgICBGQl9WTU9ERV9J TlRFUkxBQ0VEfSwKPiArICAgICB7ICJGQl9WTU9ERV9ET1VCTEUiLCAgICAgICAgRkJfVk1PREVf RE9VQkxFfSwKPiArICAgICB7ICJGQl9WTU9ERV9PRERfRkxEX0ZJUlNUIiwgRkJfVk1PREVfT0RE X0ZMRF9GSVJTVH0sCj4gKyAgICAgeyBOVUxMLCAwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgc3Ry dWN0IHN0cmluZ19sb29rdXAgdGltMl9sb29rdXBzW10gPSB7Cj4gKyAgICAgeyAiVElNMl9DTEtT RUwiLCBUSU0yX0NMS1NFTH0sCj4gKyAgICAgeyAiVElNMl9JVlMiLCAgICBUSU0yX0lWU30sCj4g KyAgICAgeyAiVElNMl9JSFMiLCAgICBUSU0yX0lIU30sCj4gKyAgICAgeyAiVElNMl9JUEMiLCAg ICBUSU0yX0lQQ30sCj4gKyAgICAgeyAiVElNMl9JT0UiLCAgICBUSU0yX0lPRX0sCj4gKyAgICAg eyAiVElNMl9CQ0QiLCAgICBUSU0yX0JDRH0sCj4gKyAgICAgeyBOVUxMLCAwfSwKPiArfTsKPiAr c3RhdGljIHN0cnVjdCBzdHJpbmdfbG9va3VwIGNudGxfbG9va3Vwc1tdID0gewo+ICsgICAgIHsi Q05UTF9MQ0RFTiIsICAgICAgICBDTlRMX0xDREVOfSwKPiArICAgICB7IkNOVExfTENEQlBQMSIs ICAgICAgQ05UTF9MQ0RCUFAxfSwKPiArICAgICB7IkNOVExfTENEQlBQMiIsICAgICAgQ05UTF9M Q0RCUFAyfSwKPiArICAgICB7IkNOVExfTENEQlBQNCIsICAgICAgQ05UTF9MQ0RCUFA0fSwKPiAr ICAgICB7IkNOVExfTENEQlBQOCIsICAgICAgQ05UTF9MQ0RCUFA4fSwKPiArICAgICB7IkNOVExf TENEQlBQMTYiLCAgICAgQ05UTF9MQ0RCUFAxNn0sCj4gKyAgICAgeyJDTlRMX0xDREJQUDE2XzU2 NSIsIENOVExfTENEQlBQMTZfNTY1fSwKPiArICAgICB7IkNOVExfTENEQlBQMTZfNDQ0IiwgQ05U TF9MQ0RCUFAxNl80NDR9LAo+ICsgICAgIHsiQ05UTF9MQ0RCUFAyNCIsICAgICBDTlRMX0xDREJQ UDI0fSwKPiArICAgICB7IkNOVExfTENEQlciLCAgICAgICAgQ05UTF9MQ0RCV30sCj4gKyAgICAg eyJDTlRMX0xDRFRGVCIsICAgICAgIENOVExfTENEVEZUfSwKPiArICAgICB7IkNOVExfTENETU9O TzgiLCAgICAgQ05UTF9MQ0RNT05POH0sCj4gKyAgICAgeyJDTlRMX0xDRERVQUwiLCAgICAgIENO VExfTENERFVBTH0sCj4gKyAgICAgeyJDTlRMX0JHUiIsICAgICAgICAgIENOVExfQkdSfSwKPiAr ICAgICB7IkNOVExfQkVCTyIsICAgICAgICAgQ05UTF9CRUJPfSwKPiArICAgICB7IkNOVExfQkVQ TyIsICAgICAgICAgQ05UTF9CRVBPfSwKPiArICAgICB7IkNOVExfTENEUFdSIiwgICAgICAgQ05U TF9MQ0RQV1J9LAo+ICsgICAgIHsiQ05UTF9MQ0RWQ09NUCgxKSIsICBDTlRMX0xDRFZDT01QKDEp fSwKPiArICAgICB7IkNOVExfTENEVkNPTVAoMikiLCAgQ05UTF9MQ0RWQ09NUCgyKX0sCj4gKyAg ICAgeyJDTlRMX0xDRFZDT01QKDMpIiwgIENOVExfTENEVkNPTVAoMyl9LAo+ICsgICAgIHsiQ05U TF9MQ0RWQ09NUCg0KSIsICBDTlRMX0xDRFZDT01QKDQpfSwKPiArICAgICB7IkNOVExfTENEVkNP TVAoNSkiLCAgQ05UTF9MQ0RWQ09NUCg1KX0sCj4gKyAgICAgeyJDTlRMX0xDRFZDT01QKDYpIiwg IENOVExfTENEVkNPTVAoNil9LAo+ICsgICAgIHsiQ05UTF9MQ0RWQ09NUCg3KSIsICBDTlRMX0xD RFZDT01QKDcpfSwKPiArICAgICB7IkNOVExfTERNQUZJRk9USU1FIiwgQ05UTF9MRE1BRklGT1RJ TUV9LAo+ICsgICAgIHsiQ05UTF9XQVRFUk1BUksiLCAgICBDTlRMX1dBVEVSTUFSS30sCj4gKyAg ICAgeyBOVUxMLCAwfSwKPiArfTsKPiArc3RhdGljIHN0cnVjdCBzdHJpbmdfbG9va3VwIGNhcHNf bG9va3Vwc1tdID0gewo+ICsgICAgIHsiQ0xDRF9DQVBfUkdCNDQ0IiwgIENMQ0RfQ0FQX1JHQjQ0 NH0sCj4gKyAgICAgeyJDTENEX0NBUF9SR0I1NTUxIiwgQ0xDRF9DQVBfUkdCNTU1MX0sCj4gKyAg ICAgeyJDTENEX0NBUF9SR0I1NjUiLCAgQ0xDRF9DQVBfUkdCNTY1fSwKPiArICAgICB7IkNMQ0Rf Q0FQX1JHQjg4OCIsICBDTENEX0NBUF9SR0I4ODh9LAo+ICsgICAgIHsiQ0xDRF9DQVBfQkdSNDQ0 IiwgIENMQ0RfQ0FQX0JHUjQ0NH0sCj4gKyAgICAgeyJDTENEX0NBUF9CR1I1NTUxIiwgQ0xDRF9D QVBfQkdSNTU1MX0sCj4gKyAgICAgeyJDTENEX0NBUF9CR1I1NjUiLCAgQ0xDRF9DQVBfQkdSNTY1 fSwKPiArICAgICB7IkNMQ0RfQ0FQX0JHUjg4OCIsICBDTENEX0NBUF9CR1I4ODh9LAo+ICsgICAg IHsiQ0xDRF9DQVBfNDQ0IiwgICAgIENMQ0RfQ0FQXzQ0NH0sCj4gKyAgICAgeyJDTENEX0NBUF81 NTUxIiwgICAgQ0xDRF9DQVBfNTU1MX0sCj4gKyAgICAgeyJDTENEX0NBUF81NjUiLCAgICAgQ0xD RF9DQVBfNTY1fSwKPiArICAgICB7IkNMQ0RfQ0FQXzg4OCIsICAgICBDTENEX0NBUF84ODh9LAo+ ICsgICAgIHsiQ0xDRF9DQVBfUkdCIiwgICAgIENMQ0RfQ0FQX1JHQn0sCj4gKyAgICAgeyJDTENE X0NBUF9CR1IiLCAgICAgQ0xDRF9DQVBfQkdSfSwKPiArICAgICB7IkNMQ0RfQ0FQX0FMTCIsICAg ICBDTENEX0NBUF9BTEx9LAo+ICsgICAgIHsgTlVMTCwgMH0sCj4gK307Cj4gKwo+ICt1MzIgcGFy c2Vfc2V0dGluZyhzdHJ1Y3Qgc3RyaW5nX2xvb2t1cCAqbG9va3VwLCBjb25zdCBjaGFyICpuYW1l KQo+ICt7Cj4gKyAgICAgaW50IGkgPSAwOwo+ICsgICAgIHdoaWxlIChsb29rdXBbaV0uc3RyaW5n ICE9IE5VTEwpIHsKPiArICAgICAgICAgICAgIGlmIChzdHJjbXAobG9va3VwW2ldLnN0cmluZywg bmFtZSkgPT0gMCkKPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvb2t1cFtpXS52YWw7 Cj4gKyAgICAgICAgICAgICArK2k7Cj4gKyAgICAgfQo+ICsgICAgIHJldHVybiAtRUlOVkFMOwo+ ICt9Cj4gKwo+ICt1MzIgZ2V0X3N0cmluZ19sb29rdXAoc3RydWN0IGRldmljZV9ub2RlICpub2Rl LCBjb25zdCBjaGFyICpuYW1lLAo+ICsgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0cmluZ19s b29rdXAgKmxvb2t1cCkKPiArewoKSSBoYXZlIHRoaXMgZmVlbGluZyB0aGF0IHN3YXBwaW5nIHRo ZSBuYW1lcyBvZiB0aGUgdHdvIGZ1bmN0aW9ucyBhYm92ZQp3b3VsZCByZWZsZWN0IGJldHRlciB0 aGVpciBhY3R1YWwgZnVuY3Rpb25hbGl0eS4KCj4gKyAgICAgY29uc3QgY2hhciAqc3RyaW5nOwo+ ICsgICAgIGludCBjb3VudCwgaSwgcmV0ID0gMDsKPiArCj4gKyAgICAgY291bnQgPSBvZl9wcm9w ZXJ0eV9jb3VudF9zdHJpbmdzKG5vZGUsIG5hbWUpOwo+ICsgICAgIGlmIChjb3VudCA+PSAwKQo+ ICsgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCj4gKyAgICAgICAgICAg ICAgICAgICAgIGlmIChvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZ19pbmRleChub2RlLCBuYW1lLCBp LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmluZykgPT0gMCkK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgfD0gcGFyc2Vfc2V0dGluZyhsb29r dXAsIHN0cmluZyk7Cj4gKyAgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiAraW50IGdldF92YWwo c3RydWN0IGRldmljZV9ub2RlICpub2RlLCBjb25zdCBjaGFyICpzdHJpbmcpCj4gK3sKPiArICAg ICB1MzIgcmV0ID0gMDsKPiArCj4gKyAgICAgaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUs IHN0cmluZywgJnJldCkpCj4gKyAgICAgICAgICAgICByZXQgPSAtMTsKPiArICAgICByZXR1cm4g cmV0Owo+ICt9Cj4gKwo+ICtzdHJ1Y3QgY2xjZF9wYW5lbCAqZ2V0UGFuZWwoc3RydWN0IGRldmlj ZV9ub2RlICpub2RlKQo+ICt7Cj4gKyAgICAgc3RhdGljIHN0cnVjdCBjbGNkX3BhbmVsIHBhbmVs Owo+ICsKPiArICAgICBwYW5lbC5tb2RlLnJlZnJlc2ggICAgICA9IGdldF92YWwobm9kZSwgInJl ZnJlc2giKTsKPiArICAgICBwYW5lbC5tb2RlLnhyZXMgICAgICAgICA9IGdldF92YWwobm9kZSwg InhyZXMiKTsKPiArICAgICBwYW5lbC5tb2RlLnlyZXMgICAgICAgICA9IGdldF92YWwobm9kZSwg InlyZXMiKTsKPiArICAgICBwYW5lbC5tb2RlLnBpeGNsb2NrICAgICA9IGdldF92YWwobm9kZSwg InBpeGNsb2NrIik7Cj4gKyAgICAgcGFuZWwubW9kZS5sZWZ0X21hcmdpbiAgPSBnZXRfdmFsKG5v ZGUsICJsZWZ0X21hcmdpbiIpOwo+ICsgICAgIHBhbmVsLm1vZGUucmlnaHRfbWFyZ2luID0gZ2V0 X3ZhbChub2RlLCAicmlnaHRfbWFyZ2luIik7Cj4gKyAgICAgcGFuZWwubW9kZS51cHBlcl9tYXJn aW4gPSBnZXRfdmFsKG5vZGUsICJ1cHBlcl9tYXJnaW4iKTsKPiArICAgICBwYW5lbC5tb2RlLmxv d2VyX21hcmdpbiA9IGdldF92YWwobm9kZSwgImxvd2VyX21hcmdpbiIpOwo+ICsgICAgIHBhbmVs Lm1vZGUuaHN5bmNfbGVuICAgID0gZ2V0X3ZhbChub2RlLCAiaHN5bmNfbGVuIik7Cj4gKyAgICAg cGFuZWwubW9kZS52c3luY19sZW4gICAgPSBnZXRfdmFsKG5vZGUsICJ2c3luY19sZW4iKTsKPiAr ICAgICBwYW5lbC5tb2RlLnN5bmMgICAgICAgICA9IGdldF92YWwobm9kZSwgInN5bmMiKTsKPiAr ICAgICBwYW5lbC5icHAgICAgICAgICAgICAgICA9IGdldF92YWwobm9kZSwgImJwcCIpOwo+ICsg ICAgIHBhbmVsLndpZHRoICAgICAgICAgICAgID0gKHNpZ25lZCBzaG9ydCkgZ2V0X3ZhbChub2Rl LCAid2lkdGgiKTsKPiArICAgICBwYW5lbC5oZWlnaHQgICAgICAgICAgICA9IChzaWduZWQgc2hv cnQpIGdldF92YWwobm9kZSwgImhlaWdodCIpOwo+ICsKPiArICAgICBwYW5lbC5tb2RlLnZtb2Rl ID0gZ2V0X3N0cmluZ19sb29rdXAobm9kZSwgInZtb2RlIiwgdm1vZGVfbG9va3Vwcyk7Cj4gKyAg ICAgcGFuZWwudGltMiAgICAgICA9IGdldF9zdHJpbmdfbG9va3VwKG5vZGUsICJ0aW0yIiwgIHRp bTJfbG9va3Vwcyk7Cj4gKyAgICAgcGFuZWwuY250bCAgICAgICA9IGdldF9zdHJpbmdfbG9va3Vw KG5vZGUsICJjbnRsIiwgIGNudGxfbG9va3Vwcyk7Cj4gKyAgICAgcGFuZWwuY2FwcyAgICAgICA9 IGdldF9zdHJpbmdfbG9va3VwKG5vZGUsICJjYXBzIiwgIGNhcHNfbG9va3Vwcyk7Cj4gKwo+ICsg ICAgIHJldHVybiAmcGFuZWw7Cj4gK30KPiArCj4gK3N0cnVjdCBjbGNkX3BhbmVsICpjbGNkZmJf Z2V0X3BhbmVsKGNvbnN0IGNoYXIgKm5hbWUpCj4gK3sKPiArICAgICBzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5vZGUgPSBOVUxMOwo+ICsgICAgIGNvbnN0IGNoYXIgKm1vZGU7Cj4gKyAgICAgc3RydWN0 IGNsY2RfcGFuZWwgKnBhbmVsID0gTlVMTDsKPiArCj4gKyAgICAgZG8gewo+ICsgICAgICAgICAg ICAgbm9kZSA9IG9mX2ZpbmRfY29tcGF0aWJsZV9ub2RlKG5vZGUsIE5VTEwsICJwYW5lbCIpOwo+ ICsgICAgICAgICAgICAgaWYgKG5vZGUpCj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChvZl9w cm9wZXJ0eV9yZWFkX3N0cmluZyhub2RlLCAibW9kZSIsICZtb2RlKSA9PSAwKQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJjbXAobW9kZSwgbmFtZSkgPT0gMCkgewo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWwgPSBnZXRQYW5lbChub2Rl KTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLT5tb2RlLm5h bWUgPSBuYW1lOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICB9IHdo aWxlIChub2RlICE9IE5VTEwpOwo+ICsKPiArICAgICByZXR1cm4gcGFuZWw7Cj4gK30KPiArCj4g KyNpZmRlZiBDT05GSUdfT0YKCnNob3VsZG4ndCB0aGlzICNpZmRlZiBiZSBlYXJsaWVyPyB5b3Ug YXJlIGNhbGxpbmcgb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcoKQphbmQgd2hpbGUgdGhlcmUgYXJl IGVtcHR5IGRlZmluaXRpb25zIGlmIENPTkZJR19PRiBpcyBub3QgZGVmaW5lZCwgdGhlIGNvZGUK d2lsbCBkbyBub3RoaW5nIGluIHRoYXQgY2FzZS4gSXMgdGhhdCBpbnRlbmRlZD8gVGhlIGNsY2Rm Yl9nZXRfcGFuZWwoKQpmdW5jdGlvbiBvbmx5IGdldHMgY2FsbGVkIGlmIENPTkZJR19PRiAqaXMq IGRlZmluZWQuCgoKPiArc3RhdGljIGludCBjbGNkZmJfZHRfaW5pdChzdHJ1Y3QgY2xjZF9mYiAq ZmIpCj4gK3sKPiArICAgICBpbnQgZXJyID0gMDsKPiArICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUg Km5vZGU7Cj4gKyAgICAgY29uc3QgY2hhciAqbW9kZTsKPiArICAgICBkbWFfYWRkcl90IGRtYTsK PiArICAgICB1MzIgdXNlX2RtYTsKPiArICAgICBjb25zdCBfX2JlMzIgKnByb3A7Cj4gKyAgICAg aW50IGxlbiwgbmEsIG5zOwo+ICsgICAgIHBoeXNfYWRkcl90IGZiX2Jhc2UsIGZiX3NpemU7Cj4g Kwo+ICsgICAgIG5vZGUgPSBmYi0+ZGV2LT5kZXYub2Zfbm9kZTsKPiArICAgICBpZiAoIW5vZGUp Cj4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsKPiArCj4gKyAgICAgbmEgPSBvZl9uX2Fk ZHJfY2VsbHMobm9kZSk7Cj4gKyAgICAgbnMgPSBvZl9uX3NpemVfY2VsbHMobm9kZSk7Cj4gKwo+ ICsgICAgIGlmIChXQVJOX09OKG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKG5vZGUsICJtb2RlIiwg Jm1vZGUpKSkKPiArICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOwo+ICsKPiArICAgICBmYi0+ cGFuZWwgPSBjbGNkZmJfZ2V0X3BhbmVsKG1vZGUpOwo+ICsgICAgIGlmICghZmItPnBhbmVsKQo+ ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICAgZmItPmZiLmZpeC5zbWVtX2xl biA9IGZiLT5wYW5lbC0+bW9kZS54cmVzICogZmItPnBhbmVsLT5tb2RlLnlyZXMgKiAyOwo+ICsK PiArICAgICBpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgInVzZV9kbWEiLCAmdXNlX2Rt YSkpCgpJIGhhdmVuJ3Qgc2VlbiBhbnkgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBwcm9wZXJ0eS4g V2hhdCdzIHRoZSBpbnRlbmRlZCB1c2U/Cgo+ICsgICAgICAgICAgICAgdXNlX2RtYSA9IDA7Cj4g KyAgICAgaWYgKHVzZV9kbWEpIHsKPiArICAgICAgICAgICAgIGZiLT5mYi5zY3JlZW5fYmFzZSA9 IGRtYV9hbGxvY193cml0ZWNvbWJpbmUoJmZiLT5kZXYtPmRldiwKPiArICAgICAgICAgICAgICAg ICAgICAgZmItPmZiLmZpeC5zbWVtX2xlbiwgJmRtYSwgR0ZQX0tFUk5FTCk7Cj4gKyAgICAgICAg ICAgICBpZiAoIWZiLT5mYi5zY3JlZW5fYmFzZSkgewo+ICsgICAgICAgICAgICAgICAgICAgICBw cl9lcnIoIkNMQ0Q6IHVuYWJsZSB0byBtYXAgZnJhbWVidWZmZXJcbiIpOwo+ICsgICAgICAgICAg ICAgICAgICAgICBlcnIgPSAtRU5PTUVNOwo+ICsgICAgICAgICAgICAgfSBlbHNlCj4gKyAgICAg ICAgICAgICAgICAgICAgIGZiLT5mYi5maXguc21lbV9zdGFydCAgID0gZG1hOwo+ICsgICAgIH0g ZWxzZSB7Cj4gKyAgICAgICAgICAgICBwcm9wID0gb2ZfZ2V0X3Byb3BlcnR5KG5vZGUsICJmcmFt ZWJ1ZmZlciIsICZsZW4pOwo+ICsgICAgICAgICAgICAgaWYgKFdBUk5fT04oIXByb3AgfHwgbGVu IDwgKG5hICsgbnMpICogc2l6ZW9mKCpwcm9wKSkpCj4gKyAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+ICsgICAgICAgICAgICAgZmJfYmFzZSA9IG9mX3JlYWRfbnVtYmVyKHBy b3AsIG5hKTsKPiArICAgICAgICAgICAgIGZiX3NpemUgPSBvZl9yZWFkX251bWJlcihwcm9wICsg bmEsIG5zKTsKPiArCj4gKyAgICAgICAgICAgICBpZiAobWVtYmxvY2tfcmVtb3ZlKGZiX2Jhc2Us IGZiX3NpemUpICE9IDApCj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ ICsKPiArICAgICAgICAgICAgIGZiLT5mYi5maXguc21lbV9zdGFydCA9IGZiX2Jhc2U7Cj4gKyAg ICAgICAgICAgICBmYi0+ZmIuc2NyZWVuX2Jhc2UgPSBpb3JlbWFwX3djKGZiLT5mYi5maXguc21l bV9zdGFydCwgZmJfc2l6ZSk7Cj4gKyAgICAgfQo+ICsgICAgIHJldHVybiBlcnI7Cj4gK30KPiAr I2VuZGlmIC8qIENPTkZJR19PRiAqLwo+ICsKPiAgc3RhdGljIGludCBjbGNkZmJfcHJvYmUoc3Ry dWN0IGFtYmFfZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBhbWJhX2lkICppZCkKPiAgewo+ICAg ICAgIHN0cnVjdCBjbGNkX2JvYXJkICpib2FyZCA9IGRldi0+ZGV2LnBsYXRmb3JtX2RhdGE7Cj4g ICAgICAgc3RydWN0IGNsY2RfZmIgKmZiOwo+ICAgICAgIGludCByZXQ7Cj4KPiArI2lmZGVmIENP TkZJR19PRgo+ICsgICAgIGlmIChkZXYtPmRldi5vZl9ub2RlKSB7Cj4gKyAgICAgICAgICAgICBj b25zdCBfX2JlMzIgKnByb3A7Cj4gKyAgICAgICAgICAgICBpbnQgbGVuLCBuYSwgbnM7Cj4gKyAg ICAgICAgICAgICBwaHlzX2FkZHJfdCByZWdfYmFzZTsKPiArCj4gKyAgICAgICAgICAgICBuYSA9 IG9mX25fYWRkcl9jZWxscyhkZXYtPmRldi5vZl9ub2RlKTsKPiArICAgICAgICAgICAgIG5zID0g b2Zfbl9zaXplX2NlbGxzKGRldi0+ZGV2Lm9mX25vZGUpOwo+ICsKPiArICAgICAgICAgICAgIHBy b3AgPSBvZl9nZXRfcHJvcGVydHkoZGV2LT5kZXYub2Zfbm9kZSwgInJlZyIsICZsZW4pOwo+ICsg ICAgICAgICAgICAgaWYgKFdBUk5fT04oIXByb3AgfHwgbGVuIDwgKG5hICsgbnMpICogc2l6ZW9m KCpwcm9wKSkpCj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAg ICAgICAgICAgcmVnX2Jhc2UgPSBvZl9yZWFkX251bWJlcihwcm9wLCBuYSk7Cj4gKwo+ICsgICAg ICAgICAgICAgaWYgKGRldi0+cmVzLnN0YXJ0ICE9IHJlZ19iYXNlKQo+ICsgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICAgICAgICAgICBpZiAoIWJvYXJkKSB7 Cj4gKyAgICAgICAgICAgICAgICAgICAgIGJvYXJkID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGNs Y2RfYm9hcmQpLCBHRlBfS0VSTkVMKTsKPiArICAgICAgICAgICAgICAgICAgICAgaWYgKCFib2Fy ZCkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAg ICAgICAgICAgICAgICAgICAgYm9hcmQtPm5hbWUgICAgPSAiRGV2aWNlIFRyZWUgQ0xDRCBQTDEx MSI7Cj4gKyAgICAgICAgICAgICAgICAgICAgIGJvYXJkLT5jYXBzICAgID0gQ0xDRF9DQVBfNTU1 MSB8IENMQ0RfQ0FQXzU2NTsKPiArICAgICAgICAgICAgICAgICAgICAgYm9hcmQtPmNoZWNrICAg PSBjbGNkZmJfY2hlY2s7Cj4gKyAgICAgICAgICAgICAgICAgICAgIGJvYXJkLT5kZWNvZGUgID0g Y2xjZGZiX2RlY29kZTsKPiArICAgICAgICAgICAgICAgICAgICAgYm9hcmQtPnNldHVwICAgPSBj bGNkZmJfZHRfaW5pdDsKPiArICAgICAgICAgICAgICAgICAgICAgYm9hcmQtPm1tYXAgICAgPSBj bGNkZmJfbW1hcF9kbWE7Cj4gKyAgICAgICAgICAgICAgICAgICAgIGJvYXJkLT5yZW1vdmUgID0g Y2xjZGZiX3JlbW92ZV9kbWE7Cj4gKyAgICAgICAgICAgICB9Cj4gKyAgICAgfQo+ICsjZW5kaWYg LyogQ09ORklHX09GICovCj4gKwo+ICAgICAgIGlmICghYm9hcmQpCj4gICAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKPgo+IC0tCj4gMS43LjkuNQo+Cj4KCi0tCj09PT09PT09PT09PT09PT09 PT09CnwgSSB3b3VsZCBsaWtlIHRvIHwKfCBmaXggdGhlIHdvcmxkLCAgfAp8IGJ1dCB0aGV5J3Jl IG5vdCB8CnwgZ2l2aW5nIG1lIHRoZSAgIHwKIFwgc291cmNlIGNvZGUhICAvCiAgLS0tLS0tLS0t LS0tLS0tCiAgICDCr1xfKOODhClfL8KvCgotLSBJTVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVu dHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFjaG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5k IG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNp cGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRp c2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3RoZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBw dXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBpbmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiAg VGhhbmsgeW91LgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LWFybS1rZXJuZWwK