From mboxrd@z Thu Jan 1 00:00:00 1970 From: Qiang Yu Subject: [PATCH RFC 12/24] drm/lima: add GP related functions Date: Fri, 18 May 2018 17:28:03 +0800 Message-ID: <20180518092815.25280-13-yuq825@gmail.com> References: <20180518092815.25280-1-yuq825@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180518092815.25280-1-yuq825@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org Cc: Simon Shields , Marek Vasut , Connor Abbott , Neil Armstrong , Andrei Paulau <7134956@gmail.com>, Vasily Khoruzhick , Qiang Yu , Erico Nunes List-Id: devicetree@vger.kernel.org R1AgaXMgYSBwcm9jZXNzb3IgZm9yIE9wZW5HTCB2ZXJ0ZXggc2hhZGVyCnByb2Nlc3NpbmcuCgpT aWduZWQtb2ZmLWJ5OiBRaWFuZyBZdSA8eXVxODI1QGdtYWlsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vbGltYS9saW1hX2dwLmMgfCAyOTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiBkcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dwLmggfCAgMzQgKysrKwogMiBmaWxlcyBj aGFuZ2VkLCAzMjcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9saW1hL2xpbWFfZ3AuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9s aW1hL2xpbWFfZ3AuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ3Au YyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ3AuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjhmYjQ5OTg2NDE4YQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9saW1hL2xpbWFfZ3AuYwpAQCAtMCwwICsxLDI5MyBAQAorLyoKKyAqIENvcHly aWdodCAoQykgMjAxNy0yMDE4IExpbWEgUHJvamVjdAorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk ZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFS SVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNp bmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1 ZGUgPGxpbnV4L2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworI2luY2x1ZGUg PGRybS9saW1hX2RybS5oPgorCisjaW5jbHVkZSAibGltYV9kZXZpY2UuaCIKKyNpbmNsdWRlICJs aW1hX2dwLmgiCisjaW5jbHVkZSAibGltYV9yZWdzLmgiCisKKyNkZWZpbmUgZ3Bfd3JpdGUocmVn LCBkYXRhKSB3cml0ZWwoZGF0YSwgaXAtPmlvbWVtICsgTElNQV9HUF8jI3JlZykKKyNkZWZpbmUg Z3BfcmVhZChyZWcpIHJlYWRsKGlwLT5pb21lbSArIExJTUFfR1BfIyNyZWcpCisKK3N0YXRpYyBp cnFyZXR1cm5fdCBsaW1hX2dwX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpCit7CisJ c3RydWN0IGxpbWFfaXAgKmlwID0gZGF0YTsKKwlzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldiA9IGlw LT5kZXY7CisJc3RydWN0IGxpbWFfc2NoZWRfcGlwZSAqcGlwZSA9IGRldi0+cGlwZSArIGxpbWFf cGlwZV9ncDsKKwl1MzIgc3RhdGUgPSBncF9yZWFkKElOVF9TVEFUKTsKKwl1MzIgc3RhdHVzID0g Z3BfcmVhZChTVEFUVVMpOworCWJvb2wgZG9uZSA9IGZhbHNlOworCisJLyogZm9yIHNoYXJlZCBp cnEgY2FzZSAqLworCWlmICghc3RhdGUpCisJCXJldHVybiBJUlFfTk9ORTsKKworCWlmIChzdGF0 ZSAmIExJTUFfR1BfSVJRX01BU0tfRVJST1IpIHsKKwkJZGV2X2VycihkZXYtPmRldiwgImdwIGVy cm9yIGlycSBzdGF0ZT0leCBzdGF0dXM9JXhcbiIsCisJCQlzdGF0ZSwgc3RhdHVzKTsKKworCQkv KiBtYXNrIGFsbCBpbnRlcnJ1cHRzIGJlZm9yZSBoYXJkIHJlc2V0ICovCisJCWdwX3dyaXRlKElO VF9NQVNLLCAwKTsKKworCQlwaXBlLT5lcnJvciA9IHRydWU7CisJCWRvbmUgPSB0cnVlOworCX0K KwllbHNlIHsKKwkJYm9vbCB2YWxpZCA9IHN0YXRlICYgKExJTUFfR1BfSVJRX1ZTX0VORF9DTURf TFNUIHwKKwkJCQkgICAgICBMSU1BX0dQX0lSUV9QTEJVX0VORF9DTURfTFNUKTsKKwkJYm9vbCBh Y3RpdmUgPSBzdGF0dXMgJiAoTElNQV9HUF9TVEFUVVNfVlNfQUNUSVZFIHwKKwkJCQkJTElNQV9H UF9TVEFUVVNfUExCVV9BQ1RJVkUpOworCQlkb25lID0gdmFsaWQgJiYgIWFjdGl2ZTsKKwl9CisK KwlncF93cml0ZShJTlRfQ0xFQVIsIHN0YXRlKTsKKworCWlmIChkb25lKQorCQlsaW1hX3NjaGVk X3BpcGVfdGFza19kb25lKHBpcGUpOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0 aWMgdm9pZCBsaW1hX2dwX3NvZnRfcmVzZXRfYXN5bmMoc3RydWN0IGxpbWFfaXAgKmlwKQorewor CWlmIChpcC0+ZGF0YS5hc3luY19yZXNldCkKKwkJcmV0dXJuOworCisJZ3Bfd3JpdGUoSU5UX01B U0ssIDApOworCWdwX3dyaXRlKElOVF9DTEVBUiwgTElNQV9HUF9JUlFfUkVTRVRfQ09NUExFVEVE KTsKKwlncF93cml0ZShDTUQsIExJTUFfR1BfQ01EX1NPRlRfUkVTRVQpOworCWlwLT5kYXRhLmFz eW5jX3Jlc2V0ID0gdHJ1ZTsKK30KKworc3RhdGljIGludCBsaW1hX2dwX3NvZnRfcmVzZXRfYXN5 bmNfd2FpdChzdHJ1Y3QgbGltYV9pcCAqaXApCit7CisJc3RydWN0IGxpbWFfZGV2aWNlICpkZXYg PSBpcC0+ZGV2OworCWludCB0aW1lb3V0OworCisJaWYgKCFpcC0+ZGF0YS5hc3luY19yZXNldCkK KwkJcmV0dXJuIDA7CisKKwlmb3IgKHRpbWVvdXQgPSAxMDAwOyB0aW1lb3V0ID4gMDsgdGltZW91 dC0tKSB7CisJCWlmIChncF9yZWFkKElOVF9SQVdTVEFUKSAmIExJTUFfR1BfSVJRX1JFU0VUX0NP TVBMRVRFRCkKKwkJCWJyZWFrOworCX0KKwlpZiAoIXRpbWVvdXQpIHsKKwkJZGV2X2VycihkZXYt PmRldiwgImdwIHNvZnQgcmVzZXQgdGltZSBvdXRcbiIpOworCQlyZXR1cm4gLUVUSU1FRE9VVDsK Kwl9CisKKwlncF93cml0ZShJTlRfQ0xFQVIsIExJTUFfR1BfSVJRX01BU0tfQUxMKTsKKwlncF93 cml0ZShJTlRfTUFTSywgTElNQV9HUF9JUlFfTUFTS19VU0VEKTsKKworCWlwLT5kYXRhLmFzeW5j X3Jlc2V0ID0gZmFsc2U7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbGltYV9ncF90YXNr X3ZhbGlkYXRlKHN0cnVjdCBsaW1hX3NjaGVkX3BpcGUgKnBpcGUsCisJCQkJIHN0cnVjdCBsaW1h X3NjaGVkX3Rhc2sgKnRhc2spCit7CisJc3RydWN0IGRybV9saW1hX2dwX2ZyYW1lICpmcmFtZSA9 IHRhc2stPmZyYW1lOworCXUzMiAqZiA9IGZyYW1lLT5mcmFtZTsKKwkodm9pZClwaXBlOworCisJ aWYgKGZbTElNQV9HUF9WU0NMX1NUQVJUX0FERFIgPj4gMl0gPgorCSAgICBmW0xJTUFfR1BfVlND TF9FTkRfQUREUiA+PiAyXSB8fAorCSAgICBmW0xJTUFfR1BfUExCVUNMX1NUQVJUX0FERFIgPj4g Ml0gPgorCSAgICBmW0xJTUFfR1BfUExCVUNMX0VORF9BRERSID4+IDJdIHx8CisJICAgIGZbTElN QV9HUF9QTEJVX0FMTE9DX1NUQVJUX0FERFIgPj4gMl0gPgorCSAgICBmW0xJTUFfR1BfUExCVV9B TExPQ19FTkRfQUREUiA+PiAyXSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoZltMSU1BX0dQ X1ZTQ0xfU1RBUlRfQUREUiA+PiAyXSA9PQorCSAgICBmW0xJTUFfR1BfVlNDTF9FTkRfQUREUiA+ PiAyXSAmJgorCSAgICBmW0xJTUFfR1BfUExCVUNMX1NUQVJUX0FERFIgPj4gMl0gPT0KKwkgICAg ZltMSU1BX0dQX1BMQlVDTF9FTkRfQUREUiA+PiAyXSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbGltYV9ncF90YXNrX3J1bihzdHJ1Y3QgbGltYV9z Y2hlZF9waXBlICpwaXBlLAorCQkJICAgICBzdHJ1Y3QgbGltYV9zY2hlZF90YXNrICp0YXNrKQor eworCXN0cnVjdCBsaW1hX2lwICppcCA9IHBpcGUtPnByb2Nlc3NvclswXTsKKwlzdHJ1Y3QgZHJt X2xpbWFfZ3BfZnJhbWUgKmZyYW1lID0gdGFzay0+ZnJhbWU7CisJdTMyICpmID0gZnJhbWUtPmZy YW1lOworCXUzMiBjbWQgPSAwOworCWludCBpOworCisJaWYgKGZbTElNQV9HUF9WU0NMX1NUQVJU X0FERFIgPj4gMl0gIT0KKwkgICAgZltMSU1BX0dQX1ZTQ0xfRU5EX0FERFIgPj4gMl0pCisJCWNt ZCB8PSBMSU1BX0dQX0NNRF9TVEFSVF9WUzsKKwlpZiAoZltMSU1BX0dQX1BMQlVDTF9TVEFSVF9B RERSID4+IDJdICE9CisJICAgIGZbTElNQV9HUF9QTEJVQ0xfRU5EX0FERFIgPj4gMl0pCisJCWNt ZCB8PSBMSU1BX0dQX0NNRF9TVEFSVF9QTEJVOworCisJLyogYmVmb3JlIGFueSBodyBvcHMsIHdh aXQgbGFzdCBzdWNjZXNzIHRhc2sgYXN5bmMgc29mdCByZXNldCAqLworCWxpbWFfZ3Bfc29mdF9y ZXNldF9hc3luY193YWl0KGlwKTsKKworCWZvciAoaSA9IDA7IGkgPCBMSU1BX0dQX0ZSQU1FX1JF R19OVU07IGkrKykKKwkJd3JpdGVsKGZbaV0sIGlwLT5pb21lbSArIExJTUFfR1BfVlNDTF9TVEFS VF9BRERSICsgaSAqIDQpOworCisJZ3Bfd3JpdGUoQ01ELCBMSU1BX0dQX0NNRF9VUERBVEVfUExC VV9BTExPQyk7CisJZ3Bfd3JpdGUoQ01ELCBjbWQpOworfQorCitzdGF0aWMgaW50IGxpbWFfZ3Bf aGFyZF9yZXNldChzdHJ1Y3QgbGltYV9pcCAqaXApCit7CisJc3RydWN0IGxpbWFfZGV2aWNlICpk ZXYgPSBpcC0+ZGV2OworCWludCB0aW1lb3V0OworCisJZ3Bfd3JpdGUoUEVSRl9DTlRfMF9MSU1J VCwgMHhDMEZGRTAwMCk7CisJZ3Bfd3JpdGUoSU5UX01BU0ssIDApOworCWdwX3dyaXRlKENNRCwg TElNQV9HUF9DTURfUkVTRVQpOworCWZvciAodGltZW91dCA9IDEwMDA7IHRpbWVvdXQgPiAwOyB0 aW1lb3V0LS0pIHsKKwkJZ3Bfd3JpdGUoUEVSRl9DTlRfMF9MSU1JVCwgMHhDMDFBMDAwMCk7CisJ CWlmIChncF9yZWFkKFBFUkZfQ05UXzBfTElNSVQpID09IDB4QzAxQTAwMDApCisJCQlicmVhazsK Kwl9CisJaWYgKCF0aW1lb3V0KSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJncCBoYXJkIHJlc2V0 IHRpbWVvdXRcbiIpOworCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKwlncF93cml0ZShQRVJG X0NOVF8wX0xJTUlULCAwKTsKKwlncF93cml0ZShJTlRfQ0xFQVIsIExJTUFfR1BfSVJRX01BU0tf QUxMKTsKKwlncF93cml0ZShJTlRfTUFTSywgTElNQV9HUF9JUlFfTUFTS19VU0VEKTsKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQgbGltYV9ncF90YXNrX2Zpbmkoc3RydWN0IGxpbWFfc2No ZWRfcGlwZSAqcGlwZSkKK3sKKwlsaW1hX2dwX3NvZnRfcmVzZXRfYXN5bmMocGlwZS0+cHJvY2Vz c29yWzBdKTsKK30KKworc3RhdGljIHZvaWQgbGltYV9ncF90YXNrX2Vycm9yKHN0cnVjdCBsaW1h X3NjaGVkX3BpcGUgKnBpcGUpCit7CisJbGltYV9ncF9oYXJkX3Jlc2V0KHBpcGUtPnByb2Nlc3Nv clswXSk7Cit9CisKK3N0YXRpYyB2b2lkIGxpbWFfZ3BfdGFza19tbXVfZXJyb3Ioc3RydWN0IGxp bWFfc2NoZWRfcGlwZSAqcGlwZSkKK3sKKwlsaW1hX3NjaGVkX3BpcGVfdGFza19kb25lKHBpcGUp OworfQorCitzdGF0aWMgdm9pZCBsaW1hX2dwX3ByaW50X3ZlcnNpb24oc3RydWN0IGxpbWFfaXAg KmlwKQoreworCXUzMiB2ZXJzaW9uLCBtYWpvciwgbWlub3I7CisJY2hhciAqbmFtZTsKKworCXZl cnNpb24gPSBncF9yZWFkKFZFUlNJT04pOworCW1ham9yID0gKHZlcnNpb24gPj4gOCkgJiAweEZG OworCW1pbm9yID0gdmVyc2lvbiAmIDB4RkY7CisJc3dpdGNoICh2ZXJzaW9uID4+IDE2KSB7CisJ Y2FzZSAweEEwNzoKKwkgICAgbmFtZSA9ICJtYWxpMjAwIjsKKwkJYnJlYWs7CisJY2FzZSAweEMw NzoKKwkJbmFtZSA9ICJtYWxpMzAwIjsKKwkJYnJlYWs7CisJY2FzZSAweEIwNzoKKwkJbmFtZSA9 ICJtYWxpNDAwIjsKKwkJYnJlYWs7CisJY2FzZSAweEQwNzoKKwkJbmFtZSA9ICJtYWxpNDUwIjsK KwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJbmFtZSA9ICJ1bmtub3ciOworCQlicmVhazsKKwl9CisJ ZGV2X2luZm8oaXAtPmRldi0+ZGV2LCAiJXMgLSAlcyB2ZXJzaW9uIG1ham9yICVkIG1pbm9yICVk XG4iLAorCQkgbGltYV9pcF9uYW1lKGlwKSwgbmFtZSwgbWFqb3IsIG1pbm9yKTsKK30KKworc3Rh dGljIHN0cnVjdCBrbWVtX2NhY2hlICpsaW1hX2dwX3Rhc2tfc2xhYiA9IE5VTEw7CitzdGF0aWMg aW50IGxpbWFfZ3BfdGFza19zbGFiX3JlZmNudCA9IDA7CisKK2ludCBsaW1hX2dwX2luaXQoc3Ry dWN0IGxpbWFfaXAgKmlwKQoreworCXN0cnVjdCBsaW1hX2RldmljZSAqZGV2ID0gaXAtPmRldjsK KwlpbnQgZXJyOworCisJbGltYV9ncF9wcmludF92ZXJzaW9uKGlwKTsKKworCWlwLT5kYXRhLmFz eW5jX3Jlc2V0ID0gZmFsc2U7CisJbGltYV9ncF9zb2Z0X3Jlc2V0X2FzeW5jKGlwKTsKKwllcnIg PSBsaW1hX2dwX3NvZnRfcmVzZXRfYXN5bmNfd2FpdChpcCk7CisJaWYgKGVycikKKwkJcmV0dXJu IGVycjsKKworCWVyciA9IGRldm1fcmVxdWVzdF9pcnEoZGV2LT5kZXYsIGlwLT5pcnEsIGxpbWFf Z3BfaXJxX2hhbmRsZXIsIDAsCisJCQkgICAgICAgbGltYV9pcF9uYW1lKGlwKSwgaXApOworCWlm IChlcnIpIHsKKwkJZGV2X2VycihkZXYtPmRldiwgImdwICVzIGZhaWwgdG8gcmVxdWVzdCBpcnFc biIsCisJCQlsaW1hX2lwX25hbWUoaXApKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwlyZXR1cm4g MDsKK30KKwordm9pZCBsaW1hX2dwX2Zpbmkoc3RydWN0IGxpbWFfaXAgKmlwKQoreworCit9CisK K2ludCBsaW1hX2dwX3BpcGVfaW5pdChzdHJ1Y3QgbGltYV9kZXZpY2UgKmRldikKK3sKKwlpbnQg ZnJhbWVfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZHJtX2xpbWFfZ3BfZnJhbWUpOworCXN0cnVjdCBs aW1hX3NjaGVkX3BpcGUgKnBpcGUgPSBkZXYtPnBpcGUgKyBsaW1hX3BpcGVfZ3A7CisKKwlpZiAo IWxpbWFfZ3BfdGFza19zbGFiKSB7CisJCWxpbWFfZ3BfdGFza19zbGFiID0ga21lbV9jYWNoZV9j cmVhdGUoCisJCQkibGltYV9ncF90YXNrIiwgc2l6ZW9mKHN0cnVjdCBsaW1hX3NjaGVkX3Rhc2sp ICsgZnJhbWVfc2l6ZSwKKwkJCTAsIFNMQUJfSFdDQUNIRV9BTElHTiwgTlVMTCk7CisJCWlmICgh bGltYV9ncF90YXNrX3NsYWIpCisJCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJbGltYV9ncF90YXNr X3NsYWJfcmVmY250Kys7CisKKwlwaXBlLT5mcmFtZV9zaXplID0gZnJhbWVfc2l6ZTsKKwlwaXBl LT50YXNrX3NsYWIgPSBsaW1hX2dwX3Rhc2tfc2xhYjsKKworCXBpcGUtPnRhc2tfdmFsaWRhdGUg PSBsaW1hX2dwX3Rhc2tfdmFsaWRhdGU7CisJcGlwZS0+dGFza19ydW4gPSBsaW1hX2dwX3Rhc2tf cnVuOworCXBpcGUtPnRhc2tfZmluaSA9IGxpbWFfZ3BfdGFza19maW5pOworCXBpcGUtPnRhc2tf ZXJyb3IgPSBsaW1hX2dwX3Rhc2tfZXJyb3I7CisJcGlwZS0+dGFza19tbXVfZXJyb3IgPSBsaW1h X2dwX3Rhc2tfbW11X2Vycm9yOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgbGltYV9ncF9waXBl X2Zpbmkoc3RydWN0IGxpbWFfZGV2aWNlICpkZXYpCit7CisJaWYgKCEtLWxpbWFfZ3BfdGFza19z bGFiX3JlZmNudCkgeworCQlrbWVtX2NhY2hlX2Rlc3Ryb3kobGltYV9ncF90YXNrX3NsYWIpOwor CQlsaW1hX2dwX3Rhc2tfc2xhYiA9IE5VTEw7CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2xpbWEvbGltYV9ncC5oIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9ncC5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODM1NDkxMWU1MGNlCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9ncC5oCkBAIC0wLDAgKzEs MzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBMaW1hIFByb2plY3QKKyAqCisg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor ICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICog T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqLworI2lmbmRlZiBfX0xJTUFfR1BfSF9fCisjZGVmaW5lIF9fTElNQV9HUF9I X18KKworc3RydWN0IGxpbWFfaXA7CitzdHJ1Y3QgbGltYV9kZXZpY2U7CisKK2ludCBsaW1hX2dw X2luaXQoc3RydWN0IGxpbWFfaXAgKmlwKTsKK3ZvaWQgbGltYV9ncF9maW5pKHN0cnVjdCBsaW1h X2lwICppcCk7CisKK2ludCBsaW1hX2dwX3BpcGVfaW5pdChzdHJ1Y3QgbGltYV9kZXZpY2UgKmRl dik7Cit2b2lkIGxpbWFfZ3BfcGlwZV9maW5pKHN0cnVjdCBsaW1hX2RldmljZSAqZGV2KTsKKwor I2VuZGlmCi0tIAoyLjE3LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=