From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hean-Loong Ong Subject: [PATCHv15 3/3] ARM:drm ivip Intel FPGA Video and Image Processing Suite Date: Fri, 15 Mar 2019 22:54:35 +0800 Message-ID: <20190315145435.12104-4-hean.loong.ong@intel.com> References: <20190315145435.12104-1-hean.loong.ong@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190315145435.12104-1-hean.loong.ong@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring , Dinh Nguyen , Daniel Vetter , Randy Dunlap Cc: hean.loong.ong@intel.com, devicetree@vger.kernel.org, chin.liang.see@intel.com, Ong@freedesktop.org, dri-devel@lists.freedesktop.org List-Id: devicetree@vger.kernel.org RnJvbTogIk9uZywgSGVhbiBMb29uZyIgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KCkRyaXZl ciBmb3IgSW50ZWwgRlBHQSBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBGcmFtZSBC dWZmZXIgSUkuClRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyB0aGUgSW50ZWwgQXJyaWExMCBkZXZr aXQgYW5kIGl0cyB2YXJpYW50cy4KVGhpcyBkcml2ZXIgY2FuIGJlIGVpdGhlciBsb2FkZWQgc3Rh dGljbGx5IG9yIGluIG1vZHVsZXMuClRoZSBPRiBkZXZpY2UgdHJlZSBiaW5kaW5nIGlzIGxvY2F0 ZWQgYXQ6CkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2FsdHIsdmlw LWZiMi50eHQKClNpZ25lZC1vZmYtYnk6IE9uZywgSGVhbiBMb29uZyA8aGVhbi5sb29uZy5vbmdA aW50ZWwuY29tPgpBY2tlZC1ieTogQWNrZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0 ZXJAZmZ3bGwuY2g+CgpWMTU6CkZpeCBpbmRlbnRhdGlvbiBpc3N1ZXMKClYxNDoKRml4IGluZGVu dGF0aW9uIGlzc3VlcwoKVjEzOgpGaXggZHJtLW1pc2MgYnVpbGQgZmFpbHVyZQoKVjEyOgpGaXgg Y29tbWVudHMKClYxMToKbW92ZSB0byBkcm0tbWlzYwoKVjEwOgpGaXggQnVpbGQgZmFpbHVyZQoK Vjk6CkZpeCBCdWlsZCBmYWlsdXJlCgpWODoKQ2hhbmdlcyB0byBkZXZpY2UgdHJlZSBkb2NzCgpW NjoKQ2hhbmdlcyB0byBkZXZpY2UgdHJlZSBkb2NzCgpWNzoKQ2hhbmdlcyB0byBkZXZpY2UgdHJl ZSBkb2NzCgpWNjoKRml4IGNvbW1lbnRzCgpWNToKRml4IGNvbW1lbnRzCgpWNDoKRml4IGNvbW1l bnRzCgpWMzoKRml4IGNvbW1lbnRzCgpWMjoKTW92ZSB0byBzaW1wbGUgZHJtCgpWMToKSW5pdGlh bCBjaGFuZ2VzCi0tLQogTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg OSArCiBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICAgICAgICAgIHwgICAyICsKIGRyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2l2aXAvS2NvbmZpZyAgICAgICAgICB8ICAxNCArKwogZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFr ZWZpbGUgICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29u bi5jIHwgIDkzICsrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuYyAg fCAzMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pdmlwL2lu dGVsX3ZpcF9kcnYuaCAgfCAgNzMgKysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDUzMyBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL01ha2VmaWxlCiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Nvbm4uYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaAoKZGlmZiAt LWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggZTdlODFmYWRmZjY1Li4wZmRl YzUyYTM1NmEgMTAwNjQ0Ci0tLSBhL01BSU5UQUlORVJTCisrKyBiL01BSU5UQUlORVJTCkBAIC01 MjI5LDYgKzUyMjksMTUgQEAgTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwogRjoJ aW5jbHVkZS9kcm0vdHRtLwogRjoJZHJpdmVycy9ncHUvZHJtL3R0bS8KIAorRFJNIElOVEVMIElW SVAKK006CUhlYW4gTG9vbmcsIE9uZyA8aGFuLmxvb25nLm9uZ0BpbnRlbC5jb20+CitMOiAgICAg IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK1Q6ICAgICAgZ2l0IGdpdDovL2Fub25n aXQuZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYworUzoJTWFpbnRhaW5lZAorRjoJaW50ZWxf dmlwX2Nvbm4uYworRjoJaW50ZWxfdmlwX2Rydi5jCitGOiAJaW50ZWxfdmlwX2Rydi5oCisKIERT QlIxMDAgVVNCIEZNIFJBRElPIERSSVZFUgogTToJQWxleGV5IEtsaW1vdiA8a2xpbW92LmxpbnV4 QGdtYWlsLmNvbT4KIEw6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwppbmRleCBi ZDk0M2E3MTc1NmMuLjNkYjAxZTk5NDc5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tj b25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKQEAgLTIzMSw2ICsyMzEsOCBAQCBz b3VyY2UgImRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWciCiAKIHNvdXJjZSAiZHJpdmVy cy9ncHUvZHJtL2k5MTUvS2NvbmZpZyIKIAorc291cmNlICJkcml2ZXJzL2dwdS9kcm0vaXZpcC9L Y29uZmlnIgorCiBjb25maWcgRFJNX1ZHRU0KIAl0cmlzdGF0ZSAiVmlydHVhbCBHRU0gcHJvdmlk ZXIiCiAJZGVwZW5kcyBvbiBEUk0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCAxYWM1NWM2NWVhYzAuLmU4YWM0ZTNk ZTljNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQpAQCAtNjMsNiArNjMsNyBAQCBvYmotJChDT05GSUdfRFJNX0FNREdQ VSkrPSBhbWQvYW1kZ3B1Lwogb2JqLSQoQ09ORklHX0RSTV9NR0EpCSs9IG1nYS8KIG9iai0kKENP TkZJR19EUk1fSTgxMCkJKz0gaTgxMC8KIG9iai0kKENPTkZJR19EUk1fSTkxNSkJKz0gaTkxNS8K K29iai0kKENPTkZJR19EUk1fSVZJUCkJKz0gaXZpcC8KIG9iai0kKENPTkZJR19EUk1fTUdBRzIw MCkgKz0gbWdhZzIwMC8KIG9iai0kKENPTkZJR19EUk1fVjNEKSAgKz0gdjNkLwogb2JqLSQoQ09O RklHX0RSTV9WQzQpICArPSB2YzQvCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9L Y29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjFiMmFmODVmZTc1NwotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pdmlwL0tjb25maWcKQEAgLTAsMCArMSwxNCBAQAorY29uZmlnIERSTV9J VklQCisgICAgICAgIHRyaXN0YXRlICJJbnRlbCBGR1BBIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNz aW5nIgorICAgICAgICBkZXBlbmRzIG9uIERSTSAmJiBPRgorICAgICAgICBzZWxlY3QgRFJNX0dF TV9DTUFfSEVMUEVSCisgICAgICAgIHNlbGVjdCBEUk1fS01TX0hFTFBFUgorICAgICAgICBzZWxl Y3QgRFJNX0tNU19GQl9IRUxQRVIKKyAgICAgICAgc2VsZWN0IERSTV9LTVNfQ01BX0hFTFBFUgor ICAgICAgICBoZWxwCisJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IGhhdmUgYW4gSW50ZWwg RlBHQSBBcnJpYSAxMCBzeXN0ZW0KKwkgIGFuZCBhYm92ZSB3aXRoIGFuIEludGVsIERpc3BsYXkg UG9ydCBJUC4gVGhpcyBkb2VzIG5vdCBzdXBwb3J0CisJICBsZWdhY3kgSW50ZWwgRlBHQSBDeWNs b25lIFYgZGlzcGxheSBwb3J0LiBDdXJyZW50bHkgb25seSBzaW5nbGUKKwkgIGZyYW1lIGJ1ZmZl ciBpcyBzdXBwb3J0ZWQuIE5vdGUgdGhhdCBBQ1BJIGFuZCBYXzg2IGFyY2hpdGVjdHVyZQorCSAg aXMgbm90IHN1cHBvcnRlZCBmb3IgQXJyaWExMC4gSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxl IHdpbGwgYmUKKwkgIGNhbGxlZCBpdmlwLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2 aXAvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9NYWtlZmlsZQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhjNTRlMTFkYWVjYQotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL01ha2VmaWxlCkBAIC0wLDAgKzEsNiBAQAorIworIyBN YWtlZmlsZSBmb3IgdGhlIGRybSBkZXZpY2UgZHJpdmVyLiAgVGhpcyBkcml2ZXIgcHJvdmlkZXMg c3VwcG9ydCBmb3IgdGhlCisjIERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgKERSSSkg aW4gWEZyZWU4NiA0LjEuMCBhbmQgaGlnaGVyLgorCitvYmotJChDT05GSUdfRFJNX0lWSVApICs9 IGl2aXAubworaXZpcC1vYmpzIDo9IGludGVsX3ZpcF9kcnYubyBpbnRlbF92aXBfY29ubi5vCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29ubi5jIGIvZHJpdmVy cy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Nvbm4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjA0MWI3YTU3Njk4MwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMKQEAgLTAsMCArMSw5MyBAQAorLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSW50 ZWwgQ29ycG9yYXRpb24uCisgKgorICogaW50ZWxfdmlwX2Nvbm4uYyAtLSBJbnRlbCBWaWRlbyBh bmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApCisgKiBGcmFtZSBCdWZmZXIgSUkgZHJpdmVyCisgKgor ICogVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEludGVsIFZJUCBGcmFtZSBSZWFkZXIgY29tcG9u ZW50LgorICogTW9yZSBpbmZvIG9uIHRoZSBoYXJkd2FyZSBjYW4gYmUgZm91bmQgaW4gdGhlIElu dGVsIFZpZGVvCisgKiBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBVc2VyIEd1aWRlIGF0IHRo aXMgYWRkcmVzcworICogaHR0cDovL3d3dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlw LnBkZi4KKyAqCisgKiBBdXRob3JzOgorICogV2FsdGVyIEdvb3NzZW5zIDx3YWx0ZXJnb29zc2Vu c0Bob21lLm5sPgorICogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgorICogQ2hy aXMgUmF1ZXIgPGNyYXVlckBhbHRlcmEuY29tPgorICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxv b25nLm9uZ0BpbnRlbC5jb20+CisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cisj aW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVy Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1f ZGV2aWNlLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyX3NsYXZlLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5o PgorCitzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cworaW50ZWx2aXBmYl9kcm1fY29u bmVjdG9yX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNl KQoreworCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKK30KKworc3RhdGljIHZv aWQgaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcikKK3sKKwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKKwlk cm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX2Z1bmNzIGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9mdW5jcyA9IHsK KwkuZGV0ZWN0ID0gaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2RldGVjdCwKKwkucmVzZXQgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCisJLmZpbGxfbW9kZXMgPSBkcm1faGVs cGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCisJLmF0b21pY19kdXBsaWNhdGVfc3Rh dGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9t aWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0 YXRlLAorCS5kZXN0cm95ID0gaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Rlc3Ryb3ksCit9Owor CitzdGF0aWMgaW50IGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gY29u bmVjdG9yLT5kZXY7CisJaW50IGNvdW50OworCisJY291bnQgPSBkcm1fYWRkX21vZGVzX25vZWRp ZChjb25uZWN0b3IsIGRybS0+bW9kZV9jb25maWcubWF4X3dpZHRoLAorCQkJZHJtLT5tb2RlX2Nv bmZpZy5tYXhfaGVpZ2h0KTsKKwlkcm1fc2V0X3ByZWZlcnJlZF9tb2RlKGNvbm5lY3RvciwgZHJt LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGgsCisJCQlkcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQp OworCXJldHVybiBjb3VudDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X2hlbHBlcl9mdW5jcworaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsK KwkuZ2V0X21vZGVzID0gaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2dldF9tb2RlcywKK307CisK K3N0cnVjdCBkcm1fY29ubmVjdG9yICoKK2ludGVsdmlwZmJfY29ubl9zZXR1cChzdHJ1Y3QgZHJt X2RldmljZSAqZHJtKQoreworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOworCWludCByZXQ7 CisKKwljb25uID0gZGV2bV9remFsbG9jKGRybS0+ZGV2LCBzaXplb2YoKmNvbm4pLCBHRlBfS0VS TkVMKTsKKwlpZiAoSVNfRVJSKGNvbm4pKQorCQlyZXR1cm4gTlVMTDsKKworCWRybV9jb25uZWN0 b3JfaGVscGVyX2FkZChjb25uLCAmaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5j cyk7CisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRybSwgY29ubiwgJmludGVsdmlwZmJfZHJt X2Nvbm5lY3Rvcl9mdW5jcywKKwkJCURSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCk7CisJ aWYgKHJldCA8IDApIHsKKwkJZGV2X2Vycihkcm0tPmRldiwgImZhaWxlZCB0byBpbml0aWFsaXpl IGRybSBjb25uZWN0b3JcbiIpOworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycm9yX2Nvbm5l Y3Rvcl9jbGVhbnVwOworCX0KKworCXJldHVybiBjb25uOworCitlcnJvcl9jb25uZWN0b3JfY2xl YW51cDoKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubik7CisKKwlyZXR1cm4gTlVMTDsKK30K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuYyBiL2RyaXZl cnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjU5MjE4M2QwYjA5MAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuYwpAQCAtMCwwICsxLDMzNSBAQAorLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgSW50 ZWwgQ29ycG9yYXRpb24uCisgKgorICogaW50ZWxfdmlwX2NvcmUuYyAtLSBJbnRlbCBWaWRlbyBh bmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApCisgKiBGcmFtZSBCdWZmZXIgSUkgZHJpdmVyCisgKgor ICogVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEludGVsIFZJUCBGcmFtZSBSZWFkZXIgY29tcG9u ZW50LgorICogTW9yZSBpbmZvIG9uIHRoZSBoYXJkd2FyZSBjYW4gYmUgZm91bmQgaW4gdGhlIElu dGVsIFZpZGVvCisgKiBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBVc2VyIEd1aWRlIGF0IHRo aXMgYWRkcmVzcworICogaHR0cDovL3d3dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlw LnBkZi4KKyAqCisgKiBBdXRob3JzOgorICogV2FsdGVyIEdvb3NzZW5zIDx3YWx0ZXJnb29zc2Vu c0Bob21lLm5sPgorICogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgorICogQ2hy aXMgUmF1ZXIgPGNyYXVlckBhbHRlcmEuY29tPgorICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxv b25nLm9uZ0BpbnRlbC5jb20+CisgKgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5o PgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1f Y3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgorI2luY2x1ZGUgPGRy bS9kcm1fZHJ2Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVy Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+CisjaW5jbHVk ZSA8ZHJtL2RybV9vZi5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fdmJs YW5rLmg+CisKKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9k bWEtbWFwcGluZy5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9r ZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4KKworI2luY2x1ZGUgImludGVsX3ZpcF9kcnYuaCIKKworc3RhdGljIGlu bGluZSBzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICoKK3BpcGVfdG9faW50ZWx2aXBkcm0oc3RydWN0 IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlKQoreworCXJldHVybiBjb250YWluZXJfb2Yo cGlwZSwgc3RydWN0IGludGVsdmlwZmJfcHJpdiwgcGlwZSk7Cit9CisKK0RFRklORV9EUk1fR0VN X0NNQV9GT1BTKGRybV9mb3BzKTsKKworc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIGludGVsdmlw ZmJfZHJtID0geworCS5kcml2ZXJfZmVhdHVyZXMgPQorCQkJRFJJVkVSX01PREVTRVQgfCBEUklW RVJfR0VNIHwKKwkJCURSSVZFUl9QUklNRSB8IERSSVZFUl9BVE9NSUMsCisJLmdlbV9mcmVlX29i amVjdF91bmxvY2tlZCA9IGRybV9nZW1fY21hX2ZyZWVfb2JqZWN0LAorCS5nZW1fdm1fb3BzID0g JmRybV9nZW1fY21hX3ZtX29wcywKKwkuZHVtYl9jcmVhdGUgPSBkcm1fZ2VtX2NtYV9kdW1iX2Ny ZWF0ZSwKKwkuZHVtYl9kZXN0cm95ID0gZHJtX2dlbV9kdW1iX2Rlc3Ryb3ksCisJLnByaW1lX2hh bmRsZV90b19mZCA9IGRybV9nZW1fcHJpbWVfaGFuZGxlX3RvX2ZkLAorCS5wcmltZV9mZF90b19o YW5kbGUgPSBkcm1fZ2VtX3ByaW1lX2ZkX3RvX2hhbmRsZSwKKwkuZ2VtX3ByaW1lX2V4cG9ydCA9 IGRybV9nZW1fcHJpbWVfZXhwb3J0LAorCS5nZW1fcHJpbWVfaW1wb3J0ID0gZHJtX2dlbV9wcmlt ZV9pbXBvcnQsCisJLmdlbV9wcmltZV9nZXRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9wcmltZV9n ZXRfc2dfdGFibGUsCisJLmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUgPSBkcm1fZ2VtX2NtYV9w cmltZV9pbXBvcnRfc2dfdGFibGUsCisJLmdlbV9wcmltZV92bWFwID0gZHJtX2dlbV9jbWFfcHJp bWVfdm1hcCwKKwkuZ2VtX3ByaW1lX3Z1bm1hcCA9IGRybV9nZW1fY21hX3ByaW1lX3Z1bm1hcCwK KwkuZ2VtX3ByaW1lX21tYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV9tbWFwLAorCS5uYW1lID0gRFJJ VkVSX05BTUUsCisJLmRhdGUgPSAiMjAxOTAxMjkiLAorCS5kZXNjID0gIkludGVsIEZQR0EgVklQ IFNVSVRFIiwKKwkubWFqb3IgPSAxLAorCS5taW5vciA9IDAsCisJLmlvY3RscyA9IE5VTEwsCisJ LnBhdGNobGV2ZWwgPSAwLAorCS5mb3BzID0gJmRybV9mb3BzLAorfTsKKworLyoKKyAqIFNldHRp bmcgdXAgaW5mb3JtYXRpb24gZGVyaXZlZCBmcm9tIE9GIERldmljZSBUcmVlIE5vZGVzCisgKiBt YXgtd2lkdGgsIG1heC1oZWlnaHQsIGJpdHMgcGVyIHBpeGVsLCBtZW1vcnkgcG9ydCB3aWR0aAor ICovCisKK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9kcm1fc2V0dXAoc3RydWN0IGRldmljZSAqZGV2 LAorCQkJCQlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpwcml2KQoreworCXN0cnVjdCBkcm1fZGV2 aWNlICpkcm0gPSAmcHJpdi0+ZHJtOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9m X25vZGU7CisJaW50IG1lbV93b3JkX3dpZHRoOworCWludCBtYXhfaCwgbWF4X3c7CisJaW50IHJl dDsKKworCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiYWx0cixtYXgtd2lkdGgiLCAm bWF4X3cpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsCisJCQkiTWlzc2luZyByZXF1aXJl ZCBwYXJhbWV0ZXIgJ2FsdHIsbWF4LXdpZHRoJyIpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJl dCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiYWx0cixtYXgtaGVpZ2h0IiwgJm1heF9oKTsK KwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LAorCQkJIk1pc3NpbmcgcmVxdWlyZWQgcGFyYW1l dGVyICdhbHRyLG1heC1oZWlnaHQnIik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gb2Zf cHJvcGVydHlfcmVhZF91MzIobnAsICJhbHRyLG1lbS1wb3J0LXdpZHRoIiwgJm1lbV93b3JkX3dp ZHRoKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiTWlzc2luZyByZXF1aXJlZCBwYXJh bWV0ZXIgJ2FsdHIsbWVtLXBvcnQtd2lkdGggJyIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWlm ICghKG1lbV93b3JkX3dpZHRoID49IDMyICYmIG1lbV93b3JkX3dpZHRoICUgMzIgPT0gMCkpIHsK KwkJZGV2X2VycihkZXYsCisJCQkibWVtLXdvcmQtd2lkdGggaXMgc2V0IHRvICVpLiBtdXN0IGJl ID49IDMyIGFuZCBtdWx0aXBsZSBvZiAzMi4iLAorCQkJIG1lbV93b3JkX3dpZHRoKTsKKwkJcmV0 dXJuIC1FTk9ERVY7CisJfQorCisJZHJtLT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSA2NDA7CisJ ZHJtLT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gNDgwOworCWRybS0+bW9kZV9jb25maWcubWF4 X3dpZHRoID0gbWF4X3c7CisJZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gbWF4X2g7CisJ ZHJtLT5tb2RlX2NvbmZpZy5wcmVmZXJyZWRfZGVwdGggPSAzMjsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGludGVsdmlwZmJfb2ZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKK3sKKwlpbnQgcmV0dmFsOworCXN0cnVjdCByZXNvdXJjZSAqcmVnX3JlczsKKwlzdHJ1 Y3QgaW50ZWx2aXBmYl9wcml2ICpwcml2OworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5k ZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKKworCXByaXYgPSBremFsbG9jKHNpemVvZigq cHJpdiksIEdGUF9LRVJORUwpOworCWlmICghcHJpdikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlk cm0gPSAmcHJpdi0+ZHJtOworCisJLyogc2V0dXAgRFJNICovCisJcmV0dmFsID0gZHJtX2Rldl9p bml0KGRybSwgJmludGVsdmlwZmJfZHJtLCBkZXYpOworCWlmIChyZXR2YWwpIHsKKwkJZGV2X2Vy cihkZXYsICJbIiBEUk1fTkFNRSAiOiVzXSBkcm1fZGV2X2luaXQgZmFpbGVkOiAlZFxuIiwKKwkJ CV9fZnVuY19fLCByZXR2YWwpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlyZXR2YWwgPSBk bWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KGRybS0+ZGV2LCBETUFfQklUX01BU0soMzIpKTsKKwlp ZiAocmV0dmFsKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJlZ19yZXMgPSBwbGF0Zm9ybV9nZXRf cmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWlmICghcmVnX3JlcykKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlwcml2LT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwg cmVnX3Jlcyk7CisKKwlpZiAoSVNfRVJSKHByaXYtPmJhc2UpKSB7CisJCWRldl9lcnIoZGV2LCAi ZGV2bV9pb3JlbWFwX3Jlc291cmNlIGZhaWxlZFxuIik7CisJCXJldHZhbCA9IFBUUl9FUlIocHJp di0+YmFzZSk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWludGVsdmlwZmJfZHJtX3NldHVw KGRldiwgcHJpdik7CisKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBwcml2KTsKKworCXJldHVybiBp bnRlbHZpcGZiX3Byb2JlKGRldik7Cit9CisKK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9vZl9yZW1v dmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlyZXR1cm4gaW50ZWx2aXBmYl9y ZW1vdmUoJnBkZXYtPmRldik7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsdmlwZmJfZW5hYmxlKHN0 cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKKwkJCQlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCisJCQkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqCisJCQkJcGxh bmVfc3RhdGUpCit7CisJLyoKKwkgKiBUaGUgZnJhbWVpbmZvIHZhcmlhYmxlIGhhcyB0byBjb3Jy ZXNwb25kIHRvIHRoZSBzaXplIG9mIHRoZSBWSVAgU3VpdGUKKwkgKiBGcmFtZSBSZWFkZXIgcmVn aXN0ZXIgNyB3aGljaCB3aWxsIGRldGVybWluZSB0aGUgbWF4aW11bSBzaXplIHVzZWQKKwkgKiBp biB0aGlzIGZyYW1laW5mbworCSAqLworCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKnByaXYgPSBw aXBlX3RvX2ludGVsdmlwZHJtKHBpcGUpOworCXUzMiBmcmFtZWluZm87CisJdm9pZCBfX2lvbWVt ICpiYXNlID0gcHJpdi0+YmFzZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSA9IHBp cGUtPnBsYW5lLnN0YXRlOworCWRtYV9hZGRyX3QgYWRkcjsKKworCWFkZHIgPSBkcm1fZmJfY21h X2dldF9nZW1fYWRkcihzdGF0ZS0+ZmIsIHN0YXRlLCAwKTsKKworCWZyYW1laW5mbyA9CisJCXJl YWRsKGJhc2UgKyBJTlRFTFZJUEZCX0ZSQU1FX1JFQURFUikgJiAweDAwZmZmZmZmOworCXdyaXRl bChmcmFtZWluZm8sIGJhc2UgKyBJTlRFTFZJUEZCX0ZSQU1FX0lORk8pOworCXdyaXRlbChhZGRy LCBiYXNlICsgSU5URUxWSVBGQl9GUkFNRV9TVEFSVCk7CisJLyogRmluYWxseSBzZXQgdGhlIGNv bnRyb2wgcmVnaXN0ZXIgdG8gMSB0byBzdGFydCBzdHJlYW1pbmcgKi8KKwl3cml0ZWwoMSwgYmFz ZSArIElOVEVMVklQRkJfQ09OVFJPTCk7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsdmlwZmJfZGlz YWJsZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUpCit7CisJc3RydWN0IGlu dGVsdmlwZmJfcHJpdiAqcHJpdiA9IHBpcGVfdG9faW50ZWx2aXBkcm0ocGlwZSk7CisJdm9pZCBf X2lvbWVtICpiYXNlID0gcHJpdi0+YmFzZTsKKwkvKiBzZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXIg dG8gMCB0byBzdG9wIHN0cmVhbWluZyAqLworCXdyaXRlbCgwLCBiYXNlICsgSU5URUxWSVBGQl9D T05UUk9MKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3Mg aW50ZWx2aXBmYl9tb2RlX2NvbmZpZ19mdW5jcyA9IHsKKwkuZmJfY3JlYXRlID0gZHJtX2dlbV9m Yl9jcmVhdGUsCisJLmF0b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLAorCS5h dG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0LAorfTsKKworc3RhdGljIHZv aWQgaW50ZWx2aXBmYl9zZXR1cF9tb2RlX2NvbmZpZyhzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQor eworCWRybV9tb2RlX2NvbmZpZ19pbml0KGRybSk7CisJZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9 ICZpbnRlbHZpcGZiX21vZGVfY29uZmlnX2Z1bmNzOworfQorCit2b2lkIGludGVsdmlwZmJfZGlz cGxheV9waXBlX3VwZGF0ZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCisJ CQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50 ZWx2aXBmYl9wcml2ICpwcml2ID0gcGlwZV90b19pbnRlbHZpcGRybShwaXBlKTsKKwlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSAmcHJpdi0+cGlwZS5jcnRjOworCisJaWYgKGNydGMtPnN0YXRlLT5l dmVudCkgeworCQlzcGluX2xvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOworCQlkcm1f Y3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBjcnRjLT5zdGF0ZS0+ZXZlbnQpOworCQlzcGlu X3VubG9ja19pcnEoJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7CisJCWNydGMtPnN0YXRlLT5ldmVu dCA9IE5VTEw7CisJfQorfQorRVhQT1JUX1NZTUJPTChpbnRlbHZpcGZiX2Rpc3BsYXlfcGlwZV91 cGRhdGUpOworCitzdGF0aWMgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIHBy aXZfZnVuY3MgPSB7CisJLnByZXBhcmVfZmIgPSBkcm1fZ2VtX2ZiX3NpbXBsZV9kaXNwbGF5X3Bp cGVfcHJlcGFyZV9mYiwKKwkudXBkYXRlID0gaW50ZWx2aXBmYl9kaXNwbGF5X3BpcGVfdXBkYXRl LAorCS5lbmFibGUgPSBpbnRlbHZpcGZiX2VuYWJsZSwKKwkuZGlzYWJsZSA9IGludGVsdmlwZmJf ZGlzYWJsZQorfTsKKworaW50IGludGVsdmlwZmJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQor eworCWludCByZXR2YWw7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKKwlzdHJ1Y3QgaW50ZWx2 aXBmYl9wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcjsKKwl1MzIgZm9ybWF0c1tdID0ge0RSTV9GT1JNQVRfWFJHQjg4ODh9 OworCisJZHJtID0gJnByaXYtPmRybTsKKworCWludGVsdmlwZmJfc2V0dXBfbW9kZV9jb25maWco ZHJtKTsKKworCWNvbm5lY3RvciA9IGludGVsdmlwZmJfY29ubl9zZXR1cChkcm0pOworCWlmICgh Y29ubmVjdG9yKSB7CisJCWRldl9lcnIoZHJtLT5kZXYsICJDb25uZWN0b3Igc2V0dXAgZmFpbGVk XG4iKTsKKwkJZ290byBlcnJfbW9kZV9jb25maWc7CisJfQorCisJcmV0dmFsID0gZHJtX3NpbXBs ZV9kaXNwbGF5X3BpcGVfaW5pdChkcm0sCisJCQkJCQkmcHJpdi0+cGlwZSwKKwkJCQkJCSZwcml2 X2Z1bmNzLAorCQkJCQkJZm9ybWF0cywKKwkJCQkJCUFSUkFZX1NJWkUoZm9ybWF0cyksCisJCQkJ CQlOVUxMLCBjb25uZWN0b3IpOworCisJaWYgKHJldHZhbCA8IDApIHsKKwkJZGV2X2Vycihkcm0t PmRldiwgIkNhbm5vdCBzZXR1cCBzaW1wbGUgZGlzcGxheSBwaXBlXG4iKTsKKwkJZ290byBlcnJf bW9kZV9jb25maWc7CisJfQorCisJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7CisKKwlkcm1f ZGV2X3JlZ2lzdGVyKGRybSwgMCk7CisKKwlkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cChkcm0sIDMy KTsKKworCWRldl9pbmZvKGRybS0+ZGV2LCAiaXZpcDogU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgZmJc biIpOworCisJcmV0dXJuIHJldHZhbDsKKworZXJyX21vZGVfY29uZmlnOgorCisJZHJtX21vZGVf Y29uZmlnX2NsZWFudXAoZHJtKTsKKwlyZXR1cm4gLUVOT0RFVjsKK30KKworaW50IGludGVsdmlw ZmJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2 ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9 ICAmcHJpdi0+ZHJtOworCisJZHJtX2Rldl91bnJlZ2lzdGVyKGRybSk7CisKKwlkcm1fbW9kZV9j b25maWdfY2xlYW51cChkcm0pOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2ZfZGV2aWNlX2lkIGludGVsdmlwZmJfb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxl ID0gImFsdHIsdmlwLWZyYW1lLWJ1ZmZlci0yLjAiIH0sCisJe30sCisvKgorICogVGhlIG5hbWUg dmlwLWZyYW1lLWJ1ZmZlci0yLjAgaXMgZGVyaXZlZCBmcm9tCisgKiBodHRwOi8vd3d3LmFsdGVy YS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmCisgKiBmcmFtZSBidWZmZXIgSVAgY29yZXMg c2VjdGlvbiAxNAorICovCit9OworCitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBpbnRlbHZpcGZi X29mX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW50ZWx2aXBmYl9k cml2ZXIgPSB7CisJLnByb2JlID0gaW50ZWx2aXBmYl9vZl9wcm9iZSwKKwkucmVtb3ZlID0gaW50 ZWx2aXBmYl9vZl9yZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSBEUklWRVJfTkFNRSwK KwkJLm9mX21hdGNoX3RhYmxlID0gaW50ZWx2aXBmYl9vZl9tYXRjaCwKKwl9LAorfTsKKworbW9k dWxlX3BsYXRmb3JtX2RyaXZlcihpbnRlbHZpcGZiX2RyaXZlcik7CisKKy8qIE9yaWdpbmFsIGF1 dGhvciBvZiBBbHRlcmEgRnJhbWUgQnVmZmVyKi8KK01PRFVMRV9BVVRIT1IoIldhbHRlciBHb29z c2VucyA8d2FsdGVyZ29vc3NlbnNAaG9tZS5ubD4iKTsKK01PRFVMRV9BVVRIT1IoIlRob21hcyBD aG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4iKTsKK01PRFVMRV9BVVRIT1IoIkNocmlzIFJhdWVy IDxjcmF1ZXJAYWx0ZXJhLmNvbT4iKTsKKy8qIEF1dGhvciBvZiBJbnRlbCBGUEdBIEZyYW1lIEJ1 ZmZlciBJSSovCitNT0RVTEVfQVVUSE9SKCJPbmcsIEhlYW4tTG9vbmcgPGhlYW4ubG9vbmcub25n QGludGVsLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigiSW50ZWwgVklQIEZyYW1lIEJ1ZmZl ciBJSSBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pdmlw L2ludGVsX3ZpcF9kcnYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmE4ZTNhNjYwM2UyNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2lu dGVsX3ZpcF9kcnYuaApAQCAtMCwwICsxLDczIEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCAqLworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJbnRlbCBDb3Jwb3JhdGlv bi4KKyAqCisgKiBJbnRlbCBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyhWSVApIEZyYW1lIEJ1 ZmZlciBJSSBkcml2ZXIuCisgKiBGcmFtZSBCdWZmZXIgSUkgZHJpdmVyCisgKgorICogVGhpcyBk cml2ZXIgc3VwcG9ydHMgdGhlIEludGVsIFZJUCBGcmFtZSBSZWFkZXIgY29tcG9uZW50LgorICog TW9yZSBpbmZvIG9uIHRoZSBoYXJkd2FyZSBjYW4gYmUgZm91bmQgaW4gdGhlIEludGVsIFZpZGVv CisgKiBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBVc2VyIEd1aWRlIGF0IHRoaXMgYWRkcmVz cworICogaHR0cDovL3d3dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcvdWdfdmlwLnBkZi4KKyAq CisgKiBBdXRob3JzOgorICogV2FsdGVyIEdvb3NzZW5zIDx3YWx0ZXJnb29zc2Vuc0Bob21lLm5s PgorICogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgorICogQ2hyaXMgUmF1ZXIg PGNyYXVlckBhbHRlcmEuY29tPgorICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxvb25nLm9uZ0Bp bnRlbC5jb20+CisgKgorICovCisjaWZuZGVmIF9JTlRFTF9WSVBfRFJWX0gKKyNkZWZpbmUgX0lO VEVMX1ZJUF9EUlZfSAorCisjZGVmaW5lIERSSVZFUl9OQU1FICAgICJpbnRlbHZpcGZiIgorI2Rl ZmluZSBCWVRFU19QRVJfUElYRUwJIDQKKyNkZWZpbmUgQ1JUQ19OVU0JICAgICAgICAxCisjZGVm aW5lIENPTk5fTlVNCSAgICAgICAgMQorCisvKiBjb250cm9sIHJlZ2lzdGVycyAqLworI2RlZmlu ZSBJTlRFTFZJUEZCX0NPTlRST0wJICAgICAgMAorI2RlZmluZSBJTlRFTFZJUEZCX1NUQVRVUwkg ICAgICAgMHg0CisjZGVmaW5lIElOVEVMVklQRkJfSU5URVJSVVBUCSAgICAweDgKKyNkZWZpbmUg SU5URUxWSVBGQl9GUkFNRV9DT1VOVEVSCTB4QworI2RlZmluZSBJTlRFTFZJUEZCX0ZSQU1FX0RS T1AJICAgMHgxMAorI2RlZmluZSBJTlRFTFZJUEZCX0ZSQU1FX0lORk8JICAgMHgxNAorI2RlZmlu ZSBJTlRFTFZJUEZCX0ZSQU1FX1NUQVJUCSAgMHgxOAorI2RlZmluZSBJTlRFTFZJUEZCX0ZSQU1F X1JFQURFUgkgICAgICAgICAweDFDCisKK2ludCBpbnRlbHZpcGZiX3Byb2JlKHN0cnVjdCBkZXZp Y2UgKmRldik7CitpbnQgaW50ZWx2aXBmYl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KTsKK2lu dCBpbnRlbHZpcGZiX3NldHVwX2NydGMoc3RydWN0IGRybV9kZXZpY2UgKmRybSk7CitzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqaW50ZWx2aXBmYl9jb25uX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpk cm0pOworCitzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2IHsKKwkvKioKKwkgKiBAcGlwZTogRGlzcGxh eSBwaXBlIHN0cnVjdHVyZQorCSAqLworCXN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSBw aXBlOworCisJLyoqCisJICogQGRybTogRFJNIGRldmljZQorCSAqLworCXN0cnVjdCBkcm1fZGV2 aWNlIGRybTsKKworCS8qKgorCSAqIEBkaXJ0eV9sb2NrOiBTZXJpYWxpemVzIGZyYW1lYnVmZmVy IGZsdXNoaW5nCisJICovCisJc3RydWN0IG11dGV4IGRpcnR5X2xvY2s7CisKKwkvKioKKwkgKiBA YmFzZTogQmFzZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlcgorCSAqLworCXZvaWQgICAgX19p b21lbSAqYmFzZTsKKworCS8qKgorCSAqIEBmYl9kaXJ0eTogRnJhbWVidWZmZXIgZGlydHkgY2Fs bGJhY2sKKwkgKi8KKwlpbnQgKCpmYl9kaXJ0eSkoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZnJh bWVidWZmZXIsCisJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwgdW5zaWduZWQgaW50IGZs YWdzLAorCQkJdW5zaWduZWQgaW50IGNvbG9yLCBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqY2xpcHMs CisJCQl1bnNpZ25lZCBpbnQgbnVtX2NsaXBzKTsKK307CisKKyNlbmRpZgotLSAKMi4xNy4xCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=