From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-gx0-f174.google.com ([209.85.161.174]:61615 "EHLO mail-gx0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750734Ab1G1Ixv (ORCPT ); Thu, 28 Jul 2011 04:53:51 -0400 Received: by gxk21 with SMTP id 21so1636778gxk.19 for ; Thu, 28 Jul 2011 01:53:50 -0700 (PDT) MIME-Version: 1.0 From: Eddi De Pieri Date: Thu, 28 Jul 2011 10:53:30 +0200 Message-ID: Subject: Trying to support for HAUPPAUGE HVR-930C To: linux-media@vger.kernel.org Cc: devin.heitmueller@gmail.com, mchehab@redhat.com, o.endriss@gmx.de Content-Type: multipart/mixed; boundary=00504502cc2bbad62c04a91d4d61 Sender: linux-media-owner@vger.kernel.org List-ID: --00504502cc2bbad62c04a91d4d61 Content-Type: text/plain; charset=ISO-8859-1 Hi, I'd like to share my work to get hvr 930c. I had to apply some change to drxk structure too! The patch is created with git diff at with these latest 3 commit: commit 9bc5f6fa12c9e3e1e73e66bfabe9d463ea779b08 commit a65ea1e0dba7df0f3b6d55098162cf0125164c6c commit e5d993e5423ea4b81ccdbe2fa157ca5a75176d68 I cloned the work done for Terratec H5 devices. - I fixed the firmware extraction I already posted - The driver load the firmware to drxk - The xc5000 firmware upload works and reset too. - The if_khz should be ok (I dumped the value from usbsnoop) - added chunk_size to drx_config since it seems hvr930c needs a custom chunksize for firmware upload (please check since my patch may add regression other devices) - I temporary applied the patch https://patchwork.kernel.org/patch/790352/mbox/ too Actually the device don't work yet. Please someone can review my work? Signed-off-by: Eddi De Pieri regards --00504502cc2bbad62c04a91d4d61 Content-Type: application/octet-stream; name="hauppauge-hvr930c_r0.patch" Content-Disposition: attachment; filename="hauppauge-hvr930c_r0.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gqnh4o7s1 ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL2dldF9kdmJfZmlybXdhcmUgYi9Eb2N1bWVu dGF0aW9uL2R2Yi9nZXRfZHZiX2Zpcm13YXJlCmluZGV4IGM0NjZmNTguLjUwM2Q3MGYgMTAwNzU1 Ci0tLSBhL0RvY3VtZW50YXRpb24vZHZiL2dldF9kdmJfZmlybXdhcmUKKysrIGIvRG9jdW1lbnRh dGlvbi9kdmIvZ2V0X2R2Yl9maXJtd2FyZQpAQCAtMjcsNyArMjcsNyBAQCB1c2UgSU86OkhhbmRs ZTsKIAkJIm9yNTEyMTEiLCAib3I1MTEzMl9xYW0iLCAib3I1MTEzMl92c2IiLCAiYmx1ZWJpcmQi LAogCQkib3BlcmExIiwgImN4MjMxeHgiLCAiY3gxOCIsICJjeDIzODg1IiwgInB2cnVzYjIiLCAi bXBjNzE4IiwKIAkJImFmOTAxNSIsICJuZ2VuZSIsICJhejYwMjciLCAibG1lMjUxMF9sZyIsICJs bWUyNTEwY19zNzM5NSIsCi0JCSJsbWUyNTEwY19zNzM5NV9vbGQiLCAiZHJ4ayIsICJkcnhrX3Rl cnJhdGVjX2g1Iik7CisJCSJsbWUyNTEwY19zNzM5NV9vbGQiLCAiZHJ4ayIsICJkcnhrX2hhdXBw YXVnZV9odnI5MzBjIiwgImRyeGtfdGVycmF0ZWNfaDUiKTsKIAogIyBDaGVjayBhcmdzCiBzeW50 YXgoKSBpZiAoc2NhbGFyKEBBUkdWKSAhPSAxKTsKQEAgLTY1Miw2ICs2NTIsMjQgQEAgc3ViIGRy eGsgewogICAgICIkZndmaWxlIgogfQogCitzdWIgZHJ4a19oYXVwcGF1Z2VfaHZyOTMwYyB7Cisg ICAgbXkgJHVybCA9ICJodHRwOi8vd3d3LndpbnR2Y2QuY28udWsvZHJpdmVycy8iOworICAgIG15 ICR6aXBmaWxlID0gIkhWUi05eDBfNV8xMF8zMjVfMjgxNTNfU0lHTkVELnppcCI7CisgICAgbXkg JGhhc2ggPSAiODNhYjgyZTdlOTQ4MGVjOGJmMWFlMDE1NWNhNjNjODgiOworICAgIG15ICR0bXBk aXIgPSB0ZW1wZGlyKERJUiA9PiAiL3RtcCIsIENMRUFOVVAgPT4gMSk7CisgICAgbXkgJGRydmZp bGUgPSAiSFZSLTkwMC9lbU9FTS5zeXMiOworICAgIG15ICRmd2ZpbGUgPSAiZHZiLXVzYi1oYXVw cGF1Z2UtaHZyOTMwYy1kcnhrLmZ3IjsKKworICAgIGNoZWNrc3RhbmRhcmQoKTsKKworICAgIHdn ZXRmaWxlKCR6aXBmaWxlLCAkdXJsIC4gJHppcGZpbGUpOworICAgIHZlcmlmeSgkemlwZmlsZSwg JGhhc2gpOworICAgIHVuemlwKCR6aXBmaWxlLCAkdG1wZGlyKTsKKyAgICBleHRyYWN0KCIkdG1w ZGlyLyRkcnZmaWxlIiwgMHgxMTdiMCwgNDI2OTIsICIkZndmaWxlIik7CisKKyAgICAiJGZ3Zmls ZSIKK30KKwogc3ViIGRyeGtfdGVycmF0ZWNfaDUgewogICAgIG15ICR1cmwgPSAiaHR0cDovL3d3 dy5saW51eHR2Lm9yZy9kb3dubG9hZHMvZmlybXdhcmUvIjsKICAgICBteSAkaGFzaCA9ICIxOTAw MGRhZGE4ZTI3NDExNjJjY2M1MGNjOTFmYTdmMSI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L2NvbW1vbi90dW5lcnMveGM1MDAwLmMgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMveGM1 MDAwLmMKaW5kZXggYWExYjJlOC4uYTQ5MWE1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9j b21tb24vdHVuZXJzL3hjNTAwMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy94 YzUwMDAuYwpAQCAtOTk2LDYgKzk5Niw4IEBAIHN0YXRpYyBpbnQgeGNfbG9hZF9md19hbmRfaW5p dF90dW5lcihzdHJ1Y3QgZHZiX2Zyb250ZW5kICpmZSkKIAlzdHJ1Y3QgeGM1MDAwX3ByaXYgKnBy aXYgPSBmZS0+dHVuZXJfcHJpdjsKIAlpbnQgcmV0ID0gMDsKIAorCW11dGV4X2xvY2soJnhjNTAw MF9saXN0X211dGV4KTsKKwogCWlmICh4YzUwMDBfaXNfZmlybXdhcmVfbG9hZGVkKGZlKSAhPSBY Q19SRVNVTFRfU1VDQ0VTUykgewogCQlyZXQgPSB4YzUwMDBfZnd1cGxvYWQoZmUpOwogCQlpZiAo cmV0ICE9IFhDX1JFU1VMVF9TVUNDRVNTKQpAQCAtMTAxNSw2ICsxMDE3LDggQEAgc3RhdGljIGlu dCB4Y19sb2FkX2Z3X2FuZF9pbml0X3R1bmVyKHN0cnVjdCBkdmJfZnJvbnRlbmQgKmZlKQogCS8q IERlZmF1bHQgdG8gIkNBQkxFIiBtb2RlICovCiAJcmV0IHw9IHhjX3dyaXRlX3JlZyhwcml2LCBY UkVHX1NJR05BTFNPVVJDRSwgWENfUkZfTU9ERV9DQUJMRSk7CiAKKwltdXRleF91bmxvY2soJnhj NTAwMF9saXN0X211dGV4KTsKKwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9kcnhrLmggYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVu ZHMvZHJ4ay5oCmluZGV4IDU4YmFmNDEuLjBkYzk4ODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVk aWEvZHZiL2Zyb250ZW5kcy9kcnhrLmgKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRz L2RyeGsuaApAQCAtMjUsNiArMjUsOCBAQCBzdHJ1Y3QgZHJ4a19jb25maWcgewogCiAJYm9vbAlh bnRlbm5hX2R2YnQ7CiAJdTE2CWFudGVubmFfZ3BpbzsKKwkKKwlpbnQgICAgY2h1bmtfc2l6ZTsK IAogCWNvbnN0IGNoYXIgKm1pY3JvY29kZV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvZHZiL2Zyb250ZW5kcy9kcnhrX2hhcmQuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250 ZW5kcy9kcnhrX2hhcmQuYwppbmRleCA1Njk0OTU1Li45YTU5ZjI5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvZHJ4a19oYXJkLmMKKysrIGIvZHJpdmVycy9tZWRpYS9k dmIvZnJvbnRlbmRzL2RyeGtfaGFyZC5jCkBAIC02ODQsNyArNjg0LDggQEAgc3RhdGljIGludCBp bml0X3N0YXRlKHN0cnVjdCBkcnhrX3N0YXRlICpzdGF0ZSkKIAlzdGF0ZS0+bV9oYXNPT0IgPSBm YWxzZTsKIAlzdGF0ZS0+bV9oYXNBdWRpbyA9IGZhbHNlOwogCi0Jc3RhdGUtPm1fQ2h1bmtTaXpl ID0gMTI0OworCWlmICghc3RhdGUtPm1fQ2h1bmtTaXplKQorCSAgICBzdGF0ZS0+bV9DaHVua1Np emUgPSAxMjQ7CiAKIAlzdGF0ZS0+bV9vc2NDbG9ja0ZyZXEgPSAwOwogCXN0YXRlLT5tX3NtYXJ0 QW50SW52ZXJ0ZWQgPSBmYWxzZTsKQEAgLTY0MjIsNiArNjQyMyw3IEBAIHN0cnVjdCBkdmJfZnJv bnRlbmQgKmRyeGtfYXR0YWNoKGNvbnN0IHN0cnVjdCBkcnhrX2NvbmZpZyAqY29uZmlnLAogCXN0 YXRlLT5ub19pMmNfYnJpZGdlID0gY29uZmlnLT5ub19pMmNfYnJpZGdlOwogCXN0YXRlLT5hbnRl bm5hX2dwaW8gPSBjb25maWctPmFudGVubmFfZ3BpbzsKIAlzdGF0ZS0+YW50ZW5uYV9kdmJ0ID0g Y29uZmlnLT5hbnRlbm5hX2R2YnQ7CisJc3RhdGUtPm1fQ2h1bmtTaXplID0gY29uZmlnLT5jaHVu a19zaXplOwogCiAJLyogTk9URTogYXMgbW9yZSBVSU8gYml0cyB3aWxsIGJlIHVzZWQsIGFkZCB0 aGVtIHRvIHRoZSBtYXNrICovCiAJc3RhdGUtPlVJT19tYXNrID0gY29uZmlnLT5hbnRlbm5hX2dw aW87CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2VtMjh4eC9lbTI4eHgtY2FyZHMu YyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC1jYXJkcy5jCmluZGV4IDNlMzk1 OWYuLjUzOGJjOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4 eC1jYXJkcy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC1jYXJkcy5j CkBAIC0zMTcsNiArMzE3LDI0IEBAIHN0YXRpYyBzdHJ1Y3QgZW0yOHh4X3JlZ19zZXEgdGVycmF0 ZWNfaDVfZGlnaXRhbFtdID0gewogfTsKICNlbmRpZgogCitzdGF0aWMgc3RydWN0IGVtMjh4eF9y ZWdfc2VxIGhhdXBwYXVnZV85MzBjX2dwaW9bXSA9IHsKKy8vIHhjNTAwMCByZXNldAorCXtFTTI4 NzRfUjgwX0dQSU8sCTB4NmYsCTB4ZmYsCTEwfSwKKwl7RU0yODc0X1I4MF9HUElPLAkweDRmLAkw eGZmLAkxMH0sCisJe0VNMjg3NF9SODBfR1BJTywJMHg2ZiwJMHhmZiwJMTB9LAorCXtFTTI4NzRf UjgwX0dQSU8sCTB4NGYsCTB4ZmYsCTEwfSwKKwl7IC0xLAkJCS0xLAktMSwJLTF9LAorfTsKKwor I2lmIDAKK3N0YXRpYyBzdHJ1Y3QgZW0yOHh4X3JlZ19zZXEgaGF1cHBhdWdlXzkzMGNfZGlnaXRh bFtdID0geworCXtFTTI4NzRfUjgwX0dQSU8sCTB4ZjYsCTB4ZmYsCTEwfSwKKwl7RU0yODc0X1I4 MF9HUElPLAkweGU2LAkweGZmLAkxMDB9LAorCXtFTTI4NzRfUjgwX0dQSU8sCTB4YTYsCTB4ZmYs CTEwfSwKKwl7IC0xLAkJCS0xLAktMSwJLTF9LAorfTsKKyNlbmRpZgorCiAvKgogICogIEJvYXJk IGRlZmluaXRpb25zCiAgKi8KQEAgLTg3Myw2ICs4OTEsMTkgQEAgc3RydWN0IGVtMjh4eF9ib2Fy ZCBlbTI4eHhfYm9hcmRzW10gPSB7CiAJCQkJRU0yOFhYX0kyQ19DTEtfV0FJVF9FTkFCTEUgfAog CQkJCUVNMjhYWF9JMkNfRlJFUV80MDBfS0haLAogCX0sCisJW0VNMjg4NF9CT0FSRF9IQVVQUEFV R0VfV0lOVFZfSFZSXzkzMENdID0geworCQkubmFtZSAgICAgICAgID0gIkhhdXBwYXVnZSBXaW5U ViBIVlIgOTMwQyIsCisJCS5oYXNfZHZiICAgICAgPSAxLAorLy8jaWYgMAorLy8JCS50dW5lcl90 eXBlICAgPSBUVU5FUl9YQzUwMDAsCisvLwkJLnR1bmVyX2FkZHIgICA9IDB4NDEsCisvLwkJLmR2 Yl9ncGlvICAgICA9IGhhdXBwYXVnZV85MzBjX2RpZ2l0YWwsIC8qIEZJWE1FOiBwcm9iYWJseSB3 cm9uZyAqLworCQkudHVuZXJfZ3BpbyAgID0gaGF1cHBhdWdlXzkzMGNfZ3BpbywKKy8vI2VuZGlm CisJCS5pMmNfc3BlZWQgICAgPSBFTTI4NzRfSTJDX1NFQ09OREFSWV9CVVNfU0VMRUNUIHwKKwkJ CQlFTTI4WFhfSTJDX0NMS19XQUlUX0VOQUJMRSB8CisJCQkJRU0yOFhYX0kyQ19GUkVRXzQwMF9L SFosCisJfSwKIAlbRU0yODgwX0JPQVJEX0hBVVBQQVVHRV9XSU5UVl9IVlJfOTAwXSA9IHsKIAkJ Lm5hbWUgICAgICAgICA9ICJIYXVwcGF1Z2UgV2luVFYgSFZSIDkwMCIsCiAJCS50ZGE5ODg3X2Nv bmYgPSBUREE5ODg3X1BSRVNFTlQsCkBAIC0xOTQxLDYgKzE5NzIsOCBAQCBzdHJ1Y3QgdXNiX2Rl dmljZV9pZCBlbTI4eHhfaWRfdGFibGVbXSA9IHsKIAkJCS5kcml2ZXJfaW5mbyA9IEVNMjg3MF9C T0FSRF9LV09STERfQTM0MCB9LAogCXsgVVNCX0RFVklDRSgweDIwMTMsIDB4MDI0ZiksCiAJCQku ZHJpdmVyX2luZm8gPSBFTTI4MTc0X0JPQVJEX1BDVFZfMjkwRSB9LAorCXsgVVNCX0RFVklDRSgw eDIwNDAsIDB4MTYwNSksCisJCQkuZHJpdmVyX2luZm8gPSBFTTI4ODRfQk9BUkRfSEFVUFBBVUdF X1dJTlRWX0hWUl85MzBDIH0sCiAJeyB9LAogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBl bTI4eHhfaWRfdGFibGUpOwpAQCAtMTk5NCwxMCArMjAyNywxMCBAQCBpbnQgZW0yOHh4X3R1bmVy X2NhbGxiYWNrKHZvaWQgKnB0ciwgaW50IGNvbXBvbmVudCwgaW50IGNvbW1hbmQsIGludCBhcmcp CiAJaW50IHJjID0gMDsKIAlzdHJ1Y3QgZW0yOHh4ICpkZXYgPSBwdHI7CiAKLQlpZiAoZGV2LT50 dW5lcl90eXBlICE9IFRVTkVSX1hDMjAyOCkKKwlpZiAoZGV2LT50dW5lcl90eXBlICE9IFRVTkVS X1hDMjAyOCAmJiBkZXYtPnR1bmVyX3R5cGUgIT0gVFVORVJfWEM1MDAwKQogCQlyZXR1cm4gMDsK IAotCWlmIChjb21tYW5kICE9IFhDMjAyOF9UVU5FUl9SRVNFVCkKKwlpZiAoY29tbWFuZCAhPSBY QzIwMjhfVFVORVJfUkVTRVQgJiYgY29tbWFuZCAhPSBYQzUwMDBfVFVORVJfUkVTRVQpCiAJCXJl dHVybiAwOwogCiAJcmMgPSBlbTI4eHhfZ3Bpb19zZXQoZGV2LCBkZXYtPmJvYXJkLnR1bmVyX2dw aW8pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LWR2Yi5j IGIvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LWR2Yi5jCmluZGV4IGFiOGE3NDAu LmM1ZjNlNzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC1k dmIuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2VtMjh4eC9lbTI4eHgtZHZiLmMKQEAgLTEs NCArMSw0IEBACi0vKgorLyo2CiAgRFZCIGRldmljZSBkcml2ZXIgZm9yIGVtMjh4eAogCiAgKGMp IDIwMDgtMjAxMSBNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJAaW5mcmFkZWFkLm9yZz4K QEAgLTMwOSw2ICszMDksMTQgQEAgc3RydWN0IGRyeGtfY29uZmlnIHRlcnJhdGVjX2g1X2RyeGsg PSB7CiAJLm1pY3JvY29kZV9uYW1lID0gImR2Yi11c2ItdGVycmF0ZWMtaDUtZHJ4ay5mdyIsCiB9 OwogCitzdHJ1Y3QgZHJ4a19jb25maWcgaGF1cHBhdWdlXzkzMGNfZHJ4ayA9IHsKKwkuYWRyID0g MHgyOSwKKwkuc2luZ2xlX21hc3RlciA9IDEsCisJLm5vX2kyY19icmlkZ2UgPSAxLAorCS5taWNy b2NvZGVfbmFtZSA9ICJkdmItdXNiLWhhdXBwYXVnZS1odnI5MzBjLWRyeGsuZnciLAorCS5jaHVu a19zaXplID0gNTYsCit9OworCiBzdGF0aWMgaW50IGRyeGtfZ2F0ZV9jdHJsKHN0cnVjdCBkdmJf ZnJvbnRlbmQgKmZlLCBpbnQgZW5hYmxlKQogewogCXN0cnVjdCBlbTI4eHhfZHZiICpkdmIgPSBm ZS0+c2VjX3ByaXY7CkBAIC0zMjcsNiArMzM1LDkxIEBAIHN0YXRpYyBpbnQgZHJ4a19nYXRlX2N0 cmwoc3RydWN0IGR2Yl9mcm9udGVuZCAqZmUsIGludCBlbmFibGUpCiAJcmV0dXJuIHN0YXR1czsK IH0KIAorc3RhdGljIHZvaWQgaGF1cHBhdWdlX2h2cjkzMGNfaW5pdChzdHJ1Y3QgZW0yOHh4ICpk ZXYpCit7CisJaW50IGk7CisJCisKKwlzdHJ1Y3QgZW0yOHh4X3JlZ19zZXEgaGF1cHBhdWdlX2h2 cjkzMGNfaW5pdFtdID0geworCQl7RU0yODc0X1I4MF9HUElPLAkweGZmLAkweGZmLAkxMDF9LCAg Ly8xMTExMTExMQorLy8JCXsweGQgICAgICAgICAgICAsCTB4ZmYsCTB4ZmYsCTEwMX0sICAvLzEx MTExMTExCisJCXtFTTI4NzRfUjgwX0dQSU8sCTB4ZmIsCTB4ZmYsCTUwfSwgICAvLzExMTExMDEx ICBpbml0IGJpdCAzCisJCXtFTTI4NzRfUjgwX0dQSU8sCTB4ZmYsCTB4ZmYsCTE4NH0sICAvLzEx MTExMTExCisJCXsgLTEsICAgICAgICAgICAgICAgICAgIC0xLCAgICAgLTEsICAgICAtMX0sCisJ fTsKKwlzdHJ1Y3QgZW0yOHh4X3JlZ19zZXEgaGF1cHBhdWdlX2h2cjkzMGNfZW5kW10gPSB7CisJ CXtFTTI4NzRfUjgwX0dQSU8sCTB4ZWYsCTB4ZmYsCTF9LCAgICAvLzExMTAxMTExCisJCXtFTTI4 NzRfUjgwX0dQSU8sCTB4YWYsCTB4ZmYsCTEwMX0sICAvLzEwMTAxMTExICBpbml0IGJpdCA3CisJ CXtFTTI4NzRfUjgwX0dQSU8sCTB4ZWYsCTB4ZmYsCTExOH0sICAgLy8xMTEwMTExMQorCisKKy8v cGVyIGlsIHR1bmVyPworCQl7RU0yODc0X1I4MF9HUElPLAkweGVmLAkweGZmLAkxfSwgIC8vMTEx MDExMTEKKwkJe0VNMjg3NF9SODBfR1BJTywJMHhjZiwJMHhmZiwJMTF9LCAgICAvLzExMDAxMTEx ICBpbml0IGJpdCA2CisJCXtFTTI4NzRfUjgwX0dQSU8sCTB4ZWYsCTB4ZmYsCTY0fSwgIC8vMTEx MDExMTEKKworCQl7RU0yODc0X1I4MF9HUElPLAkweGNmLAkweGZmLAkxMDF9LCAgLy8xMTAwMTEx MSAgaW5pdCBiaXQgNgorCQl7RU0yODc0X1I4MF9HUElPLAkweGVmLAkweGZmLAkxMDF9LCAgLy8x MTEwMTExMQorCQl7RU0yODc0X1I4MF9HUElPLAkweGNmLAkweGZmLAkxMX0sICAvLzExMDAxMTEx ICBpbml0IGJpdCA2CisJCXtFTTI4NzRfUjgwX0dQSU8sCTB4ZWYsCTB4ZmYsCTEwMX0sICAvLzEx MTAxMTExCisKKy8vCQl7RU0yODc0X1I4MF9HUElPLAkweDZmLAkweGZmLAkxMH0sICAgIC8vMDEx MDExMTEKKy8vCQl7RU0yODc0X1I4MF9HUElPLAkweDZkLAkweGZmLAkxMDB9LCAgLy8wMTEwMTEw MSAgaW5pdCBiaXQgMgorCQl7IC0xLCAgICAgICAgICAgICAgICAgICAtMSwgICAgIC0xLCAgICAg LTF9LAorCX07CisKKwlzdHJ1Y3QgZW0yOHh4X3JlZ19zZXEgaGF1cHBhdWdlX2h2cjkzMGNfZW5k MltdID0geworLy8JCXtFTTI4NzRfUjgwX0dQSU8sCTB4NmYsCTB4ZmYsCTEyNH0sICAvLzAxMTAx MTExCisvLwkJe0VNMjg3NF9SODBfR1BJTywJMHg0ZiwJMHhmZiwJMTF9LCAgIC8vMDEwMDExMTEg IGluaXQgYml0IDYKKy8vCQl7RU0yODc0X1I4MF9HUElPLAkweDZmLAkweGZmLAkxfSwgICAgLy8w MTEwMTExMQorLy8JCXtFTTI4NzRfUjgwX0dQSU8sCTB4NGYsCTB4ZmYsCTEwfSwgICAvLzAxMDAx MTExICBpbml0IGJpdCA2CisvLwkJe0VNMjg3NF9SODBfR1BJTywJMHg2ZiwJMHhmZiwJMTAwfSwg IC8vMDExMDExMTEKKy8vCQl7MHhkICAgICAgICAgICAgLAkweDQyLAkweGZmLAkxMDF9LCAgLy8x MTExMTExMQorCQl7IC0xLCAgICAgICAgICAgICAgICAgICAtMSwgICAgIC0xLCAgICAgLTF9LAor CX07CisJc3RydWN0IHsKKwkJdW5zaWduZWQgY2hhciByWzRdOworCQlpbnQgbGVuOworCX0gcmVn c1tdID0geworCQl7eyAweDA2LCAweDAyLCAweDAwLCAweDMxIH0sIDR9LAorCQl7eyAweDAxLCAw eDAyIH0sIDJ9LAorCQl7eyAweDAxLCAweDAyLCAweDAwLCAweGM2IH0sIDR9LAorCQl7eyAweDAx LCAweDAwIH0sIDJ9LAorCQl7eyAweDAxLCAweDAwLCAweGZmLCAweGFmIH0sIDR9LAorCQl7eyAw eDAxLCAweDAwLCAweDAzLCAweGEwIH0sIDR9LAorCQl7eyAweDAxLCAweDAwIH0sIDJ9LAorCQl7 eyAweDAxLCAweDAwLCAweDczLCAweGFmIH0sIDR9LAorCQl7eyAweDA0LCAweDAwIH0sIDJ9LAor CQl7eyAweDAwLCAweDA0IH0sIDJ9LAorCQl7eyAweDAwLCAweDA0LCAweDAwLCAweDBhIH0sIDR9 LAorCQl7eyAweDA0LCAweDE0IH0sIDJ9LAorCQl7eyAweDA0LCAweDE0LCAweDAwLCAweDAwIH0s IDR9LAorCX07CisKKwllbTI4eHhfZ3Bpb19zZXQoZGV2LCBoYXVwcGF1Z2VfaHZyOTMwY19pbml0 KTsKKwllbTI4eHhfd3JpdGVfcmVnKGRldiwgRU0yOFhYX1IwNl9JMkNfQ0xLLCAweDQwKTsKKwlt c2xlZXAoMTApOworCWVtMjh4eF93cml0ZV9yZWcoZGV2LCBFTTI4WFhfUjA2X0kyQ19DTEssIDB4 NDQpOworCW1zbGVlcCgxMCk7CisKKwlkZXYtPmkyY19jbGllbnQuYWRkciA9IDB4ODIgPj4gMTsK KworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJlZ3MpOyBpKyspCisJCWkyY19tYXN0ZXJf c2VuZCgmZGV2LT5pMmNfY2xpZW50LCByZWdzW2ldLnIsIHJlZ3NbaV0ubGVuKTsKKwllbTI4eHhf Z3Bpb19zZXQoZGV2LCBoYXVwcGF1Z2VfaHZyOTMwY19lbmQpOworCisJbXNsZWVwKDEwMCk7CisK KwllbTI4eHhfd3JpdGVfcmVnKGRldiwgRU0yOFhYX1IwNl9JMkNfQ0xLLCAweDQ0KTsKKwltc2xl ZXAoMzApOworCisJZW0yOHh4X2dwaW9fc2V0KGRldiwgaGF1cHBhdWdlX2h2cjkzMGNfZW5kMik7 CisJbXNsZWVwKDEwKTsKKwllbTI4eHhfd3JpdGVfcmVnKGRldiwgRU0yOFhYX1IwNl9JMkNfQ0xL LCAweDQ1KTsKKwltc2xlZXAoMTApOworCit9CisKIHN0YXRpYyB2b2lkIHRlcnJhdGVjX2g1X2lu aXQoc3RydWN0IGVtMjh4eCAqZGV2KQogewogCWludCBpOwpAQCAtNzY5LDYgKzg2Miw0NyBAQCBz dGF0aWMgaW50IGR2Yl9pbml0KHN0cnVjdCBlbTI4eHggKmRldikKIAkJCX0KIAkJfQogCQlicmVh azsKKwljYXNlIEVNMjg4NF9CT0FSRF9IQVVQUEFVR0VfV0lOVFZfSFZSXzkzMEM6CisJCWhhdXBw YXVnZV9odnI5MzBjX2luaXQoZGV2KTsKKworCQlkdmItPmRvbnRfYXR0YWNoX2ZlMSA9IDE7CisK KwkJZHZiLT5mZVswXSA9IGR2Yl9hdHRhY2goZHJ4a19hdHRhY2gsICZoYXVwcGF1Z2VfOTMwY19k cnhrLCAmZGV2LT5pMmNfYWRhcCwgJmR2Yi0+ZmVbMV0pOworCQlpZiAoIWR2Yi0+ZmVbMF0pIHsK KwkJCXJlc3VsdCA9IC1FSU5WQUw7CisJCQlnb3RvIG91dF9mcmVlOworCQl9CisJCS8qIEZJWE1F OiBkbyB3ZSBuZWVkIGEgcGxsIHNlbWFwaG9yZT8gKi8KKwkJZHZiLT5mZVswXS0+c2VjX3ByaXYg PSBkdmI7CisJCXNlbWFfaW5pdCgmZHZiLT5wbGxfbXV0ZXgsIDEpOworCQlkdmItPmdhdGVfY3Ry bCA9IGR2Yi0+ZmVbMF0tPm9wcy5pMmNfZ2F0ZV9jdHJsOworCQlkdmItPmZlWzBdLT5vcHMuaTJj X2dhdGVfY3RybCA9IGRyeGtfZ2F0ZV9jdHJsOworCQlkdmItPmZlWzFdLT5pZCA9IDE7CisKKwkJ LyogQXR0YWNoIHhjNTAwMCAqLworCQlzdHJ1Y3QgeGM1MDAwX2NvbmZpZyBjZmc7CisJCW1lbXNl dCgmY2ZnLCAwLCBzaXplb2YoY2ZnKSk7CisJCWNmZy5pMmNfYWRkcmVzcyAgPSAweDYxOworCQkv L2NmZy5pZl9raHogPSA0NTcwOyAvL0ZJWE1FCisJCWNmZy5pZl9raHogPSA0MDAwOyAvL0ZJWE1F IChzaG91bGQgYmUgb2spIHJlYWQgZnJvbSBpMmMgdHJhZmZpYworCisJCWlmIChkdmItPmZlWzBd LT5vcHMuaTJjX2dhdGVfY3RybCkKKwkJCWR2Yi0+ZmVbMF0tPm9wcy5pMmNfZ2F0ZV9jdHJsKGR2 Yi0+ZmVbMF0sIDEpOworCQlpZiAoIWR2Yl9hdHRhY2goeGM1MDAwX2F0dGFjaCwgZHZiLT5mZVsw XSwgJmRldi0+aTJjX2FkYXAsICZjZmcpKSB7CisJCQlyZXN1bHQgPSAtRUlOVkFMOworCQkJZ290 byBvdXRfZnJlZTsKKwkJfQorCisJCWlmIChkdmItPmZlWzBdLT5vcHMuaTJjX2dhdGVfY3RybCkK KwkJCWR2Yi0+ZmVbMF0tPm9wcy5pMmNfZ2F0ZV9jdHJsKGR2Yi0+ZmVbMF0sIDApOworCisJCS8q IEhhY2sgLSBuZWVkZWQgYnkgZHJ4ay90ZGExODI3MWMyZGQgKi8KKwkJZHZiLT5mZVsxXS0+dHVu ZXJfcHJpdiA9IGR2Yi0+ZmVbMF0tPnR1bmVyX3ByaXY7CisJCW1lbWNweSgmZHZiLT5mZVsxXS0+ b3BzLnR1bmVyX29wcywKKwkJICAgICAgICZkdmItPmZlWzBdLT5vcHMudHVuZXJfb3BzLAorCQkg ICAgICAgc2l6ZW9mKGR2Yi0+ZmVbMF0tPm9wcy50dW5lcl9vcHMpKTsKKworCQlicmVhazsKIAlj YXNlIEVNMjg4NF9CT0FSRF9URVJSQVRFQ19INToKIAkJdGVycmF0ZWNfaDVfaW5pdChkZXYpOwog CkBAIC03NzksNyArOTEzLDYgQEAgc3RhdGljIGludCBkdmJfaW5pdChzdHJ1Y3QgZW0yOHh4ICpk ZXYpCiAJCQlyZXN1bHQgPSAtRUlOVkFMOwogCQkJZ290byBvdXRfZnJlZTsKIAkJfQotCiAJCS8q IEZJWE1FOiBkbyB3ZSBuZWVkIGEgcGxsIHNlbWFwaG9yZT8gKi8KIAkJZHZiLT5mZVswXS0+c2Vj X3ByaXYgPSBkdmI7CiAJCXNlbWFfaW5pdCgmZHZiLT5wbGxfbXV0ZXgsIDEpOwpAQCAtODE2LDcg Kzk0OSw5IEBAIHN0YXRpYyBpbnQgZHZiX2luaXQoc3RydWN0IGVtMjh4eCAqZGV2KQogCX0KIAkv KiBkZWZpbmUgZ2VuZXJhbC1wdXJwb3NlIGNhbGxiYWNrIHBvaW50ZXIgKi8KIAlkdmItPmZlWzBd LT5jYWxsYmFjayA9IGVtMjh4eF90dW5lcl9jYWxsYmFjazsKLQorCWlmIChkdmItPmZlWzFdKQor CSAgICBkdmItPmZlWzFdLT5jYWxsYmFjayA9IGVtMjh4eF90dW5lcl9jYWxsYmFjazsKKwkKIAkv KiByZWdpc3RlciBldmVyeXRoaW5nICovCiAJcmVzdWx0ID0gcmVnaXN0ZXJfZHZiKGR2YiwgVEhJ U19NT0RVTEUsIGRldiwgJmRldi0+dWRldi0+ZGV2KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9t ZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2VtMjh4eC9l bTI4eHguaAppbmRleCBkODA2NThiLi5jZjQ0Mzk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlh L3ZpZGVvL2VtMjh4eC9lbTI4eHguaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2VtMjh4eC9l bTI4eHguaApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmLWR2Yi5o PgogI2VuZGlmCiAjaW5jbHVkZSAidHVuZXIteGMyMDI4LmgiCisjaW5jbHVkZSAieGM1MDAwLmgi CiAjaW5jbHVkZSAiZW0yOHh4LXJlZy5oIgogCiAvKiBCb2FyZHMgc3VwcG9ydGVkIGJ5IGRyaXZl ciAqLwpAQCAtMTIwLDYgKzEyMSw3IEBACiAjZGVmaW5lIEVNMjg3NF9CT0FSRF9MRUFERVJTSElQ X0lTREJUCQkgIDc3CiAjZGVmaW5lIEVNMjgxNzRfQk9BUkRfUENUVl8yOTBFICAgICAgICAgICAg ICAgICAgIDc4CiAjZGVmaW5lIEVNMjg4NF9CT0FSRF9URVJSQVRFQ19INQkJICA3OQorI2RlZmlu ZSBFTTI4ODRfQk9BUkRfSEFVUFBBVUdFX1dJTlRWX0hWUl85MzBDCSAgODAKIAogLyogTGltaXRz IG1pbmltdW0gYW5kIGRlZmF1bHQgbnVtYmVyIG9mIGJ1ZmZlcnMgKi8KICNkZWZpbmUgRU0yOFhY X01JTl9CVUYgNAo= --00504502cc2bbad62c04a91d4d61--