From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-bk0-f46.google.com ([209.85.214.46]:51828 "EHLO mail-bk0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755904Ab2ANSZm (ORCPT ); Sat, 14 Jan 2012 13:25:42 -0500 Received: by bkuw12 with SMTP id w12so697394bku.19 for ; Sat, 14 Jan 2012 10:25:40 -0800 (PST) MIME-Version: 1.0 Date: Sat, 14 Jan 2012 19:25:40 +0100 Message-ID: Subject: cx23885: Add basic analog radio support From: =?ISO-8859-2?Q?Miroslav_Sluge=F2?= To: linux-media@vger.kernel.org Content-Type: multipart/mixed; boundary=0015175caeb0cf894c04b6811b6f Sender: linux-media-owner@vger.kernel.org List-ID: --0015175caeb0cf894c04b6811b6f Content-Type: text/plain; charset=ISO-8859-1 New version of patch, fixed video modes for DVR3200 tuners and working audio mux. --0015175caeb0cf894c04b6811b6f Content-Type: text/x-patch; charset=US-ASCII; name="cx23885-add-basic-fm-radio-support_v3.patch" Content-Disposition: attachment; filename="cx23885-add-basic-fm-radio-support_v3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gxeyu6dr0 U2lnbmVkLW9mZi1ieTogTWlyb3NsYXYgU2x1Z2VuIDx0aHVuZGVyLm1tbUBnbWFpbC5jb20+CkZy b206IE1pcm9zbGF2IFNsdWdlbiA8dGh1bmRlci5tbW1AZ21haWwuY29tPgpEYXRlOiBTYXQsIDE3 IERlYyAyMDExIDAxOjIzOjIyICswMTAwClN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9y IHJhZGlvIHR1bmVycyB0byBjeDIzODg1IGRyaXZlciwgYW5kIGFkZCBleGFtcGxlIG9mIHJhZGlv IHN1cHBvcnQKIGZvciBMZWFkdGVrIERWUjMyMDAgSCB0dW5lcnMuCgogVmVyc2lvbiAzCgpkaWZm IC1OYXVycCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LWNhcmRzLmMgYi9k cml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS1jYXJkcy5jCi0tLSBhL2RyaXZlcnMv bWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LWNhcmRzLmMJMjAxMi0wMS0xNCAxODo0Mzo0MC4w MDAwMDAwMDAgKzAxMDAKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUt Y2FyZHMuYwkyMDEyLTAxLTE0IDE5OjA0OjU4LjQxMjM2Njc0NyArMDEwMApAQCAtMjA1LDM1ICsy MDUsODcgQEAgc3RydWN0IGN4MjM4ODVfYm9hcmQgY3gyMzg4NV9ib2FyZHNbXSA9CiAJfSwKIAlb Q1gyMzg4NV9CT0FSRF9MRUFEVEVLX1dJTkZBU1RfUFhEVlIzMjAwX0hdID0gewogCQkubmFtZQkJ PSAiTGVhZHRlayBXaW5mYXN0IFB4RFZSMzIwMCBIIiwKKwkJLnBvcnRhCQk9IENYMjM4ODVfQU5B TE9HX1ZJREVPLAorCQkucG9ydGIJCT0gQ1gyMzg4NV9NUEVHX0VOQ09ERVIsCiAJCS5wb3J0YwkJ PSBDWDIzODg1X01QRUdfRFZCLAorCQkudHVuZXJfdHlwZQk9IFRVTkVSX1hDMjAyOCwKKwkJLnR1 bmVyX2FkZHIJPSAweDYxLAorCQkucmFkaW9fdHlwZQk9IFVOU0VULAorCQkucmFkaW9fYWRkcgk9 IEFERFJfVU5TRVQsCisJCS50dW5lcl9idXMJPSAxLAorCQkuaW5wdXQJCT0ge3sKKwkJCS50eXBl CT0gQ1gyMzg4NV9WTVVYX1RFTEVWSVNJT04sCisJCQkudm11eAk9IENYMjU4NDBfVklOMl9DSDEg fAorCQkJCSAgQ1gyNTg0MF9WSU41X0NIMiwKKwkJCS5hbXV4CT0gQ1gyNTg0MF9BVURJTzgsCisJ CQkuZ3BpbzAJPSAweDcwNDA0MCwKKwkJfSwgeworCQkJLnR5cGUJPSBDWDIzODg1X1ZNVVhfQ09N UE9TSVRFMSwKKwkJCS52bXV4CT0gQ1gyNTg0MF9WSU4xX0NIMSwKKwkJCS5hbXV4CT0gQ1gyNTg0 MF9BVURJTzcsCisJCQkuZ3BpbzAJPSAweDcwNDA0MCwKKwkJfSwgeworCQkJLnR5cGUJPSBDWDIz ODg1X1ZNVVhfU1ZJREVPLAorCQkJLnZtdXgJPSBDWDI1ODQwX1ZJTjNfQ0gxIHwKKwkJCQkgIENY MjU4NDBfU1ZJREVPX09OLAorCQkJLmFtdXgJPSBDWDI1ODQwX0FVRElPNywKKwkJCS5ncGlvMAk9 IDB4NzA0MDQwLAorCQl9LCB7CisJCQkudHlwZQk9IENYMjM4ODVfVk1VWF9DT01QT05FTlQsCisJ CQkudm11eAk9IENYMjU4NDBfVklON19DSDEgfAorCQkJCSAgQ1gyNTg0MF9WSU42X0NIMiB8CisJ CQkJICBDWDI1ODQwX1ZJTjhfQ0gzIHwKKwkJCQkgIENYMjU4NDBfQ09NUE9ORU5UX09OLAorCQkJ LmFtdXgJPSBDWDI1ODQwX0FVRElPNywKKwkJCS5ncGlvMAk9IDB4NzA0MDQwLAorCQl9IH0sCisJ CS5yYWRpbyA9IHsKKwkJCS50eXBlCT0gQ1gyMzg4NV9SQURJTywKKwkJCS5hbXV4CT0gQ1gyNTg0 MF9BVURJTzgsCisJCQkuZ3BpbzAJPSAweDcwNjA2MCwKKwkJfSwKIAl9LAogCVtDWDIzODg1X0JP QVJEX0xFQURURUtfV0lORkFTVF9QWERWUjMyMDBfSF9YQzQwMDBdID0gewogCQkubmFtZQkJPSAi TGVhZHRlayBXaW5mYXN0IFB4RFZSMzIwMCBIIFhDNDAwMCIsCiAJCS5wb3J0YQkJPSBDWDIzODg1 X0FOQUxPR19WSURFTywKKwkJLnBvcnRiCQk9IENYMjM4ODVfTVBFR19FTkNPREVSLAogCQkucG9y dGMJCT0gQ1gyMzg4NV9NUEVHX0RWQiwKIAkJLnR1bmVyX3R5cGUJPSBUVU5FUl9YQzQwMDAsCiAJ CS50dW5lcl9hZGRyCT0gMHg2MSwKIAkJLnJhZGlvX3R5cGUJPSBVTlNFVCwKIAkJLnJhZGlvX2Fk ZHIJPSBBRERSX1VOU0VULAorCQkudHVuZXJfYnVzCT0gMSwKIAkJLmlucHV0CQk9IHt7CiAJCQku dHlwZQk9IENYMjM4ODVfVk1VWF9URUxFVklTSU9OLAogCQkJLnZtdXgJPSBDWDI1ODQwX1ZJTjJf Q0gxIHwKLQkJCQkgIENYMjU4NDBfVklONV9DSDIgfAotCQkJCSAgQ1gyNTg0MF9OT05FMF9DSDMs CisJCQkJICBDWDI1ODQwX1ZJTjVfQ0gyLAorCQkJLmFtdXgJPSBDWDI1ODQwX0FVRElPOCwKKwkJ CS5ncGlvMAk9IDB4NzA0MDQwLAogCQl9LCB7CiAJCQkudHlwZQk9IENYMjM4ODVfVk1VWF9DT01Q T1NJVEUxLAotCQkJLnZtdXgJPSBDWDI1ODQwX0NPTVBPU0lURTEsCisJCQkudm11eAk9IENYMjU4 NDBfVklOMV9DSDEsCisJCQkuYW11eAk9IENYMjU4NDBfQVVESU83LAorCQkJLmdwaW8wCT0gMHg3 MDQwNDAsCiAJCX0sIHsKIAkJCS50eXBlCT0gQ1gyMzg4NV9WTVVYX1NWSURFTywKLQkJCS52bXV4 CT0gQ1gyNTg0MF9TVklERU9fTFVNQTMgfAotCQkJCSAgQ1gyNTg0MF9TVklERU9fQ0hST01BNCwK KwkJCS52bXV4CT0gQ1gyNTg0MF9WSU4zX0NIMSB8CisJCQkJICBDWDI1ODQwX1NWSURFT19PTiwK KwkJCS5hbXV4CT0gQ1gyNTg0MF9BVURJTzcsCisJCQkuZ3BpbzAJPSAweDcwNDA0MCwKIAkJfSwg ewogCQkJLnR5cGUJPSBDWDIzODg1X1ZNVVhfQ09NUE9ORU5ULAogCQkJLnZtdXgJPSBDWDI1ODQw X1ZJTjdfQ0gxIHwKIAkJCQkgIENYMjU4NDBfVklONl9DSDIgfAogCQkJCSAgQ1gyNTg0MF9WSU44 X0NIMyB8CiAJCQkJICBDWDI1ODQwX0NPTVBPTkVOVF9PTiwKKwkJCS5hbXV4CT0gQ1gyNTg0MF9B VURJTzcsCisJCQkuZ3BpbzAJPSAweDcwNDA0MCwKIAkJfSB9LAorCQkucmFkaW8gPSB7CisJCQku dHlwZQk9IENYMjM4ODVfUkFESU8sCisJCQkuYW11eAk9IENYMjU4NDBfQVVESU84LAorCQkJLmdw aW8wCT0gMHg3MDYwNjAsCisJCX0sCiAJfSwKIAlbQ1gyMzg4NV9CT0FSRF9DT01QUk9fVklERU9N QVRFX0U2NTBGXSA9IHsKIAkJLm5hbWUJCT0gIkNvbXBybyBWaWRlb01hdGUgRTY1MEYiLApAQCAt ODE4LDI3ICs4NzAsOTUgQEAgc3RhdGljIHZvaWQgaGF1cHBhdWdlX2VlcHJvbShzdHJ1Y3QgY3gy MwogCQkJZGV2LT5uYW1lLCB0di5tb2RlbCk7CiB9CiAKK3N0YXRpYyBpbnQgY3gyMzg4NV94YzIw MjhfbGVhZHRla19jYWxsYmFjayhzdHJ1Y3QgY3gyMzg4NV9kZXYgKmRldiwKKwkJCQkJICAgaW50 IGNvbW1hbmQsIGludCBhcmcpCit7CisJc3dpdGNoIChjb21tYW5kKSB7CisJY2FzZSBYQzIwMjhf VFVORVJfUkVTRVQ6CisJCS8qIEdQSU8gMTIgKHhjMjAyOCB0dW5lciByZXNldCkgKi8KKwkJY3hf c2V0KEdQMF9JTywgMHgwMDA0MDAwMCk7CisJCW1kZWxheSg3NSk7CisJCWN4X2NsZWFyKEdQMF9J TywgMHgwMDAwMDAwNCk7CisJCW1kZWxheSg3NSk7CisJCWN4X3NldChHUDBfSU8sIDB4MDAwNDAw MDQpOworCQltZGVsYXkoNzUpOworCQlyZXR1cm4gMDsKKwljYXNlIFhDMjAyOF9SRVNFVF9DTEs6 CisJY2FzZSBYQzIwMjhfSTJDX0ZMVVNIOgorCQlicmVhazsKKwl9CisJcmV0dXJuIC1FSU5WQUw7 Cit9CisKK3N0YXRpYyBpbnQgY3gyMzg4NV94YzQwMDBfbGVhZHRla19jYWxsYmFjayhzdHJ1Y3Qg Y3gyMzg4NV9kZXYgKmRldiwKKwkJCQkJICAgaW50IGNvbW1hbmQsIGludCBhcmcpCit7CisJc3dp dGNoIChjb21tYW5kKSB7CisJY2FzZSBYQzQwMDBfVFVORVJfUkVTRVQ6CisJCS8qIEdQSU8gMTIg KHhjNDAwMCB0dW5lciByZXNldCkgKi8KKwkJY3hfc2V0KEdQMF9JTywgMHgwMDA0MDAwMCk7CisJ CW1kZWxheSg3NSk7CisJCWN4X2NsZWFyKEdQMF9JTywgMHgwMDAwMDAwNCk7CisJCW1kZWxheSg3 NSk7CisJCWN4X3NldChHUDBfSU8sIDB4MDAwNDAwMDQpOworCQltZGVsYXkoNzUpOworCQlyZXR1 cm4gMDsKKwl9CisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgY3gyMzg4NV94YzIw MjhfdHVuZXJfY2FsbGJhY2soc3RydWN0IGN4MjM4ODVfZGV2ICpkZXYsCisJCQkJCSBpbnQgY29t bWFuZCwgaW50IGFyZykKK3sKKwkvKiBCb2FyZC1zcGVjaWZpYyBjYWxsYmFja3MgKi8KKwlzd2l0 Y2ggKGRldi0+Ym9hcmQpIHsKKwljYXNlIENYMjM4ODVfQk9BUkRfTEVBRFRFS19XSU5GQVNUX1BY RFZSMzIwMF9IOgorCQlyZXR1cm4gY3gyMzg4NV94YzIwMjhfbGVhZHRla19jYWxsYmFjayhkZXYs IGNvbW1hbmQsIGFyZyk7CisJfQorCisJcmV0dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQg Y3gyMzg4NV94YzQwMDBfdHVuZXJfY2FsbGJhY2soc3RydWN0IGN4MjM4ODVfZGV2ICpkZXYsCisJ CQkJCSBpbnQgY29tbWFuZCwgaW50IGFyZykKK3sKKwkvKiBCb2FyZC1zcGVjaWZpYyBjYWxsYmFj a3MgKi8KKwlzd2l0Y2ggKGRldi0+Ym9hcmQpIHsKKwljYXNlIENYMjM4ODVfQk9BUkRfTEVBRFRF S19XSU5GQVNUX1BYRFZSMzIwMF9IX1hDNDAwMDoKKwkJcmV0dXJuIGN4MjM4ODVfeGM0MDAwX2xl YWR0ZWtfY2FsbGJhY2soZGV2LCBjb21tYW5kLCBhcmcpOworCX0KKworCXJldHVybiAtRUlOVkFM OworfQorCiBpbnQgY3gyMzg4NV90dW5lcl9jYWxsYmFjayh2b2lkICpwcml2LCBpbnQgY29tcG9u ZW50LCBpbnQgY29tbWFuZCwgaW50IGFyZykKIHsKIAlzdHJ1Y3QgY3gyMzg4NV90c3BvcnQgKnBv cnQgPSBwcml2OwotCXN0cnVjdCBjeDIzODg1X2RldiAqZGV2ID0gcG9ydC0+ZGV2OworCXN0cnVj dCBjeDIzODg1X2RldiAqZGV2OwogCXUzMiBiaXRtYXNrID0gMDsKIAotCWlmIChjb21tYW5kID09 IFhDMjAyOF9SRVNFVF9DTEspCi0JCXJldHVybiAwOworCWlmICghcG9ydCkgeworCQlwcmludGso S0VSTl9FUlIgImN4MjM4ODU6IEVycm9yIC0gcHJpdmF0ZSBkYXRhIHVuZGVmaW5lZC5cbiIpOwor CQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlkZXYgPSBwb3J0LT5kZXY7CiAKLQlpZiAoY29tbWFu ZCAhPSAwKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXMoKTogVW5rbm93biBjb21tYW5kIDB4JXgu XG4iLAotCQkJX19mdW5jX18sIGNvbW1hbmQpOworCWlmICghZGV2KSB7CisJCXByaW50ayhLRVJO X0VSUiAiY3gyMzg4NTogRXJyb3IgLSBkZXZpY2Ugc3RydWN0IHVuZGVmaW5lZC5cbiIpOwogCQly ZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlzd2l0Y2ggKGRldi0+Ym9hcmQpIHsKKwljYXNlIENYMjM4 ODVfQk9BUkRfTEVBRFRFS19XSU5GQVNUX1BYRFZSMzIwMF9IOgorCQlwcmludGsoS0VSTl9JTkZP ICIlczogQ2FsbGluZyBYQzIwMjgvMzAyOCBjYWxsYmFja1xuIiwgZGV2LT5uYW1lKTsKKwkJcmV0 dXJuIGN4MjM4ODVfeGMyMDI4X3R1bmVyX2NhbGxiYWNrKGRldiwgY29tbWFuZCwgYXJnKTsKKwlj YXNlIENYMjM4ODVfQk9BUkRfTEVBRFRFS19XSU5GQVNUX1BYRFZSMzIwMF9IX1hDNDAwMDoKKwkJ cHJpbnRrKEtFUk5fSU5GTyAiJXM6IENhbGxpbmcgWEM0MDAwIGNhbGxiYWNrXG4iLCBkZXYtPm5h bWUpOworCQlyZXR1cm4gY3gyMzg4NV94YzQwMDBfdHVuZXJfY2FsbGJhY2soZGV2LCBjb21tYW5k LCBhcmcpOwogCWNhc2UgQ1gyMzg4NV9CT0FSRF9IQVVQUEFVR0VfSFZSMTQwMDoKIAljYXNlIENY MjM4ODVfQk9BUkRfSEFVUFBBVUdFX0hWUjE1MDA6CiAJY2FzZSBDWDIzODg1X0JPQVJEX0hBVVBQ QVVHRV9IVlIxNTAwUToKLQljYXNlIENYMjM4ODVfQk9BUkRfTEVBRFRFS19XSU5GQVNUX1BYRFZS MzIwMF9IOgotCWNhc2UgQ1gyMzg4NV9CT0FSRF9MRUFEVEVLX1dJTkZBU1RfUFhEVlIzMjAwX0hf WEM0MDAwOgogCWNhc2UgQ1gyMzg4NV9CT0FSRF9DT01QUk9fVklERU9NQVRFX0U2NTBGOgogCWNh c2UgQ1gyMzg4NV9CT0FSRF9DT01QUk9fVklERU9NQVRFX0U4MDA6CiAJY2FzZSBDWDIzODg1X0JP QVJEX0xFQURURUtfV0lORkFTVF9QWFRWMTIwMDoKQEAgLTg2MSw2ICs5ODEsOSBAQCBpbnQgY3gy Mzg4NV90dW5lcl9jYWxsYmFjayh2b2lkICpwcml2LCBpCiAJY2FzZSBDWDIzODg1X0JPQVJEX05F VFVQX0RVQUxfRFZCX1RfQ19DSV9SRjoKIAkJYWx0ZXJhX2NpX3R1bmVyX3Jlc2V0KGRldiwgcG9y dC0+bnIpOwogCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcmludGsoS0VSTl9FUlIgImN4MjM4ODU6 IEVycm9yOiBDYWxsaW5nIGNhbGxiYWNrIGZvciBjYXJkICVkXG4iLCBkZXYtPmJvYXJkKTsKKwkJ YnJlYWs7CiAJfQogCiAJaWYgKGJpdG1hc2spIHsKQEAgLTg3Miw2ICs5OTUsNyBAQCBpbnQgY3gy Mzg4NV90dW5lcl9jYWxsYmFjayh2b2lkICpwcml2LCBpCiAKIAlyZXR1cm4gMDsKIH0KK0VYUE9S VF9TWU1CT0woY3gyMzg4NV90dW5lcl9jYWxsYmFjayk7CiAKIHZvaWQgY3gyMzg4NV9ncGlvX3Nl dHVwKHN0cnVjdCBjeDIzODg1X2RldiAqZGV2KQogewpAQCAtOTk5LDcgKzExMjMsMTEgQEAgdm9p ZCBjeDIzODg1X2dwaW9fc2V0dXAoc3RydWN0IGN4MjM4ODVfZAogCQljeF9zZXQoR1AwX0lPLCAw eDAwMGYwMDBmKTsKIAkJYnJlYWs7CiAJY2FzZSBDWDIzODg1X0JPQVJEX0xFQURURUtfV0lORkFT VF9QWERWUjMyMDBfSDoKKwkJY3gyMzg4NV94YzIwMjhfbGVhZHRla19jYWxsYmFjayhkZXYsIFhD MjAyOF9UVU5FUl9SRVNFVCwgMCk7CisJCWJyZWFrOwogCWNhc2UgQ1gyMzg4NV9CT0FSRF9MRUFE VEVLX1dJTkZBU1RfUFhEVlIzMjAwX0hfWEM0MDAwOgorCQljeDIzODg1X3hjNDAwMF9sZWFkdGVr X2NhbGxiYWNrKGRldiwgWEM0MDAwX1RVTkVSX1JFU0VULCAwKTsKKwkJYnJlYWs7CiAJY2FzZSBD WDIzODg1X0JPQVJEX0NPTVBST19WSURFT01BVEVfRTY1MEY6CiAJY2FzZSBDWDIzODg1X0JPQVJE X0NPTVBST19WSURFT01BVEVfRTgwMDoKIAljYXNlIENYMjM4ODVfQk9BUkRfTEVBRFRFS19XSU5G QVNUX1BYVFYxMjAwOgpAQCAtMTMxMiw2ICsxNDQwLDMwIEBAIHZvaWQgY3gyMzg4NV9pcl9wY2lf aW50X2VuYWJsZShzdHJ1Y3QgY3gKIAl9CiB9CiAKK3ZvaWQgY3gyMzg4NV9zZXR1cF94YzMwMjgo c3RydWN0IGN4MjM4ODVfZGV2ICpkZXYsIHN0cnVjdCB4YzIwMjhfY3RybCAqY3RsKQoreworCW1l bXNldChjdGwsIDAsIHNpemVvZigqY3RsKSk7CisKKwljdGwtPmZuYW1lICAgPSBYQzIwMjhfREVG QVVMVF9GSVJNV0FSRTsKKwljdGwtPm1heF9sZW4gPSA2NDsKKworCXN3aXRjaCAoZGV2LT5ib2Fy ZCkgeworCWNhc2UgQ1gyMzg4NV9CT0FSRF9MRUFEVEVLX1dJTkZBU1RfUFhUVjEyMDA6CisJCWJy ZWFrOworCWNhc2UgQ1gyMzg4NV9CT0FSRF9DT01QUk9fVklERU9NQVRFX0U2NTBGOgorCWNhc2Ug Q1gyMzg4NV9CT0FSRF9DT01QUk9fVklERU9NQVRFX0U4MDA6CisJY2FzZSBDWDIzODg1X0JPQVJE X0xFQURURUtfV0lORkFTVF9QWERWUjMyMDBfSDoKKwljYXNlIENYMjM4ODVfQk9BUkRfRFZJQ09f RlVTSU9OSERUVl9EVkJfVF9EVUFMX0VYUDoKKwkJY3RsLT5kZW1vZCA9IFhDMzAyOF9GRV9aQVJM SU5LNDU2OworCQlicmVhazsKKwlkZWZhdWx0OgorCQljdGwtPmRlbW9kID0gWEMzMDI4X0ZFX09S RU41Mzg7CisJCWN0bC0+bXRzID0gMTsKKwkJYnJlYWs7CisJfQorfQorRVhQT1JUX1NZTUJPTF9H UEwoY3gyMzg4NV9zZXR1cF94YzMwMjgpOworCiB2b2lkIGN4MjM4ODVfY2FyZF9zZXR1cChzdHJ1 Y3QgY3gyMzg4NV9kZXYgKmRldikKIHsKIAlzdHJ1Y3QgY3gyMzg4NV90c3BvcnQgKnRzMSA9ICZk ZXYtPnRzMTsKZGlmZiAtTmF1cnAgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4 NS5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUuaAotLS0gYS9kcml2ZXJz L21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS5oCTIwMTItMDEtMDUgMDA6NTU6NDQuMDAwMDAw MDAwICswMTAwCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LmgJMjAx Mi0wMS0xNCAxODo0ODo0NC4xNzIzNjY3NDYgKzAxMDAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs dWRlICJidGN4LXJpc2MuaCIKICNpbmNsdWRlICJjeDIzODg1LXJlZy5oIgogI2luY2x1ZGUgIm1l ZGlhL2N4MjM0MXguaCIKKyNpbmNsdWRlICJ0dW5lci14YzIwMjguaCIKIAogI2luY2x1ZGUgPGxp bnV4L211dGV4Lmg+CiAKQEAgLTIyNSw2ICsyMjYsNyBAQCBzdHJ1Y3QgY3gyMzg4NV9ib2FyZCB7 CiAJICovCiAJdTMyCQkJY2xrX2ZyZXE7CiAJc3RydWN0IGN4MjM4ODVfaW5wdXQgICAgaW5wdXRb TUFYX0NYMjM4ODVfSU5QVVRdOworCXN0cnVjdCBjeDIzODg1X2lucHV0ICAgIHJhZGlvOwogCWlu dAkJCWNpX3R5cGU7IC8qIGZvciBOZXRVUCAqLwogfTsKIApAQCAtNDE2LDYgKzQxOCw5IEBAIHN0 cnVjdCBjeDIzODg1X2RldiB7CiAKIAkvKiBWNGwgKi8KIAl1MzIgICAgICAgICAgICAgICAgICAg ICAgICBmcmVxOworCWludCAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzOworCWludCAgICAg ICAgICAgICAgICAgICAgICAgIG1wZWdfdXNlcnM7CisKIAlzdHJ1Y3QgdmlkZW9fZGV2aWNlICAg ICAgICAqdmlkZW9fZGV2OwogCXN0cnVjdCB2aWRlb19kZXZpY2UgICAgICAgICp2YmlfZGV2Owog CXN0cnVjdCB2aWRlb19kZXZpY2UgICAgICAgICpyYWRpb19kZXY7CkBAIC01NTQsNiArNTU5LDgg QEAgZXh0ZXJuIHZvaWQgY3gyMzg4NV9ncGlvX3NldHVwKHN0cnVjdCBjeAogZXh0ZXJuIHZvaWQg Y3gyMzg4NV9jYXJkX3NldHVwKHN0cnVjdCBjeDIzODg1X2RldiAqZGV2KTsKIGV4dGVybiB2b2lk IGN4MjM4ODVfY2FyZF9zZXR1cF9wcmVfaTJjKHN0cnVjdCBjeDIzODg1X2RldiAqZGV2KTsKIAor ZXh0ZXJuIHZvaWQgY3gyMzg4NV9zZXR1cF94YzMwMjgoc3RydWN0IGN4MjM4ODVfZGV2ICpkZXYs IHN0cnVjdCB4YzIwMjhfY3RybCAqY3RsKTsKKwogZXh0ZXJuIGludCBjeDIzODg1X2R2Yl9yZWdp c3RlcihzdHJ1Y3QgY3gyMzg4NV90c3BvcnQgKnBvcnQpOwogZXh0ZXJuIGludCBjeDIzODg1X2R2 Yl91bnJlZ2lzdGVyKHN0cnVjdCBjeDIzODg1X3RzcG9ydCAqcG9ydCk7CiAKZGlmZiAtTmF1cnAg YS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS12aWRlby5jIGIvZHJpdmVycy9t ZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUtdmlkZW8uYwotLS0gYS9kcml2ZXJzL21lZGlhL3Zp ZGVvL2N4MjM4ODUvY3gyMzg4NS12aWRlby5jCTIwMTItMDEtMDUgMDA6NTU6NDQuMDAwMDAwMDAw ICswMTAwCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LXZpZGVvLmMJ MjAxMi0wMS0xNCAxOToxMTo0My4xNDgzNjY3NDggKzAxMDAKQEAgLTM2LDYgKzM2LDcgQEAKICNp bmNsdWRlIDxtZWRpYS92NGwyLWlvY3RsLmg+CiAjaW5jbHVkZSAiY3gyMzg4NS1pb2N0bC5oIgog I2luY2x1ZGUgInR1bmVyLXhjMjAyOC5oIgorI2luY2x1ZGUgInhjNDAwMC5oIgogCiAjaW5jbHVk ZSA8bWVkaWEvY3gyNTg0MC5oPgogCkBAIC01MDIsMTggKzUwMyw2IEBAIHN0YXRpYyBpbnQgY3gy Mzg4NV92aWRlb19tdXgoc3RydWN0IGN4MjMKIAl2NGwyX3N1YmRldl9jYWxsKGRldi0+c2RfY3gy NTg0MCwgdmlkZW8sIHNfcm91dGluZywKIAkJCUlOUFVUKGlucHV0KS0+dm11eCwgMCwgMCk7CiAK LQlpZiAoKGRldi0+Ym9hcmQgPT0gQ1gyMzg4NV9CT0FSRF9IQVVQUEFVR0VfSFZSMTgwMCkgfHwK LQkJKGRldi0+Ym9hcmQgPT0gQ1gyMzg4NV9CT0FSRF9NUFg4ODUpKSB7Ci0JCS8qIENvbmZpZ3Vy ZSBhdWRpbyByb3V0aW5nICovCi0JCXY0bDJfc3ViZGV2X2NhbGwoZGV2LT5zZF9jeDI1ODQwLCBh dWRpbywgc19yb3V0aW5nLAotCQkJSU5QVVQoaW5wdXQpLT5hbXV4LCAwLCAwKTsKLQotCQlpZiAo SU5QVVQoaW5wdXQpLT5hbXV4ID09IENYMjU4NDBfQVVESU83KQotCQkJY3gyMzg4NV9mbGF0aXJv bl9tdXgoZGV2LCAxKTsKLQkJZWxzZSBpZiAoSU5QVVQoaW5wdXQpLT5hbXV4ID09IENYMjU4NDBf QVVESU82KQotCQkJY3gyMzg4NV9mbGF0aXJvbl9tdXgoZGV2LCAyKTsKLQl9Ci0KIAlyZXR1cm4g MDsKIH0KIApAQCAtNTIxLDYgKzUxMCwxMCBAQCBzdGF0aWMgaW50IGN4MjM4ODVfYXVkaW9fbXV4 KHN0cnVjdCBjeDIzCiB7CiAJZHByaW50aygxLCAiJXMoaW5wdXQ9JWQpXG4iLCBfX2Z1bmNfXywg aW5wdXQpOwogCisJLyogQ29uZmlndXJlIGF1ZGlvIHJvdXRpbmcgKi8KKwl2NGwyX3N1YmRldl9j YWxsKGRldi0+c2RfY3gyNTg0MCwgYXVkaW8sIHNfcm91dGluZywKKwkJSU5QVVQoaW5wdXQpLT5h bXV4LCAwLCAwKTsKKwogCS8qIFRoZSBiYXNlYmFuZCB2aWRlbyBjb3JlIG9mIHRoZSBjeDIzODg1 IGhhcyB0d28gYXVkaW8gaW5wdXRzLgogCSAqIExSMSBhbmQgTFIyLiBJbiBhbG1vc3QgZXZlcnkg c2luZ2xlIGNhc2Ugc28gZmFyIG9ubHkgSFZSMXh4eAogCSAqIGNhcmRzIHdlJ3ZlIG9ubHkgZXZl ciBzdXBwb3J0ZWQgTFIxLiBUaW1lIHRvIHN1cHBvcnQgTFIyLApAQCAtODcxLDIwICs4NjQsMjkg QEAgc3RhdGljIGludCB2aWRlb19vcGVuKHN0cnVjdCBmaWxlICpmaWxlKQogCWZoLT5oZWlnaHQg ICA9IDI0MDsKIAlmaC0+Zm10ICAgICAgPSBmb3JtYXRfYnlfZm91cmNjKFY0TDJfUElYX0ZNVF9Z VVlWKTsKIAorCW11dGV4X2xvY2soJmRldi0+bG9jayk7CisKIAl2aWRlb2J1Zl9xdWV1ZV9zZ19p bml0KCZmaC0+dmlkcSwgJmN4MjM4ODVfdmlkZW9fcW9wcywKIAkJCSAgICAmZGV2LT5wY2ktPmRl diwgJmRldi0+c2xvY2ssCiAJCQkgICAgVjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFLAogCQkJ ICAgIFY0TDJfRklFTERfSU5URVJMQUNFRCwKIAkJCSAgICBzaXplb2Yoc3RydWN0IGN4MjM4ODVf YnVmZmVyKSwKIAkJCSAgICBmaCwgTlVMTCk7Ci0KIAl2aWRlb2J1Zl9xdWV1ZV9zZ19pbml0KCZm aC0+dmJpcSwgJmN4MjM4ODVfdmJpX3FvcHMsCi0JCSZkZXYtPnBjaS0+ZGV2LCAmZGV2LT5zbG9j aywKLQkJVjRMMl9CVUZfVFlQRV9WQklfQ0FQVFVSRSwKLQkJVjRMMl9GSUVMRF9TRVFfVEIsCi0J CXNpemVvZihzdHJ1Y3QgY3gyMzg4NV9idWZmZXIpLAotCQlmaCwgTlVMTCk7CisJCQkgICAgJmRl di0+cGNpLT5kZXYsICZkZXYtPnNsb2NrLAorCQkJICAgIFY0TDJfQlVGX1RZUEVfVkJJX0NBUFRV UkUsCisJCQkgICAgVjRMMl9GSUVMRF9TRVFfVEIsCisJCQkgICAgc2l6ZW9mKHN0cnVjdCBjeDIz ODg1X2J1ZmZlciksCisJCQkgICAgZmgsIE5VTEwpOwogCisJaWYgKGZoLT5yYWRpbykgeworCQlk cHJpbnRrKDEsInZpZGVvX29wZW46IHNldHRpbmcgcmFkaW8gZGV2aWNlXG4iKTsKKwkJY3hfd3Jp dGUoR1BJT18wLCBjeDIzODg1X2JvYXJkc1tkZXYtPmJvYXJkXS5yYWRpby5ncGlvMCk7CisJCWNh bGxfYWxsKGRldiwgdHVuZXIsIHNfcmFkaW8pOworCX0KKworCWRldi0+dXNlcnMrKzsKKwltdXRl eF91bmxvY2soJmRldi0+bG9jayk7CiAKIAlkcHJpbnRrKDEsICJwb3N0IHZpZGVvYnVmX3F1ZXVl X2luaXQoKVxuIik7CiAKQEAgLTk4MSwxMyArOTgzLDI0IEBAIHN0YXRpYyBpbnQgdmlkZW9fcmVs ZWFzZShzdHJ1Y3QgZmlsZSAqZmkKIAl9CiAKIAl2aWRlb2J1Zl9tbWFwX2ZyZWUoJmZoLT52aWRx KTsKKwl2aWRlb2J1Zl9tbWFwX2ZyZWUoJmZoLT52YmlxKTsKKworCW11dGV4X2xvY2soJmRldi0+ bG9jayk7CiAJZmlsZS0+cHJpdmF0ZV9kYXRhID0gTlVMTDsKIAlrZnJlZShmaCk7CiAKKwlkZXYt PnVzZXJzLS07CisKIAkvKiBXZSBhcmUgbm90IHB1dHRpbmcgdGhlIHR1bmVyIHRvIHNsZWVwIGhl cmUgb24gZXhpdCwgYmVjYXVzZQogCSAqIHdlIHdhbnQgdG8gdXNlIHRoZSBtcGVnIGVuY29kZXIg aW4gYW5vdGhlciBzZXNzaW9uIHRvIGNhcHR1cmUKIAkgKiB0dW5lciB2aWRlby4gQ2xvc2luZyB0 aGlzIHdpbGwgcmVzdWx0IGluIG5vIHZpZGVvIHRvIHRoZSBlbmNvZGVyLgogCSAqLworI2lmIDAK KwlpZiAoIWRldi0+dXNlcnMpCisJCWNhbGxfYWxsKGRldiwgY29yZSwgc19wb3dlciwgMCk7Cisj ZW5kaWYKKworCW11dGV4X3VubG9jaygmZGV2LT5sb2NrKTsKIAogCXJldHVybiAwOwogfQpAQCAt MTI1NSwxNyArMTI2OCwxMyBAQCBzdGF0aWMgaW50IGN4MjM4ODVfZW51bV9pbnB1dChzdHJ1Y3Qg Y3gyCiAJCVtDWDIzODg1X1ZNVVhfRFZCXSAgICAgICAgPSAiRFZCIiwKIAkJW0NYMjM4ODVfVk1V WF9ERUJVR10gICAgICA9ICJmb3IgZGVidWcgb25seSIsCiAJfTsKLQl1bnNpZ25lZCBpbnQgbjsK Kwl1bnNpZ25lZCBpbnQgbiA9IGktPmluZGV4OwogCWRwcmludGsoMSwgIiVzKClcbiIsIF9fZnVu Y19fKTsKIAotCW4gPSBpLT5pbmRleDsKIAlpZiAobiA+PSBNQVhfQ1gyMzg4NV9JTlBVVCkKIAkJ cmV0dXJuIC1FSU5WQUw7Ci0KIAlpZiAoMCA9PSBJTlBVVChuKS0+dHlwZSkKIAkJcmV0dXJuIC1F SU5WQUw7Ci0KLQlpLT5pbmRleCA9IG47CiAJaS0+dHlwZSAgPSBWNEwyX0lOUFVUX1RZUEVfQ0FN RVJBOwogCXN0cmNweShpLT5uYW1lLCBpbmFtZVtJTlBVVChuKS0+dHlwZV0pOwogCWlmICgoQ1gy Mzg4NV9WTVVYX1RFTEVWSVNJT04gPT0gSU5QVVQobiktPnR5cGUpIHx8CkBAIC0xNTA1LDYgKzE1 MTQsMTA4IEBAIHN0YXRpYyBpbnQgdmlkaW9jX3NfZnJlcXVlbmN5KHN0cnVjdCBmaWwKIH0KIAog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gKi8KKy8qIFJBRElPIEVTUEVDSUZJQyBJT0NUTFMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMgaW50IHJhZGlvX3F1ZXJ5Y2Fw IChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAgKnByaXYsCisJCQkJCXN0cnVjdCB2NGwyX2NhcGFi aWxpdHkgKmNhcCkKK3sKKwlzdHJ1Y3QgY3gyMzg4NV9kZXYgKmRldiAgPSAoKHN0cnVjdCBjeDIz ODg1X2ZoICopcHJpdiktPmRldjsKKworCXN0cmNweShjYXAtPmRyaXZlciwgImN4MjM4ODUiKTsK KwlzdHJsY3B5KGNhcC0+Y2FyZCwgY3gyMzg4NV9ib2FyZHNbZGV2LT5ib2FyZF0ubmFtZSwgc2l6 ZW9mKGNhcC0+Y2FyZCkpOworCXNwcmludGYoY2FwLT5idXNfaW5mbywiUENJZTolcyIsIHBjaV9u YW1lKGRldi0+cGNpKSk7CisJY2FwLT5jYXBhYmlsaXRpZXMgPSBWNEwyX0NBUF9UVU5FUjsKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCByYWRpb19nX3R1bmVyIChzdHJ1Y3QgZmlsZSAqZmls ZSwgdm9pZCAqcHJpdiwKKwkJCQlzdHJ1Y3QgdjRsMl90dW5lciAqdCkKK3sKKwlzdHJ1Y3QgY3gy Mzg4NV9kZXYgKmRldiAgPSAoKHN0cnVjdCBjeDIzODg1X2ZoICopcHJpdiktPmRldjsKKworCWlm ICh1bmxpa2VseSh0LT5pbmRleCA+IDApKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXN0cmNweSh0 LT5uYW1lLCAiUmFkaW8iKTsKKwl0LT50eXBlID0gVjRMMl9UVU5FUl9SQURJTzsKKworCWNhbGxf YWxsKGRldiwgdHVuZXIsIGdfdHVuZXIsIHQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHJhZGlvX2VudW1faW5wdXQgKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LAorCQkJCXN0 cnVjdCB2NGwyX2lucHV0ICppKQoreworCWlmIChpLT5pbmRleCAhPSAwKQorCQlyZXR1cm4gLUVJ TlZBTDsKKwlzdHJjcHkoaS0+bmFtZSwiUmFkaW8iKTsKKwlpLT50eXBlID0gVjRMMl9JTlBVVF9U WVBFX1RVTkVSOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmFkaW9fZ19hdWRpbyAo c3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsIHN0cnVjdCB2NGwyX2F1ZGlvICphKQorewor CWlmICh1bmxpa2VseShhLT5pbmRleCkpCisJCXJldHVybiAtRUlOVkFMOworCisJc3RyY3B5KGEt Pm5hbWUsIlJhZGlvIik7CisJcmV0dXJuIDA7Cit9CisKKy8qIEZJWE1FOiBTaG91bGQgYWRkIGEg c3RhbmRhcmQgZm9yIHJhZGlvICovCisKK3N0YXRpYyBpbnQgcmFkaW9fc190dW5lciAoc3RydWN0 IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsCisJCQkJc3RydWN0IHY0bDJfdHVuZXIgKnQpCit7CisJ c3RydWN0IGN4MjM4ODVfZGV2ICpkZXYgID0gKChzdHJ1Y3QgY3gyMzg4NV9maCAqKXByaXYpLT5k ZXY7CisKKwlpZiAoMCAhPSB0LT5pbmRleCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljYWxsX2Fs bChkZXYsIHR1bmVyLCBzX3R1bmVyLCB0KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IHJhZGlvX3NfYXVkaW8gKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKKwkJCSAgc3RydWN0 IHY0bDJfYXVkaW8gKmEpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcmFkaW9fc19p bnB1dCAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLCB1bnNpZ25lZCBpbnQgaSkKK3sKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCByYWRpb19xdWVyeWN0cmwgKHN0cnVjdCBmaWxlICpm aWxlLCB2b2lkICpwcml2LAorCQkJICAgIHN0cnVjdCB2NGwyX3F1ZXJ5Y3RybCAqYykKK3sKKwlp bnQgaTsKKworCWlmIChjLT5pZCA8IFY0TDJfQ0lEX0JBU0UgfHwKKwkJYy0+aWQgPj0gVjRMMl9D SURfTEFTVFAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlpZiAoYy0+aWQgPT0gVjRMMl9DSURfQVVE SU9fTVVURSB8fAorCQljLT5pZCA9PSBWNEwyX0NJRF9BVURJT19WT0xVTUUgfHwKKwkJYy0+aWQg PT0gVjRMMl9DSURfQVVESU9fQkFMQU5DRSkgeworCQlmb3IgKGkgPSAwOyBpIDwgQ1gyMzg4NV9D VExTOyBpKyspIHsKKwkJCWlmIChjeDIzODg1X2N0bHNbaV0udi5pZCA9PSBjLT5pZCkKKwkJCQli cmVhazsKKwkJfQorCQlpZiAoaSA9PSBDWDIzODg1X0NUTFMpIHsKKwkJCSpjID0gbm9fY3RsOwor CQkJcmV0dXJuIDA7CisJCX0KKwkJKmMgPSBjeDIzODg1X2N0bHNbaV0udjsKKwl9IGVsc2UKKwkJ KmMgPSBub19jdGw7CisJcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIHN0YXRpYyB2b2lkIGN4 MjM4ODVfdmlkX3RpbWVvdXQodW5zaWduZWQgbG9uZyBkYXRhKQogewpAQCAtMTY1MiwxMiArMTc2 Myw0MyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfZmlsZV9vcGVyYXRpb25zCiAJLmlvY3Rs ICAgICAgICAgPSB2aWRlb19pb2N0bDIsCiB9OwogCitzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJf aW9jdGxfb3BzIHJhZGlvX2lvY3RsX29wcyA9IHsKKwkudmlkaW9jX3F1ZXJ5Y2FwICAgICAgPSBy YWRpb19xdWVyeWNhcCwKKwkudmlkaW9jX2dfdHVuZXIgICAgICAgPSByYWRpb19nX3R1bmVyLAor CS52aWRpb2NfZW51bV9pbnB1dCAgICA9IHJhZGlvX2VudW1faW5wdXQsCisJLnZpZGlvY19nX2F1 ZGlvICAgICAgID0gcmFkaW9fZ19hdWRpbywKKwkudmlkaW9jX3NfdHVuZXIgICAgICAgPSByYWRp b19zX3R1bmVyLAorCS52aWRpb2Nfc19hdWRpbyAgICAgICA9IHJhZGlvX3NfYXVkaW8sCisJLnZp ZGlvY19zX2lucHV0ICAgICAgID0gcmFkaW9fc19pbnB1dCwKKwkudmlkaW9jX3F1ZXJ5Y3RybCAg ICAgPSByYWRpb19xdWVyeWN0cmwsCisJLnZpZGlvY19nX2N0cmwgICAgICAgID0gdmlkaW9jX2df Y3RybCwKKwkudmlkaW9jX3NfY3RybCAgICAgICAgPSB2aWRpb2Nfc19jdHJsLAorCS52aWRpb2Nf Z19mcmVxdWVuY3kgICA9IHZpZGlvY19nX2ZyZXF1ZW5jeSwKKwkudmlkaW9jX3NfZnJlcXVlbmN5 ICAgPSB2aWRpb2Nfc19mcmVxdWVuY3ksCisjaWZkZWYgQ09ORklHX1ZJREVPX0FEVl9ERUJVRwor CS52aWRpb2NfZ19yZWdpc3RlciAgICA9IGN4MjM4ODVfZ19yZWdpc3RlciwKKwkudmlkaW9jX3Nf cmVnaXN0ZXIgICAgPSBjeDIzODg1X3NfcmVnaXN0ZXIsCisjZW5kaWYKK307CisKK3N0YXRpYyBz dHJ1Y3QgdmlkZW9fZGV2aWNlIGN4MjM4ODVfcmFkaW9fdGVtcGxhdGUgPSB7CisJLm5hbWUgICAg ICAgICAgICAgICAgID0gImN4MjM4ODUtcmFkaW8iLAorCS5mb3BzICAgICAgICAgICAgICAgICA9 ICZyYWRpb19mb3BzLAorCS5pb2N0bF9vcHMgICAgICAgICAgICA9ICZyYWRpb19pb2N0bF9vcHMs Cit9OwogCiB2b2lkIGN4MjM4ODVfdmlkZW9fdW5yZWdpc3RlcihzdHJ1Y3QgY3gyMzg4NV9kZXYg KmRldikKIHsKIAlkcHJpbnRrKDEsICIlcygpXG4iLCBfX2Z1bmNfXyk7CiAJY3gyMzg4NV9pcnFf cmVtb3ZlKGRldiwgMHgwMSk7CiAKKwlpZiAoZGV2LT5yYWRpb19kZXYpIHsKKwkJaWYgKHZpZGVv X2lzX3JlZ2lzdGVyZWQoZGV2LT5yYWRpb19kZXYpKQorCQkJdmlkZW9fdW5yZWdpc3Rlcl9kZXZp Y2UoZGV2LT5yYWRpb19kZXYpOworCQllbHNlCisJCQl2aWRlb19kZXZpY2VfcmVsZWFzZShkZXYt PnJhZGlvX2Rldik7CisJCWRldi0+cmFkaW9fZGV2ID0gTlVMTDsKKwl9CiAJaWYgKGRldi0+dmJp X2RldikgewogCQlpZiAodmlkZW9faXNfcmVnaXN0ZXJlZChkZXYtPnZiaV9kZXYpKQogCQkJdmlk ZW9fdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LT52YmlfZGV2KTsKQEAgLTE3MzAsMjIgKzE4NzIsMjgg QEAgaW50IGN4MjM4ODVfdmlkZW9fcmVnaXN0ZXIoc3RydWN0IGN4MjM4OAogCQkJc3RydWN0IHR1 bmVyX3NldHVwIHR1bl9zZXR1cDsKIAogCQkJbWVtc2V0KCZ0dW5fc2V0dXAsIDAsIHNpemVvZih0 dW5fc2V0dXApKTsKLQkJCXR1bl9zZXR1cC5tb2RlX21hc2sgPSBUX0FOQUxPR19UVjsKKworCQkJ dHVuX3NldHVwLm1vZGVfbWFzayA9IFRfQU5BTE9HX1RWIHwgVF9SQURJTzsKIAkJCXR1bl9zZXR1 cC50eXBlID0gZGV2LT50dW5lcl90eXBlOwogCQkJdHVuX3NldHVwLmFkZHIgPSB2NGwyX2kyY19z dWJkZXZfYWRkcihzZCk7CisKIAkJCXR1bl9zZXR1cC50dW5lcl9jYWxsYmFjayA9IGN4MjM4ODVf dHVuZXJfY2FsbGJhY2s7CiAKIAkJCXY0bDJfc3ViZGV2X2NhbGwoc2QsIHR1bmVyLCBzX3R5cGVf YWRkciwgJnR1bl9zZXR1cCk7CiAKLQkJCWlmIChkZXYtPmJvYXJkID09IENYMjM4ODVfQk9BUkRf TEVBRFRFS19XSU5GQVNUX1BYVFYxMjAwKSB7Ci0JCQkJc3RydWN0IHhjMjAyOF9jdHJsIGN0cmwg PSB7Ci0JCQkJCS5mbmFtZSA9IFhDMjAyOF9ERUZBVUxUX0ZJUk1XQVJFLAotCQkJCQkubWF4X2xl biA9IDY0Ci0JCQkJfTsKLQkJCQlzdHJ1Y3QgdjRsMl9wcml2X3R1bl9jb25maWcgY2ZnID0gewot CQkJCQkudHVuZXIgPSBkZXYtPnR1bmVyX3R5cGUsCi0JCQkJCS5wcml2ID0gJmN0cmwKLQkJCQl9 OworCQkJaWYgKGRldi0+dHVuZXJfdHlwZSA9PSBUVU5FUl9YQzIwMjgpIHsKKwkJCQlzdHJ1Y3Qg djRsMl9wcml2X3R1bl9jb25maWcgIGNmZzsKKwkJCQlzdHJ1Y3QgeGMyMDI4X2N0cmwgICAgICAg ICAgIGN0bDsKKworCQkJCS8qIEZpbGxzIGRldmljZS1kZXBlbmRlbnQgaW5pdGlhbGl6YXRpb24g cGFyYW1ldGVycyAqLworCQkJCWN4MjM4ODVfc2V0dXBfeGMzMDI4KGRldiwgJmN0bCk7CisKKwkJ CQltZW1zZXQoJmNmZywgMCwgc2l6ZW9mKGNmZykpOworCQkJCWNmZy50dW5lciA9IFRVTkVSX1hD MjAyODsKKwkJCQljZmcucHJpdiAgPSAmY3RsOworCisJCQkJcHJpbnRrKEtFUk5fSU5GTyAiJXM6 IEFza2luZyB4YzIwMjgvMzAyOCB0byBsb2FkIGZpcm13YXJlICVzXG4iLAorCQkJCSAgICAgICBk ZXYtPm5hbWUsIGN0bC5mbmFtZSk7CiAJCQkJdjRsMl9zdWJkZXZfY2FsbChzZCwgdHVuZXIsIHNf Y29uZmlnLCAmY2ZnKTsKIAkJCX0KIAkJfQpAQCAtMTc3Nyw2ICsxOTI1LDIxIEBAIGludCBjeDIz ODg1X3ZpZGVvX3JlZ2lzdGVyKHN0cnVjdCBjeDIzODgKIAlwcmludGsoS0VSTl9JTkZPICIlczog cmVnaXN0ZXJlZCBkZXZpY2UgJXNcbiIsCiAJICAgICAgIGRldi0+bmFtZSwgdmlkZW9fZGV2aWNl X25vZGVfbmFtZShkZXYtPnZiaV9kZXYpKTsKIAorCWlmIChjeDIzODg1X2JvYXJkc1tkZXYtPmJv YXJkXS5yYWRpby50eXBlID09IENYMjM4ODVfUkFESU8pIHsKKwkJZGV2LT5yYWRpb19kZXYgPSBj eDIzODg1X3ZkZXZfaW5pdChkZXYsIGRldi0+cGNpLAorCQkJCQkJJmN4MjM4ODVfcmFkaW9fdGVt cGxhdGUsICJyYWRpbyIpOworCQl2aWRlb19zZXRfZHJ2ZGF0YShkZXYtPnJhZGlvX2RldiwgZGV2 KTsKKwkJZXJyID0gdmlkZW9fcmVnaXN0ZXJfZGV2aWNlKGRldi0+cmFkaW9fZGV2LCBWRkxfVFlQ RV9SQURJTywKKwkJCQkJICAgIHJhZGlvX25yW2Rldi0+bnJdKTsKKwkJaWYgKGVyciA8IDApIHsK KwkJCXByaW50ayhLRVJOX0VSUiAiJXM6IGNhbid0IHJlZ2lzdGVyIHJhZGlvIGRldmljZVxuIiwK KwkJCSAgICAgICBkZXYtPm5hbWUpOworCQkJZ290byBmYWlsX3VucmVnOworCQl9CisJCXByaW50 ayhLRVJOX0lORk8gIiVzOiByZWdpc3RlcmVkIGRldmljZSAlc1xuIiwKKwkJICAgICAgIGRldi0+ bmFtZSwgdmlkZW9fZGV2aWNlX25vZGVfbmFtZShkZXYtPnJhZGlvX2RldikpOworCX0KKwogCS8q IFJlZ2lzdGVyIEFMU0EgYXVkaW8gZGV2aWNlICovCiAJZGV2LT5hdWRpb19kZXYgPSBjeDIzODg1 X2F1ZGlvX3JlZ2lzdGVyKGRldik7CiAK --0015175caeb0cf894c04b6811b6f--