From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v2 10/11] ALSA: x86: Split snd_intelhad into card and PCM specific structures Date: Thu, 27 Apr 2017 19:02:29 +0300 Message-ID: <20170427160231.13337-11-ville.syrjala@linux.intel.com> References: <20170427160231.13337-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170427160231.13337-1-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Takashi Iwai , alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRv IGFsbG93IG11bHRpcGxlIFBDTSBkZXZpY2VzIHRvIGJlIHJlZ2lzdGVyZWQgZm9yIHRoZSBMUEUg YXVkaW8gY2FyZCwKc3BsaXQgdGhlIHByaXZhdGUgZGF0YSBpbnRvIGNhcmQgYW5kIFBDTSBzcGVj aWZpYyBjaHVua3MuIEZvciBub3cgd2UnbGwKc3RpY2sgdG8ganVzdCBvbmUgUENNIGRldmljZSBh cyBiZWZvcmUuCgp2MjogUmV3b3JrIHRvIGRvIGEgcGNtIGRldmljZSBwZXIgcG9ydCBpbnN0ZWFk IG9mIHBlciBwaXBlCgpDYzogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgpDYzogUGllcnJl LUxvdWlzIEJvc3NhcnQgPHBpZXJyZS1sb3Vpcy5ib3NzYXJ0QGxpbnV4LmludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KLS0tCiBzb3VuZC94ODYvaW50ZWxfaGRtaV9hdWRpby5jIHwgMjI3ICsrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIHNvdW5kL3g4Ni9pbnRlbF9oZG1pX2F1ZGlv LmggfCAgMTUgKystCiAyIGZpbGVzIGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCAxMDAgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc291bmQveDg2L2ludGVsX2hkbWlfYXVkaW8uYyBiL3Nv dW5kL3g4Ni9pbnRlbF9oZG1pX2F1ZGlvLmMKaW5kZXggNjllMTA4NDU2MzNhLi4xMmZhZTI2ZTcw YmIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3g4Ni9pbnRlbF9oZG1pX2F1ZGlvLmMKKysrIGIvc291bmQv eDg2L2ludGVsX2hkbWlfYXVkaW8uYwpAQCAtNDIsNiArNDIsOSBAQAogI2luY2x1ZGUgPGRybS9p bnRlbF9scGVfYXVkaW8uaD4KICNpbmNsdWRlICJpbnRlbF9oZG1pX2F1ZGlvLmgiCiAKKyNkZWZp bmUgZm9yX2VhY2hfcG9ydChjYXJkX2N0eCwgcG9ydCkgXAorCWZvciAoKHBvcnQpID0gMDsgKHBv cnQpIDwgKGNhcmRfY3R4KS0+bnVtX3BvcnRzOyAocG9ydCkrKykKKwogLypzdGFuZGFyZCBtb2R1 bGUgb3B0aW9ucyBmb3IgQUxTQS4gVGhpcyBtb2R1bGUgc3VwcG9ydHMgb25seSBvbmUgY2FyZCov CiBzdGF0aWMgaW50IGhkbWlfY2FyZF9pbmRleCA9IFNORFJWX0RFRkFVTFRfSURYMTsKIHN0YXRp YyBjaGFyICpoZG1pX2NhcmRfaWQgPSBTTkRSVl9ERUZBVUxUX1NUUjE7CkBAIC0xOTIsMTIgKzE5 NSwxMiBAQCBzdGF0aWMgdm9pZCBoYWRfc3Vic3RyZWFtX3B1dChzdHJ1Y3Qgc25kX2ludGVsaGFk ICppbnRlbGhhZGRhdGEpCiAvKiBSZWdpc3RlciBhY2Nlc3MgZnVuY3Rpb25zICovCiBzdGF0aWMg dTMyIGhhZF9yZWFkX3JlZ2lzdGVyX3JhdyhzdHJ1Y3Qgc25kX2ludGVsaGFkICpjdHgsIHUzMiBy ZWcpCiB7Ci0JcmV0dXJuIGlvcmVhZDMyKGN0eC0+bW1pb19zdGFydCArIGN0eC0+aGFkX2NvbmZp Z19vZmZzZXQgKyByZWcpOworCXJldHVybiBpb3JlYWQzMihjdHgtPmNhcmRfY3R4LT5tbWlvX3N0 YXJ0ICsgY3R4LT5oYWRfY29uZmlnX29mZnNldCArIHJlZyk7CiB9CiAKIHN0YXRpYyB2b2lkIGhh ZF93cml0ZV9yZWdpc3Rlcl9yYXcoc3RydWN0IHNuZF9pbnRlbGhhZCAqY3R4LCB1MzIgcmVnLCB1 MzIgdmFsKQogewotCWlvd3JpdGUzMih2YWwsIGN0eC0+bW1pb19zdGFydCArIGN0eC0+aGFkX2Nv bmZpZ19vZmZzZXQgKyByZWcpOworCWlvd3JpdGUzMih2YWwsIGN0eC0+Y2FyZF9jdHgtPm1taW9f c3RhcnQgKyBjdHgtPmhhZF9jb25maWdfb2Zmc2V0ICsgcmVnKTsKIH0KIAogc3RhdGljIHZvaWQg aGFkX3JlYWRfcmVnaXN0ZXIoc3RydWN0IHNuZF9pbnRlbGhhZCAqY3R4LCB1MzIgcmVnLCB1MzIg KnZhbCkKQEAgLTE1MTksMjIgKzE1MjIsMjcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRfa2Nv bnRyb2xfbmV3IGhhZF9jb250cm9sc1tdID0gewogICovCiBzdGF0aWMgaXJxcmV0dXJuX3QgZGlz cGxheV9waXBlX2ludGVycnVwdF9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKIHsKLQlz dHJ1Y3Qgc25kX2ludGVsaGFkICpjdHggPSBkZXZfaWQ7Ci0JdTMyIGF1ZGlvX3N0YXQ7CisJc3Ry dWN0IHNuZF9pbnRlbGhhZF9jYXJkICpjYXJkX2N0eCA9IGRldl9pZDsKKwlpbnQgcG9ydDsKIAot CS8qIHVzZSByYXcgcmVnaXN0ZXIgYWNjZXNzIHRvIGFjayBJUlFzIGV2ZW4gd2hpbGUgZGlzY29u bmVjdGVkICovCi0JYXVkaW9fc3RhdCA9IGhhZF9yZWFkX3JlZ2lzdGVyX3JhdyhjdHgsIEFVRF9I RE1JX1NUQVRVUyk7CisJZm9yX2VhY2hfcG9ydChjYXJkX2N0eCwgcG9ydCkgeworCQlzdHJ1Y3Qg c25kX2ludGVsaGFkICpjdHggPSAmY2FyZF9jdHgtPnBjbV9jdHhbcG9ydF07CisJCXUzMiBhdWRp b19zdGF0OwogCi0JaWYgKGF1ZGlvX3N0YXQgJiBIRE1JX0FVRElPX1VOREVSUlVOKSB7Ci0JCWhh ZF93cml0ZV9yZWdpc3Rlcl9yYXcoY3R4LCBBVURfSERNSV9TVEFUVVMsCi0JCQkJICAgICAgIEhE TUlfQVVESU9fVU5ERVJSVU4pOwotCQloYWRfcHJvY2Vzc19idWZmZXJfdW5kZXJydW4oY3R4KTsK LQl9CisJCS8qIHVzZSByYXcgcmVnaXN0ZXIgYWNjZXNzIHRvIGFjayBJUlFzIGV2ZW4gd2hpbGUg ZGlzY29ubmVjdGVkICovCisJCWF1ZGlvX3N0YXQgPSBoYWRfcmVhZF9yZWdpc3Rlcl9yYXcoY3R4 LCBBVURfSERNSV9TVEFUVVMpOworCisJCWlmIChhdWRpb19zdGF0ICYgSERNSV9BVURJT19VTkRF UlJVTikgeworCQkJaGFkX3dyaXRlX3JlZ2lzdGVyX3JhdyhjdHgsIEFVRF9IRE1JX1NUQVRVUywK KwkJCQkJICAgICAgIEhETUlfQVVESU9fVU5ERVJSVU4pOworCQkJaGFkX3Byb2Nlc3NfYnVmZmVy X3VuZGVycnVuKGN0eCk7CisJCX0KIAotCWlmIChhdWRpb19zdGF0ICYgSERNSV9BVURJT19CVUZG RVJfRE9ORSkgewotCQloYWRfd3JpdGVfcmVnaXN0ZXJfcmF3KGN0eCwgQVVEX0hETUlfU1RBVFVT LAotCQkJCSAgICAgICBIRE1JX0FVRElPX0JVRkZFUl9ET05FKTsKLQkJaGFkX3Byb2Nlc3NfYnVm ZmVyX2RvbmUoY3R4KTsKKwkJaWYgKGF1ZGlvX3N0YXQgJiBIRE1JX0FVRElPX0JVRkZFUl9ET05F KSB7CisJCQloYWRfd3JpdGVfcmVnaXN0ZXJfcmF3KGN0eCwgQVVEX0hETUlfU1RBVFVTLAorCQkJ CQkgICAgICAgSERNSV9BVURJT19CVUZGRVJfRE9ORSk7CisJCQloYWRfcHJvY2Vzc19idWZmZXJf ZG9uZShjdHgpOworCQl9CiAJfQogCiAJcmV0dXJuIElSUV9IQU5ETEVEOwpAQCAtMTU0NSw5ICsx NTUzLDE0IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBkaXNwbGF5X3BpcGVfaW50ZXJydXB0X2hhbmRs ZXIoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogICovCiBzdGF0aWMgdm9pZCBub3RpZnlfYXVkaW9f bHBlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiB7Ci0Jc3RydWN0IHNuZF9pbnRlbGhh ZCAqY3R4ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisJc3RydWN0IHNuZF9pbnRlbGhh ZF9jYXJkICpjYXJkX2N0eCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCWludCBwb3J0 OworCisJZm9yX2VhY2hfcG9ydChjYXJkX2N0eCwgcG9ydCkgeworCQlzdHJ1Y3Qgc25kX2ludGVs aGFkICpjdHggPSAmY2FyZF9jdHgtPnBjbV9jdHhbcG9ydF07CiAKLQlzY2hlZHVsZV93b3JrKCZj dHgtPmhkbWlfYXVkaW9fd3EpOworCQlzY2hlZHVsZV93b3JrKCZjdHgtPmhkbWlfYXVkaW9fd3Ep OworCX0KIH0KIAogLyogdGhlIHdvcmsgdG8gaGFuZGxlIG1vbml0b3IgaG90IHBsdWcvdW5wbHVn ICovCkBAIC0xNjE4LDcgKzE2MzEsOCBAQCBzdGF0aWMgaW50IGhhZF9jcmVhdGVfamFjayhzdHJ1 Y3Qgc25kX2ludGVsaGFkICpjdHgsCiAJc25wcmludGYoaGRtaV9zdHIsIHNpemVvZihoZG1pX3N0 ciksCiAJCSAiSERNSS9EUCxwY209JWQiLCBwY20tPmRldmljZSk7CiAKLQllcnIgPSBzbmRfamFj a19uZXcoY3R4LT5jYXJkLCBoZG1pX3N0ciwgU05EX0pBQ0tfQVZPVVQsICZjdHgtPmphY2ssCisJ ZXJyID0gc25kX2phY2tfbmV3KGN0eC0+Y2FyZF9jdHgtPmNhcmQsIGhkbWlfc3RyLAorCQkJICAg U05EX0pBQ0tfQVZPVVQsICZjdHgtPmphY2ssCiAJCQkgICB0cnVlLCBmYWxzZSk7CiAJaWYgKGVy ciA8IDApCiAJCXJldHVybiBlcnI7CkBAIC0xNjMyLDEzICsxNjQ2LDE4IEBAIHN0YXRpYyBpbnQg aGFkX2NyZWF0ZV9qYWNrKHN0cnVjdCBzbmRfaW50ZWxoYWQgKmN0eCwKIAogc3RhdGljIGludCBo ZG1pX2xwZV9hdWRpb19ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQogewotCXN0 cnVjdCBzbmRfaW50ZWxoYWQgKmN0eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwotCXN0cnVjdCBz bmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtOworCXN0cnVjdCBzbmRfaW50ZWxoYWRfY2FyZCAq Y2FyZF9jdHggPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlpbnQgcG9ydDsKIAotCXN1YnN0cmVh bSA9IGhhZF9zdWJzdHJlYW1fZ2V0KGN0eCk7Ci0JaWYgKHN1YnN0cmVhbSkgewotCQlzbmRfcGNt X3N1c3BlbmQoc3Vic3RyZWFtKTsKLQkJaGFkX3N1YnN0cmVhbV9wdXQoY3R4KTsKKwlmb3JfZWFj aF9wb3J0KGNhcmRfY3R4LCBwb3J0KSB7CisJCXN0cnVjdCBzbmRfaW50ZWxoYWQgKmN0eCA9ICZj YXJkX2N0eC0+cGNtX2N0eFtwb3J0XTsKKwkJc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW07CisKKwkJc3Vic3RyZWFtID0gaGFkX3N1YnN0cmVhbV9nZXQoY3R4KTsKKwkJaWYgKHN1 YnN0cmVhbSkgeworCQkJc25kX3BjbV9zdXNwZW5kKHN1YnN0cmVhbSk7CisJCQloYWRfc3Vic3Ry ZWFtX3B1dChjdHgpOworCQl9CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0xNjQ2LDEyICsxNjY1LDEy IEBAIHN0YXRpYyBpbnQgaGRtaV9scGVfYXVkaW9fcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZp Y2UgKmRldikKIAogc3RhdGljIGludCBfX21heWJlX3VudXNlZCBoZG1pX2xwZV9hdWRpb19zdXNw ZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3Qgc25kX2ludGVsaGFkICpjdHggPSBk ZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3Qgc25kX2ludGVsaGFkX2NhcmQgKmNhcmRfY3R4 ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJaW50IGVycjsKIAogCWVyciA9IGhkbWlfbHBlX2F1 ZGlvX3J1bnRpbWVfc3VzcGVuZChkZXYpOwogCWlmICghZXJyKQotCQlzbmRfcG93ZXJfY2hhbmdl X3N0YXRlKGN0eC0+Y2FyZCwgU05EUlZfQ1RMX1BPV0VSX0QzaG90KTsKKwkJc25kX3Bvd2VyX2No YW5nZV9zdGF0ZShjYXJkX2N0eC0+Y2FyZCwgU05EUlZfQ1RMX1BPV0VSX0QzaG90KTsKIAlyZXR1 cm4gZXJyOwogfQogCkBAIC0xNjYzLDI5ICsxNjgyLDM0IEBAIHN0YXRpYyBpbnQgaGRtaV9scGVf YXVkaW9fcnVudGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogCiBzdGF0aWMgaW50IF9f bWF5YmVfdW51c2VkIGhkbWlfbHBlX2F1ZGlvX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7 Ci0Jc3RydWN0IHNuZF9pbnRlbGhhZCAqY3R4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3Ry dWN0IHNuZF9pbnRlbGhhZF9jYXJkICpjYXJkX2N0eCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwog CiAJaGRtaV9scGVfYXVkaW9fcnVudGltZV9yZXN1bWUoZGV2KTsKLQlzbmRfcG93ZXJfY2hhbmdl X3N0YXRlKGN0eC0+Y2FyZCwgU05EUlZfQ1RMX1BPV0VSX0QwKTsKKwlzbmRfcG93ZXJfY2hhbmdl X3N0YXRlKGNhcmRfY3R4LT5jYXJkLCBTTkRSVl9DVExfUE9XRVJfRDApOwogCXJldHVybiAwOwog fQogCiAvKiByZWxlYXNlIHJlc291cmNlcyAqLwogc3RhdGljIHZvaWQgaGRtaV9scGVfYXVkaW9f ZnJlZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQpCiB7Ci0Jc3RydWN0IHNuZF9pbnRlbGhhZCAqY3R4 ID0gY2FyZC0+cHJpdmF0ZV9kYXRhOwotCXN0cnVjdCBpbnRlbF9oZG1pX2xwZV9hdWRpb19wZGF0 YSAqcGRhdGEgPSBjdHgtPmRldi0+cGxhdGZvcm1fZGF0YTsKKwlzdHJ1Y3Qgc25kX2ludGVsaGFk X2NhcmQgKmNhcmRfY3R4ID0gY2FyZC0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBpbnRlbF9oZG1p X2xwZV9hdWRpb19wZGF0YSAqcGRhdGEgPSBjYXJkX2N0eC0+ZGV2LT5wbGF0Zm9ybV9kYXRhOwor CWludCBwb3J0OwogCiAJc3Bpbl9sb2NrX2lycSgmcGRhdGEtPmxwZV9hdWRpb19zbG9jayk7CiAJ cGRhdGEtPm5vdGlmeV9hdWRpb19scGUgPSBOVUxMOwogCXNwaW5fdW5sb2NrX2lycSgmcGRhdGEt PmxwZV9hdWRpb19zbG9jayk7CiAKLQljYW5jZWxfd29ya19zeW5jKCZjdHgtPmhkbWlfYXVkaW9f d3EpOworCWZvcl9lYWNoX3BvcnQoY2FyZF9jdHgsIHBvcnQpIHsKKwkJc3RydWN0IHNuZF9pbnRl bGhhZCAqY3R4ID0gJmNhcmRfY3R4LT5wY21fY3R4W3BvcnRdOworCisJCWNhbmNlbF93b3JrX3N5 bmMoJmN0eC0+aGRtaV9hdWRpb193cSk7CisJfQogCi0JaWYgKGN0eC0+bW1pb19zdGFydCkKLQkJ aW91bm1hcChjdHgtPm1taW9fc3RhcnQpOwotCWlmIChjdHgtPmlycSA+PSAwKQotCQlmcmVlX2ly cShjdHgtPmlycSwgY3R4KTsKKwlpZiAoY2FyZF9jdHgtPm1taW9fc3RhcnQpCisJCWlvdW5tYXAo Y2FyZF9jdHgtPm1taW9fc3RhcnQpOworCWlmIChjYXJkX2N0eC0+aXJxID49IDApCisJCWZyZWVf aXJxKGNhcmRfY3R4LT5pcnEsIGNhcmRfY3R4KTsKIH0KIAogLyoKQEAgLTE2OTcsMTIgKzE3MjEs MTIgQEAgc3RhdGljIHZvaWQgaGRtaV9scGVfYXVkaW9fZnJlZShzdHJ1Y3Qgc25kX2NhcmQgKmNh cmQpCiBzdGF0aWMgaW50IGhkbWlfbHBlX2F1ZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCiB7CiAJc3RydWN0IHNuZF9jYXJkICpjYXJkOwotCXN0cnVjdCBzbmRfaW50ZWxo YWQgKmN0eDsKKwlzdHJ1Y3Qgc25kX2ludGVsaGFkX2NhcmQgKmNhcmRfY3R4OwogCXN0cnVjdCBz bmRfcGNtICpwY207CiAJc3RydWN0IGludGVsX2hkbWlfbHBlX2F1ZGlvX3BkYXRhICpwZGF0YTsK IAlpbnQgaXJxOwogCXN0cnVjdCByZXNvdXJjZSAqcmVzX21taW87Ci0JaW50IGksIHJldDsKKwlp bnQgcG9ydCwgcmV0OwogCiAJcGRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKIAlpZiAo IXBkYXRhKSB7CkBAIC0xNzI1LDM5ICsxNzQ5LDMwIEBAIHN0YXRpYyBpbnQgaGRtaV9scGVfYXVk aW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAogCS8qIGNyZWF0ZSBhIGNh cmQgaW5zdGFuY2Ugd2l0aCBBTFNBIGZyYW1ld29yayAqLwogCXJldCA9IHNuZF9jYXJkX25ldygm cGRldi0+ZGV2LCBoZG1pX2NhcmRfaW5kZXgsIGhkbWlfY2FyZF9pZCwKLQkJCSAgIFRISVNfTU9E VUxFLCBzaXplb2YoKmN0eCksICZjYXJkKTsKKwkJCSAgIFRISVNfTU9EVUxFLCBzaXplb2YoKmNh cmRfY3R4KSwgJmNhcmQpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQljdHggPSBjYXJk LT5wcml2YXRlX2RhdGE7Ci0Jc3Bpbl9sb2NrX2luaXQoJmN0eC0+aGFkX3NwaW5sb2NrKTsKLQlt dXRleF9pbml0KCZjdHgtPm11dGV4KTsKLQljdHgtPmNvbm5lY3RlZCA9IGZhbHNlOwotCWN0eC0+ ZGV2ID0gJnBkZXYtPmRldjsKLQljdHgtPmNhcmQgPSBjYXJkOwotCWN0eC0+YWVzX2JpdHMgPSBT TkRSVl9QQ01fREVGQVVMVF9DT05fU1BESUY7CisJY2FyZF9jdHggPSBjYXJkLT5wcml2YXRlX2Rh dGE7CisJY2FyZF9jdHgtPmRldiA9ICZwZGV2LT5kZXY7CisJY2FyZF9jdHgtPmNhcmQgPSBjYXJk OwogCXN0cmNweShjYXJkLT5kcml2ZXIsIElOVEVMX0hBRCk7CiAJc3RyY3B5KGNhcmQtPnNob3J0 bmFtZSwgIkludGVsIEhETUkvRFAgTFBFIEF1ZGlvIik7CiAJc3RyY3B5KGNhcmQtPmxvbmduYW1l LCAiSW50ZWwgSERNSS9EUCBMUEUgQXVkaW8iKTsKIAotCWN0eC0+aXJxID0gLTE7Ci0JY3R4LT50 bWRzX2Nsb2NrX3NwZWVkID0gRElTX1NBTVBMRV9SQVRFXzE0OF81OwotCUlOSVRfV09SSygmY3R4 LT5oZG1pX2F1ZGlvX3dxLCBoYWRfYXVkaW9fd3EpOworCWNhcmRfY3R4LT5pcnEgPSAtMTsKIAog CWNhcmQtPnByaXZhdGVfZnJlZSA9IGhkbWlfbHBlX2F1ZGlvX2ZyZWU7CiAKLQkvKiBhc3N1bWUg cGlwZSBBIGFzIGRlZmF1bHQgKi8KLQljdHgtPmhhZF9jb25maWdfb2Zmc2V0ID0gQVVESU9fSERN SV9DT05GSUdfQTsKLQotCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGN0eCk7CisJcGxhdGZv cm1fc2V0X2RydmRhdGEocGRldiwgY2FyZF9jdHgpOwogCiAJZGV2X2RiZygmcGRldi0+ZGV2LCAi JXM6IG1taW9fc3RhcnQgPSAweCV4LCBtbWlvX2VuZCA9IDB4JXhcbiIsCiAJCV9fZnVuY19fLCAo dW5zaWduZWQgaW50KXJlc19tbWlvLT5zdGFydCwKIAkJKHVuc2lnbmVkIGludClyZXNfbW1pby0+ ZW5kKTsKIAotCWN0eC0+bW1pb19zdGFydCA9IGlvcmVtYXBfbm9jYWNoZShyZXNfbW1pby0+c3Rh cnQsCi0JCQkJCSAgKHNpemVfdCkocmVzb3VyY2Vfc2l6ZShyZXNfbW1pbykpKTsKLQlpZiAoIWN0 eC0+bW1pb19zdGFydCkgeworCWNhcmRfY3R4LT5tbWlvX3N0YXJ0ID0gaW9yZW1hcF9ub2NhY2hl KHJlc19tbWlvLT5zdGFydCwKKwkJCQkJICAgICAgIChzaXplX3QpKHJlc291cmNlX3NpemUocmVz X21taW8pKSk7CisJaWYgKCFjYXJkX2N0eC0+bW1pb19zdGFydCkgewogCQlkZXZfZXJyKCZwZGV2 LT5kZXYsICJDb3VsZCBub3QgZ2V0IGlvcmVtYXBcbiIpOwogCQlyZXQgPSAtRUFDQ0VTOwogCQln b3RvIGVycjsKQEAgLTE3NjUsNjUgKzE3ODAsNzkgQEAgc3RhdGljIGludCBoZG1pX2xwZV9hdWRp b19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiAJLyogc2V0dXAgaW50ZXJy dXB0IGhhbmRsZXIgKi8KIAlyZXQgPSByZXF1ZXN0X2lycShpcnEsIGRpc3BsYXlfcGlwZV9pbnRl cnJ1cHRfaGFuZGxlciwgMCwKLQkJCSAgcGRldi0+bmFtZSwgY3R4KTsKKwkJCSAgcGRldi0+bmFt ZSwgY2FyZF9jdHgpOwogCWlmIChyZXQgPCAwKSB7CiAJCWRldl9lcnIoJnBkZXYtPmRldiwgInJl cXVlc3RfaXJxIGZhaWxlZFxuIik7CiAJCWdvdG8gZXJyOwogCX0KIAotCWN0eC0+aXJxID0gaXJx OwotCi0JcmV0ID0gc25kX3BjbV9uZXcoY2FyZCwgSU5URUxfSEFELCBQQ01fSU5ERVgsIE1BWF9Q Ql9TVFJFQU1TLAotCQkJICBNQVhfQ0FQX1NUUkVBTVMsICZwY20pOwotCWlmIChyZXQpCi0JCWdv dG8gZXJyOwotCi0JLyogc2V0dXAgcHJpdmF0ZSBkYXRhIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQg d2hlbiByZXF1aXJlZCAqLwotCXBjbS0+cHJpdmF0ZV9kYXRhID0gY3R4OwotCXBjbS0+aW5mb19m bGFncyA9IDA7Ci0Jc3RybmNweShwY20tPm5hbWUsIGNhcmQtPnNob3J0bmFtZSwgc3RybGVuKGNh cmQtPnNob3J0bmFtZSkpOwotCS8qIHNldHVwIHRoZSBvcHMgZm9yIHBsYXlhYmNrICovCi0Jc25k X3BjbV9zZXRfb3BzKHBjbSwgU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSywgJmhhZF9wY21fb3Bz KTsKKwljYXJkX2N0eC0+aXJxID0gaXJxOwogCiAJLyogb25seSAzMmJpdCBhZGRyZXNzYWJsZSAq LwogCWRtYV9zZXRfbWFzaygmcGRldi0+ZGV2LCBETUFfQklUX01BU0soMzIpKTsKIAlkbWFfc2V0 X2NvaGVyZW50X21hc2soJnBkZXYtPmRldiwgRE1BX0JJVF9NQVNLKDMyKSk7CiAKLQkvKiBhbGxv Y2F0ZSBkbWEgcGFnZXM7Ci0JICogdHJ5IHRvIGFsbG9jYXRlIDYwMGsgYnVmZmVyIGFzIGRlZmF1 bHQgd2hpY2ggaXMgbGFyZ2UgZW5vdWdoCi0JICovCi0Jc25kX3BjbV9saWJfcHJlYWxsb2NhdGVf cGFnZXNfZm9yX2FsbChwY20sCi0JCQlTTkRSVl9ETUFfVFlQRV9ERVYsIE5VTEwsCi0JCQlIQURf REVGQVVMVF9CVUZGRVIsIEhBRF9NQVhfQlVGRkVSKTsKKwlpbml0X2NoYW5uZWxfYWxsb2NhdGlv bnMoKTsKIAotCS8qIGNyZWF0ZSBjb250cm9scyAqLwotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGhhZF9jb250cm9scyk7IGkrKykgewotCQlzdHJ1Y3Qgc25kX2tjb250cm9sICprY3RsOwor CWNhcmRfY3R4LT5udW1fcG9ydHMgPSAxOwogCi0JCWtjdGwgPSBzbmRfY3RsX25ldzEoJmhhZF9j b250cm9sc1tpXSwgY3R4KTsKLQkJaWYgKCFrY3RsKSB7Ci0JCQlyZXQgPSAtRU5PTUVNOworCWZv cl9lYWNoX3BvcnQoY2FyZF9jdHgsIHBvcnQpIHsKKwkJc3RydWN0IHNuZF9pbnRlbGhhZCAqY3R4 ID0gJmNhcmRfY3R4LT5wY21fY3R4W3BvcnRdOworCQlpbnQgaTsKKworCQljdHgtPmNhcmRfY3R4 ID0gY2FyZF9jdHg7CisJCWN0eC0+ZGV2ID0gY2FyZF9jdHgtPmRldjsKKworCQlJTklUX1dPUkso JmN0eC0+aGRtaV9hdWRpb193cSwgaGFkX2F1ZGlvX3dxKTsKKworCQljdHgtPmhhZF9jb25maWdf b2Zmc2V0ID0gQVVESU9fSERNSV9DT05GSUdfQTsKKworCQlyZXQgPSBzbmRfcGNtX25ldyhjYXJk LCBJTlRFTF9IQUQsIFBDTV9JTkRFWCwgTUFYX1BCX1NUUkVBTVMsCisJCQkJICBNQVhfQ0FQX1NU UkVBTVMsICZwY20pOworCQlpZiAocmV0KQogCQkJZ290byBlcnI7CisKKwkJLyogc2V0dXAgcHJp dmF0ZSBkYXRhIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgd2hlbiByZXF1aXJlZCAqLworCQlwY20t PnByaXZhdGVfZGF0YSA9IGN0eDsKKwkJcGNtLT5pbmZvX2ZsYWdzID0gMDsKKwkJc3RybmNweShw Y20tPm5hbWUsIGNhcmQtPnNob3J0bmFtZSwgc3RybGVuKGNhcmQtPnNob3J0bmFtZSkpOworCQkv KiBzZXR1cCB0aGUgb3BzIGZvciBwbGF5YWJjayAqLworCQlzbmRfcGNtX3NldF9vcHMocGNtLCBT TkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLLCAmaGFkX3BjbV9vcHMpOworCisJCS8qIGFsbG9jYXRl IGRtYSBwYWdlczsKKwkJICogdHJ5IHRvIGFsbG9jYXRlIDYwMGsgYnVmZmVyIGFzIGRlZmF1bHQg d2hpY2ggaXMgbGFyZ2UgZW5vdWdoCisJCSAqLworCQlzbmRfcGNtX2xpYl9wcmVhbGxvY2F0ZV9w YWdlc19mb3JfYWxsKHBjbSwKKwkJCQkJCSAgICAgIFNORFJWX0RNQV9UWVBFX0RFViwgTlVMTCwK KwkJCQkJCSAgICAgIEhBRF9ERUZBVUxUX0JVRkZFUiwgSEFEX01BWF9CVUZGRVIpOworCisJCS8q IGNyZWF0ZSBjb250cm9scyAqLworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShoYWRfY29u dHJvbHMpOyBpKyspIHsKKwkJCXN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjdGw7CisKKwkJCWtjdGwg PSBzbmRfY3RsX25ldzEoJmhhZF9jb250cm9sc1tpXSwgY3R4KTsKKwkJCWlmICgha2N0bCkgewor CQkJCXJldCA9IC1FTk9NRU07CisJCQkJZ290byBlcnI7CisJCQl9CisKKwkJCWtjdGwtPmlkLmRl dmljZSA9IHBjbS0+ZGV2aWNlOworCisJCQlyZXQgPSBzbmRfY3RsX2FkZChjYXJkLCBrY3RsKTsK KwkJCWlmIChyZXQgPCAwKQorCQkJCWdvdG8gZXJyOwogCQl9CiAKLQkJa2N0bC0+aWQuZGV2aWNl ID0gcGNtLT5kZXZpY2U7CisJCS8qIFJlZ2lzdGVyIGNoYW5uZWwgbWFwIGNvbnRyb2xzICovCisJ CXJldCA9IGhhZF9yZWdpc3Rlcl9jaG1hcF9jdGxzKGN0eCwgcGNtKTsKKwkJaWYgKHJldCA8IDAp CisJCQlnb3RvIGVycjsKIAotCQlyZXQgPSBzbmRfY3RsX2FkZChjYXJkLCBrY3RsKTsKKwkJcmV0 ID0gaGFkX2NyZWF0ZV9qYWNrKGN0eCwgcGNtKTsKIAkJaWYgKHJldCA8IDApCiAJCQlnb3RvIGVy cjsKIAl9CiAKLQlpbml0X2NoYW5uZWxfYWxsb2NhdGlvbnMoKTsKLQotCS8qIFJlZ2lzdGVyIGNo YW5uZWwgbWFwIGNvbnRyb2xzICovCi0JcmV0ID0gaGFkX3JlZ2lzdGVyX2NobWFwX2N0bHMoY3R4 LCBwY20pOwotCWlmIChyZXQgPCAwKQotCQlnb3RvIGVycjsKLQotCXJldCA9IGhhZF9jcmVhdGVf amFjayhjdHgsIHBjbSk7Ci0JaWYgKHJldCA8IDApCi0JCWdvdG8gZXJyOwotCiAJcmV0ID0gc25k X2NhcmRfcmVnaXN0ZXIoY2FyZCk7CiAJaWYgKHJldCkKIAkJZ290byBlcnI7CkBAIC0xODM3LDcg KzE4NjYsMTEgQEAgc3RhdGljIGludCBoZG1pX2xwZV9hdWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQogCXBtX3J1bnRpbWVfc2V0X2FjdGl2ZSgmcGRldi0+ZGV2KTsKIAog CWRldl9kYmcoJnBkZXYtPmRldiwgIiVzOiBoYW5kbGUgcGVuZGluZyBub3RpZmljYXRpb25cbiIs IF9fZnVuY19fKTsKLQlzY2hlZHVsZV93b3JrKCZjdHgtPmhkbWlfYXVkaW9fd3EpOworCWZvcl9l YWNoX3BvcnQoY2FyZF9jdHgsIHBvcnQpIHsKKwkJc3RydWN0IHNuZF9pbnRlbGhhZCAqY3R4ID0g JmNhcmRfY3R4LT5wY21fY3R4W3BvcnRdOworCisJCXNjaGVkdWxlX3dvcmsoJmN0eC0+aGRtaV9h dWRpb193cSk7CisJfQogCiAJcmV0dXJuIDA7CiAKQEAgLTE4NTMsOSArMTg4Niw5IEBAIHN0YXRp YyBpbnQgaGRtaV9scGVfYXVkaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK ICAqLwogc3RhdGljIGludCBoZG1pX2xwZV9hdWRpb19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikKIHsKLQlzdHJ1Y3Qgc25kX2ludGVsaGFkICpjdHggPSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShwZGV2KTsKKwlzdHJ1Y3Qgc25kX2ludGVsaGFkX2NhcmQgKmNhcmRfY3R4ID0gcGxh dGZvcm1fZ2V0X2RydmRhdGEocGRldik7CiAKLQlzbmRfY2FyZF9mcmVlKGN0eC0+Y2FyZCk7CisJ c25kX2NhcmRfZnJlZShjYXJkX2N0eC0+Y2FyZCk7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdp dCBhL3NvdW5kL3g4Ni9pbnRlbF9oZG1pX2F1ZGlvLmggYi9zb3VuZC94ODYvaW50ZWxfaGRtaV9h dWRpby5oCmluZGV4IDJkM2UzODlmNzZiMy4uMjcyNTk2NGViYzQ2IDEwMDY0NAotLS0gYS9zb3Vu ZC94ODYvaW50ZWxfaGRtaV9hdWRpby5oCisrKyBiL3NvdW5kL3g4Ni9pbnRlbF9oZG1pX2F1ZGlv LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdHJ1Y3QgcGNtX3N0cmVhbV9pbmZvIHsKICAqIEBjaG1h cDogaG9sZHMgY2hhbm5lbCBtYXAgaW5mbwogICovCiBzdHJ1Y3Qgc25kX2ludGVsaGFkIHsKLQlz dHJ1Y3Qgc25kX2NhcmQJKmNhcmQ7CisJc3RydWN0IHNuZF9pbnRlbGhhZF9jYXJkICpjYXJkX2N0 eDsKIAlib29sCQljb25uZWN0ZWQ7CiAJc3RydWN0CQlwY21fc3RyZWFtX2luZm8gc3RyZWFtX2lu Zm87CiAJdW5zaWduZWQgY2hhcgllbGRbSERNSV9NQVhfRUxEX0JZVEVTXTsKQEAgLTEyMyw4ICsx MjMsNiBAQCBzdHJ1Y3Qgc25kX2ludGVsaGFkIHsKIAl1bnNpZ25lZCBpbnQgcGVyaW9kX2J5dGVz OwkvKiBQQ00gcGVyaW9kIHNpemUgaW4gYnl0ZXMgKi8KIAogCS8qIGludGVybmFsIHN0dWZmICov Ci0JaW50IGlycTsKLQl2b2lkIF9faW9tZW0gKm1taW9fc3RhcnQ7CiAJdW5zaWduZWQgaW50IGhh ZF9jb25maWdfb2Zmc2V0OwogCXVuaW9uIGF1ZF9jZmcgYXVkX2NvbmZpZzsJLyogQVVEX0NPTkZJ RyByZWcgdmFsdWUgY2FjaGUgKi8KIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgaGRtaV9hdWRpb193cTsK QEAgLTEzMyw0ICsxMzEsMTUgQEAgc3RydWN0IHNuZF9pbnRlbGhhZCB7CiAJc3RydWN0IHNuZF9q YWNrICpqYWNrOwogfTsKIAorc3RydWN0IHNuZF9pbnRlbGhhZF9jYXJkIHsKKwlzdHJ1Y3Qgc25k X2NhcmQJKmNhcmQ7CisJc3RydWN0IGRldmljZSAqZGV2OworCisJLyogaW50ZXJuYWwgc3R1ZmYg Ki8KKwlpbnQgaXJxOworCXZvaWQgX19pb21lbSAqbW1pb19zdGFydDsKKwlpbnQgbnVtX3BvcnRz OworCXN0cnVjdCBzbmRfaW50ZWxoYWQgcGNtX2N0eFszXTsKK307CisKICNlbmRpZiAvKiBfSU5U RUxfSERNSV9BVURJT18gKi8KLS0gCjIuMTAuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==