From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: [PATCH 2/4] ALSA: hda/hdmi: Allow audio component for AMD/ATI HDMI Date: Mon, 23 Jul 2018 16:50:28 +0200 Message-ID: <20180723145030.25133-3-tiwai@suse.de> References: <20180723145030.25133-1-tiwai@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180723145030.25133-1-tiwai-l3A5Bk7waGM@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw@public.gmane.org Cc: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: alsa-devel@alsa-project.org QU1EL0FUSSBIRE1JIGNvZGVjIGRyaXZlcnMgZGlkbid0IGhhdmUgdGhlIGF1ZGlvIGNvbXBvbmVu dCBiaW5kaW5nCmxpa2UgaTkxNSwgYnV0IGl0IHdvcmtlZCBvbmx5IHdpdGggdGhlIHRyYWRpdGlv bmFsIEhELWF1ZGlvCnVuc29saWNpdGVkIGV2ZW50IGZvciB0aGUgSERNSSBob3RwbHVnIGRldGVj dGlvbiBhbmQgdGhlIEVMRCByZWFkLXVwCnRoZXJlYWZ0ZXIuICBUaGlzIGhhcyBiZWVuIGEgcHJv YmxlbSBpbiBtYW55IHdheXM6IGZpcnN0IG9mIGFsbCwgaXQKZ29lcyB0aHJvdWdoIHRoZSBoYXJk d2FyZSBldmVudCB0cmFuc2l0aW9uIChmcm9tIEdQVSByZWdpc3RlciB3cml0ZSwKSEQtYXVkaW8g Y29udHJvbGxlciB0cmlnZ2VyLCBhbmQgZmluYWxseSB0byBIRC1hdWRpbyB1bnNvbGljaXRlZCBl dmVudApoYW5kbGluZyksIHdoaWNoIGlzIG9mdGVuIHVucmVsaWFibGUgYW5kIG1heSBtaXNzIHNv bWUgb3Bwb3J0dW5pdGllcy4KU2Vjb25kLCBlYWNoIHVuc29sIGV2ZW50IGhhbmRsaW5nIGFuZCBF TEQgcmVhZC11cCBuZWVkIHRoZSBleHBsaWNpdApwb3dlciB1cCAvIGRvd24gd2hlbiB0aGUgY29k ZWMgaXMgaW4gdGhlIHJ1bnRpbWUgc3VzcGVuZC4gIExhc3QgYnV0Cm5vdCBsZWFzdCwgd2hpY2gg aXMgdGhlIG1vc3QgaW1wb3J0YW50LCB0aGUgaG90cGx1ZyB3YWtldXAgbWF5IGJlCm1pc3NlZCB3 aGVuIHRoZSBIRC1hdWRpbyBjb250cm9sbGVyIGlzIGluIHJ1bnRpbWUgc3VzcGVuZC4gIEVzcGVj aWFsbHkKdGhlIGxhc3QgcG9pbnQgaXMgYSBiaWcgcHJvYmxlbSBkdWUgdG8gdGhlIHJlY2VudCBj aGFuZ2UgcmVsZXZhbnQgd2l0aAp2Z2Ffc3dpdGNoZXJvbyB0aGF0IGZvcmNpYmx5IGVuYWJsZXMg dGhlIHJ1bnRpbWUgUE0gZm9yIEFNRCBIRE1JCmNvbnRyb2xsZXJzLgoKVGhlc2UgaXNzdWVzIGFy ZSBzb2x2ZWQgYnkgaW50cm9kdWNpbmcgdGhlIGF1ZGlvIGNvbXBvbmVudDsgdGhlCmhvdHBsdWcg bm90aWZpY2F0aW9uIGlzIGRvbmUgYnkgYSBkaXJlY3QgZnVuY3Rpb24gY2FsbGJhY2ssIHdoaWNo IGlzCm1vcmUgYWNjdXJhdGUgYW5kIHJlbGlhYmxlLCBhbmQgaXQgY2FuIGJlIHByb2Nlc3NlZCB3 aXRob3V0IHRoZSBhY3R1YWwKaGFyZHdhcmUgYWNjZXNzLCBpLmUuIG5vIHJ1bnRpbWUgUE0gdHJp Z2dlciBpcyBuZWVkZWQsIGFuZCB0aGUKSEQtYXVkaW8gZ2V0cyB0aGUgZXZlbnQgZXZlbiBpZiBp dCdzIGluIHJ1bnRpbWUgc3VzcGVuZC4gIFRoZSBzYW1lIGZvcgpFTEQgcXVlcnksIGFzIGl0J3Mg cmVhZCBkaXJlY3RseSBmcm9tIHRoZSBjYWNoZWQgRUxEIGJ5dGVzIHN0b3JlZCBpbgp0aGUgRFJN IGRyaXZlciwgaGVuY2UgdGhlIHdob2xlIGhhcmR3YXJlIGFjY2VzcyBjYW4gYmUgc2tpcHBlZC4K ClNvIGhlcmUgaXQgaXM6IHRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgYXVkaW8gY29tcG9uZW50 IGJpbmRpbmcgd2l0aApBTUQvQVRJIERSTSBkcml2ZXIuICBUaGUgYmlnZ2VzdCBkaWZmZXJlbmNl IGZyb20gaTkxNSBpbXBsZW1lbnRhdGlvbgppcyB0aGF0IHRoaXMgYmluZGluZyBpcyBmdWxseSBv cHRpb25hbCBhbmQgaXQgY2FuIGJlIGVuYWJsZWQKYXN5bmNocm9ub3VzbHkgb24gdGhlIGZseS4g IFRoYXQgaXMsIHRoZSBkcml2ZXIgd2lsbCBzd2l0Y2ggZnJvbSB0aGUKSEQtYXVkaW8gdW5zb2xp Y2l0ZWQgZXZlbnQgdG8gdGhlIG5vdGlmeSBjYWxsYmFjayBvbmNlIHdoZW4gdGhlIERSTQpjb21w b25lbnQgZ2V0cyBib3VuZC4gU2ltaWxhcmx5LCB3aGVuIERSTSBkcml2ZXIgZ2V0cyB1bmxvYWRl ZCwgdGhlCkhETUkgZXZlbnQgaGFuZGxpbmcgcmV0dXJucyB0byB0aGUgbGVnYWN5IG1vZGUsIHRv by4KCkFsc28sIGFub3RoZXIgZGlmZmVyZW5jZSBmcm9tIGk5MTUgaXMgdGhhdCBBTUQgSERNSSBy ZWdpc3RlcnMgdGhlCmNvbXBvbmVudCBpbiB0aGUgY29kZWMgZHJpdmVyLCB3aGlsZSBpOTE1IEhE TUkgY29kZWMgYXNzdW1lcyB0aGUKY29tcG9uZW50IGJpbmRpbmcgd2FzIGFscmVhZHkgZG9uZS4g IEhlbmNlIEFNRCBjb2RlIGRvZXMgZGUtcmVnaXN0ZXIKdGhlIGNvbXBvbmVudCBiaW5kaW5nIGF0 IHRoZSBjb2RlYyBleGl0LCB0b28uCgpTb21lIG90aGVyIGRldGFpbHM6Ci0gVGhlIG1hdGNoIGNv bXBvbmVudCBvcHMgYXNzdW1lcyB0aGF0IGJvdGggVkdBIGFuZCBIRC1hdWRpbwogIGNvbnRyb2xs ZXIgUENJIGVudHJpZXMgYmVsb25nIHRvIHRoZSBzYW1lIFBDSSBidXMsIGFuZCBvbmx5IGFjY2Vw dHMKICBzdWNoIGFuIGVudHJ5LgoKLSBUaGUgcGluMnBvcnQgYXVkaW9fb3BzIGlzIGltcGxlbWVu dGVkIHdpdGggYXNzdW1wdGlvbiBvZiB0aGUgd2lkZ2V0CiAgTklEIHN0YXJ0aW5nIGZyb20gMywg d2l0aCBzdGVwIDIgKDMsIDUsIDcsIC4uLikuCgpBcyBvZiB0aGlzIHBhdGNoLCB0aGUgRFJNIGNv bXBvbmVudCBpbiByYWRlb24gYW5kIGFtZGdwdSBEUk0gZHJpdmVyCnNpZGVzIGlzbid0IGltcGxl bWVudGVkIHlldCwgc28gdGhpcyBjaGFuZ2Ugd29uJ3QgZ2l2ZSBhbnkgYmVuZWZpdAphbG9uZS4g IEJ5IHRoZSBmb2xsb3dpbmcgY2hhbmdlcyBpbiBEUk0gc2lkZXMsIHRoZSBtaXNzaW9uIHdpbGwg YmUKY29tcGxldGVkLgoKU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRl PgotLS0KIHNvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jIHwgMTQyICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKSwg MTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9wYXRjaF9oZG1pLmMg Yi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYwppbmRleCA2NzUwMzE4ZDFjODIuLjI5OGQ0MDg3 NjIwMSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2hkYS9wYXRjaF9oZG1pLmMKKysrIGIvc291bmQv cGNpL2hkYS9wYXRjaF9oZG1pLmMKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUgPGxpbnV4 L2luaXQuaD4KICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L3BjaS5o PgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNp bmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+CkBAIC0xMzEsNiArMTMyLDcgQEAgc3RydWN0IGhk bWlfcGNtIHsKIH07CiAKIHN0cnVjdCBoZG1pX3NwZWMgeworCXN0cnVjdCBoZGFfY29kZWMgKmNv ZGVjOwogCWludCBudW1fY3Z0czsKIAlzdHJ1Y3Qgc25kX2FycmF5IGN2dHM7IC8qIHN0cnVjdCBo ZG1pX3NwZWNfcGVyX2N2dCAqLwogCWhkYV9uaWRfdCBjdnRfbmlkc1s0XTsgLyogb25seSBmb3Ig aGFzd2VsbCBmaXggKi8KQEAgLTE3NSw4ICsxNzcsOSBAQCBzdHJ1Y3QgaGRtaV9zcGVjIHsKIAlz dHJ1Y3QgaGRhX211bHRpX291dCBtdWx0aW91dDsKIAlzdHJ1Y3QgaGRhX3BjbV9zdHJlYW0gcGNt X3BsYXliYWNrOwogCi0JLyogaTkxNS9wb3dlcndlbGwgKEhhc3dlbGwrL1ZhbGxleXZpZXcrKSBz cGVjaWZpYyAqLwotCWJvb2wgdXNlX2Fjb21wX25vdGlmaWVyOyAvKiB1c2UgaTkxNSBlbGRfbm90 aWZ5IGNhbGxiYWNrIGZvciBob3RwbHVnICovCisJYm9vbCB1c2VfamFja19kZXRlY3Q7IC8qIGph Y2sgZGV0ZWN0aW9uIGVuYWJsZWQgKi8KKwlib29sIHVzZV9hY29tcF9ub3RpZmllcjsgLyogdXNl IGVsZF9ub3RpZnkgY2FsbGJhY2sgZm9yIGhvdHBsdWcgKi8KKwlib29sIGFjb21wX3JlZ2lzdGVy ZWQ7IC8qIGF1ZGlvIGNvbXBvbmVudCByZWdpc3RlcmVkIGluIHRoaXMgZHJpdmVyICovCiAJc3Ry dWN0IGRybV9hdWRpb19jb21wb25lbnRfYXVkaW9fb3BzIGRybV9hdWRpb19vcHM7CiAKIAlzdHJ1 Y3QgaGRhY19jaG1hcCBjaG1hcDsKQEAgLTc3NSw2ICs3NzgsMTAgQEAgc3RhdGljIHZvaWQgY2hl Y2tfcHJlc2VuY2VfYW5kX3JlcG9ydChzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYywgaGRhX25pZF90 IG5pZCwKIHN0YXRpYyB2b2lkIGphY2tfY2FsbGJhY2soc3RydWN0IGhkYV9jb2RlYyAqY29kZWMs CiAJCQkgIHN0cnVjdCBoZGFfamFja19jYWxsYmFjayAqamFjaykKIHsKKwkvKiBzdG9wIHBvbGxp bmcgd2hlbiBub3RpZmljYXRpb24gaXMgZW5hYmxlZCAqLworCWlmIChjb2RlY19oYXNfYWNvbXAo Y29kZWMpKQorCQlyZXR1cm47CisKIAkvKiBoZGFfamFjayBkb24ndCBzdXBwb3J0IERQIE1TVCAq LwogCWNoZWNrX3ByZXNlbmNlX2FuZF9yZXBvcnQoY29kZWMsIGphY2stPm5pZCwgMCk7CiB9CkBA IC04MzMsNiArODQwLDkgQEAgc3RhdGljIHZvaWQgaGRtaV91bnNvbF9ldmVudChzdHJ1Y3QgaGRh X2NvZGVjICpjb2RlYywgdW5zaWduZWQgaW50IHJlcykKIAlpbnQgdGFnID0gcmVzID4+IEFDX1VO U09MX1JFU19UQUdfU0hJRlQ7CiAJaW50IHN1YnRhZyA9IChyZXMgJiBBQ19VTlNPTF9SRVNfU1VC VEFHKSA+PiBBQ19VTlNPTF9SRVNfU1VCVEFHX1NISUZUOwogCisJaWYgKGNvZGVjX2hhc19hY29t cChjb2RlYykpCisJCXJldHVybjsKKwogCWlmICghc25kX2hkYV9qYWNrX3RibF9nZXRfZnJvbV90 YWcoY29kZWMsIHRhZykpIHsKIAkJY29kZWNfZGJnKGNvZGVjLCAiVW5leHBlY3RlZCBIRE1JIGV2 ZW50IHRhZyAweCV4XG4iLCB0YWcpOwogCQlyZXR1cm47CkBAIC0xNjM5LDE4ICsxNjQ5LDEzIEBA IHN0YXRpYyBib29sIGhkbWlfcHJlc2VudF9zZW5zZShzdHJ1Y3QgaGRtaV9zcGVjX3Blcl9waW4g KnBlcl9waW4sIGludCByZXBvbGwpCiAJCQlzbmRfaGRhX3Bvd2VyX2Rvd25fcG0oY29kZWMpOwog CQkJcmV0dXJuIGZhbHNlOwogCQl9Ci0JfQotCi0JaWYgKGNvZGVjX2hhc19hY29tcChjb2RlYykp IHsKKwkJcmV0ID0gaGRtaV9wcmVzZW50X3NlbnNlX3ZpYV92ZXJicyhwZXJfcGluLCByZXBvbGwp OworCQlzbmRfaGRhX3Bvd2VyX2Rvd25fcG0oY29kZWMpOworCX0gZWxzZSB7CiAJCXN5bmNfZWxk X3ZpYV9hY29tcChjb2RlYywgcGVyX3Bpbik7CiAJCXJldCA9IGZhbHNlOyAvKiBkb24ndCBjYWxs IHNuZF9oZGFfamFja19yZXBvcnRfc3luYygpICovCi0JfSBlbHNlIHsKLQkJcmV0ID0gaGRtaV9w cmVzZW50X3NlbnNlX3ZpYV92ZXJicyhwZXJfcGluLCByZXBvbGwpOwogCX0KIAotCWlmICghY29k ZWNfaGFzX2Fjb21wKGNvZGVjKSkKLQkJc25kX2hkYV9wb3dlcl9kb3duX3BtKGNvZGVjKTsKLQog CXJldHVybiByZXQ7CiB9CiAKQEAgLTIyNDIsNiArMjI0Nyw4IEBAIHN0YXRpYyBpbnQgZ2VuZXJp Y19oZG1pX2luaXQoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMpCiAJc3RydWN0IGhkbWlfc3BlYyAq c3BlYyA9IGNvZGVjLT5zcGVjOwogCWludCBwaW5faWR4OwogCisJbXV0ZXhfbG9jaygmc3BlYy0+ cGNtX2xvY2spOworCXNwZWMtPnVzZV9qYWNrX2RldGVjdCA9ICFjb2RlYy0+amFja3BvbGxfaW50 ZXJ2YWw7CiAJZm9yIChwaW5faWR4ID0gMDsgcGluX2lkeCA8IHNwZWMtPm51bV9waW5zOyBwaW5f aWR4KyspIHsKIAkJc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGluID0gZ2V0X3Bpbihz cGVjLCBwaW5faWR4KTsKIAkJaGRhX25pZF90IHBpbl9uaWQgPSBwZXJfcGluLT5waW5fbmlkOwpA QCAtMjI0OSwxMSArMjI1NiwxNSBAQCBzdGF0aWMgaW50IGdlbmVyaWNfaGRtaV9pbml0KHN0cnVj dCBoZGFfY29kZWMgKmNvZGVjKQogCiAJCXNuZF9oZGFfc2V0X2Rldl9zZWxlY3QoY29kZWMsIHBp bl9uaWQsIGRldl9pZCk7CiAJCWhkbWlfaW5pdF9waW4oY29kZWMsIHBpbl9uaWQpOwotCQlpZiAo IWNvZGVjX2hhc19hY29tcChjb2RlYykpCisJCWlmIChjb2RlY19oYXNfYWNvbXAoY29kZWMpKQor CQkJY29udGludWU7CisJCWlmIChzcGVjLT51c2VfamFja19kZXRlY3QpCisJCQlzbmRfaGRhX2ph Y2tfZGV0ZWN0X2VuYWJsZShjb2RlYywgcGluX25pZCk7CisJCWVsc2UKIAkJCXNuZF9oZGFfamFj a19kZXRlY3RfZW5hYmxlX2NhbGxiYWNrKGNvZGVjLCBwaW5fbmlkLAotCQkJCWNvZGVjLT5qYWNr cG9sbF9pbnRlcnZhbCA+IDAgPwotCQkJCWphY2tfY2FsbGJhY2sgOiBOVUxMKTsKKwkJCQkJCQkg ICAgamFja19jYWxsYmFjayk7CiAJfQorCW11dGV4X3VubG9jaygmc3BlYy0+cGNtX2xvY2spOwog CXJldHVybiAwOwogfQogCkBAIC0yMjg2LDcgKzIyOTcsOSBAQCBzdGF0aWMgdm9pZCBnZW5lcmlj X2hkbWlfZnJlZShzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykKIAlzdHJ1Y3QgaGRtaV9zcGVjICpz cGVjID0gY29kZWMtPnNwZWM7CiAJaW50IHBpbl9pZHgsIHBjbV9pZHg7CiAKLQlpZiAoY29kZWNf aGFzX2Fjb21wKGNvZGVjKSkKKwlpZiAoc3BlYy0+YWNvbXBfcmVnaXN0ZXJlZCkKKwkJc25kX2hk YWNfYWNvbXBfZXhpdCgmY29kZWMtPmJ1cy0+Y29yZSk7CisJZWxzZSBpZiAoY29kZWNfaGFzX2Fj b21wKGNvZGVjKSkKIAkJc25kX2hkYWNfYWNvbXBfcmVnaXN0ZXJfbm90aWZpZXIoJmNvZGVjLT5i dXMtPmNvcmUsIE5VTEwpOwogCiAJZm9yIChwaW5faWR4ID0gMDsgcGluX2lkeCA8IHNwZWMtPm51 bV9waW5zOyBwaW5faWR4KyspIHsKQEAgLTIzNTIsNiArMjM2NSw3IEBAIHN0YXRpYyBpbnQgYWxs b2NfZ2VuZXJpY19oZG1pKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQogCWlmICghc3BlYykKIAkJ cmV0dXJuIC1FTk9NRU07CiAKKwlzcGVjLT5jb2RlYyA9IGNvZGVjOwogCXNwZWMtPm9wcyA9IGdl bmVyaWNfc3RhbmRhcmRfaGRtaV9vcHM7CiAJc3BlYy0+ZGV2X251bSA9IDE7CS8qIGluaXRpYWxp emUgdG8gMSAqLwogCW11dGV4X2luaXQoJnNwZWMtPnBjbV9sb2NrKTsKQEAgLTM0NTksNiArMzQ3 Myw2MyBAQCBzdGF0aWMgaW50IHBhdGNoX3RlZ3JhX2hkbWkoc3RydWN0IGhkYV9jb2RlYyAqY29k ZWMpCiAjZGVmaW5lIEFUSV9IQlJfQ0FQQUJMRSAweDAxCiAjZGVmaW5lIEFUSV9IQlJfRU5BQkxF IDB4MTAKIAorLyogdHVybiBvbiAvIG9mZiB0aGUgdW5zb2wgZXZlbnQgamFjayBkZXRlY3Rpb24g ZHluYW1pY2FsbHkgKi8KK3N0YXRpYyB2b2lkIHJlcHJvZ3JhbV9qYWNrX2RldGVjdChzdHJ1Y3Qg aGRhX2NvZGVjICpjb2RlYywgaGRhX25pZF90IG5pZCwKKwkJCQkgIGJvb2wgdXNlX2Fjb21wKQor eworCXN0cnVjdCBoZGFfamFja190YmwgKnRibDsKKworCXRibCA9IHNuZF9oZGFfamFja190Ymxf Z2V0KGNvZGVjLCBuaWQpOworCWlmICh0YmwpIHsKKwkJLyogY2xlYXIgdW5zb2wgZXZlbiBpZiBj b21wb25lbnQgbm90aWZpZXIgaXMgdXNlZCwgb3IgcmUtZW5hYmxlCisJCSAqIGlmIG5vdGlmaWVy IGlzIGNsZWFyZWQKKwkJICovCisJCXVuc2lnbmVkIGludCB2YWwgPSB1c2VfYWNvbXAgPyAwIDog KEFDX1VTUlNQX0VOIHwgdGJsLT50YWcpOworCQlzbmRfaGRhX2NvZGVjX3dyaXRlX2NhY2hlKGNv ZGVjLCBuaWQsIDAsCisJCQkJCSAgQUNfVkVSQl9TRVRfVU5TT0xJQ0lURURfRU5BQkxFLCB2YWwp OworCX0gZWxzZSB7CisJCS8qIGlmIG5vIGphY2sgZW50cnkgd2FzIGRlZmluZWQgYmVmb3JlaGFu ZCwgY3JlYXRlIGEgbmV3IG9uZQorCQkgKiBhdCBuZWVkIChpLmUuIG9ubHkgd2hlbiBub3RpZmll ciBpcyBjbGVhcmVkKQorCQkgKi8KKwkJaWYgKCF1c2VfYWNvbXApCisJCQlzbmRfaGRhX2phY2tf ZGV0ZWN0X2VuYWJsZShjb2RlYywgbmlkKTsKKwl9Cit9CisKKy8qIHNldCB1cCAvIGNsZWFyIGNv bXBvbmVudCBub3RpZmllciBkeW5hbWljYWxseSAqLworc3RhdGljIHZvaWQgYWNvbXBfbm90aWZp ZXJfc2V0KHN0cnVjdCBkcm1fYXVkaW9fY29tcG9uZW50ICphY29tcCwKKwkJCSAgICAgICBib29s IHVzZV9hY29tcCkKK3sKKwlzdHJ1Y3QgaGRtaV9zcGVjICpzcGVjOworCWludCBpOworCisJc3Bl YyA9IGNvbnRhaW5lcl9vZihhY29tcC0+YXVkaW9fb3BzLCBzdHJ1Y3QgaGRtaV9zcGVjLCBkcm1f YXVkaW9fb3BzKTsKKwltdXRleF9sb2NrKCZzcGVjLT5wY21fbG9jayk7CisJc3BlYy0+dXNlX2Fj b21wX25vdGlmaWVyID0gdXNlX2Fjb21wOworCS8qIHJlcHJvZ3JhbSBlYWNoIGphY2sgZGV0ZWN0 aW9uIGxvZ2ljIGRlcGVuZGluZyBvbiB0aGUgbm90aWZpZXIgKi8KKwlpZiAoc3BlYy0+dXNlX2ph Y2tfZGV0ZWN0KSB7CisJCWZvciAoaSA9IDA7IGkgPCBzcGVjLT5udW1fcGluczsgaSsrKQorCQkJ cmVwcm9ncmFtX2phY2tfZGV0ZWN0KHNwZWMtPmNvZGVjLAorCQkJCQkgICAgICBnZXRfcGluKHNw ZWMsIGkpLT5waW5fbmlkLAorCQkJCQkgICAgICB1c2VfYWNvbXApOworCX0KKwltdXRleF91bmxv Y2soJnNwZWMtPnBjbV9sb2NrKTsKK30KKworLyogZW5hYmxlIC8gZGlzYWJsZSB0aGUgbm90aWZp ZXIgdmlhIG1hc3RlciBiaW5kIC8gdW5iaW5kICovCitzdGF0aWMgaW50IGF0aWhkbWlfbWFzdGVy X2JpbmQoc3RydWN0IGRldmljZSAqZGV2LAorCQkJICAgICAgIHN0cnVjdCBkcm1fYXVkaW9fY29t cG9uZW50ICphY29tcCkKK3sKKwlhY29tcF9ub3RpZmllcl9zZXQoYWNvbXAsIHRydWUpOworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZCBhdGloZG1pX21hc3Rlcl91bmJpbmQoc3RydWN0IGRl dmljZSAqZGV2LAorCQkJCSAgc3RydWN0IGRybV9hdWRpb19jb21wb25lbnQgKmFjb21wKQorewor CWFjb21wX25vdGlmaWVyX3NldChhY29tcCwgZmFsc2UpOworfQorCiBzdGF0aWMgaW50IGF0aWhk bWlfcGluX2dldF9lbGQoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMsIGhkYV9uaWRfdCBuaWQsCiAJ CQkgICB1bnNpZ25lZCBjaGFyICpidWYsIGludCAqZWxkX3NpemUpCiB7CkBAIC0zNzMxLDYgKzM4 MDIsMzkgQEAgc3RhdGljIGludCBhdGloZG1pX2luaXQoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMp CiAJcmV0dXJuIDA7CiB9CiAKKy8qIGNoZWNrIHdoZXRoZXIgYm90aCBIRC1hdWRpbyBhbmQgRFJN IFBDSSBkZXZpY2VzIGJlbG9uZyB0byB0aGUgc2FtZSBidXMgKi8KK3N0YXRpYyBpbnQgbWF0Y2hf Ym91bmRfdmdhKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgaGRh Y19idXMgKmJ1cyA9IGRhdGE7CisJc3RydWN0IHBjaV9kZXYgKnBjaSwgKm1hc3RlcjsKKworCWlm ICghZGV2X2lzX3BjaShkZXYpIHx8ICFkZXZfaXNfcGNpKGJ1cy0+ZGV2KSkKKwkJcmV0dXJuIDA7 CisJbWFzdGVyID0gdG9fcGNpX2RldihidXMtPmRldik7CisJcGNpID0gdG9fcGNpX2RldihkZXYp OworCXJldHVybiBtYXN0ZXItPmJ1cyA9PSBwY2ktPmJ1czsKK30KKworLyogbWFwIGZyb20gcGlu IE5JRCB0byBwb3J0OyBwb3J0IGlzIDAtYmFzZWQgKi8KK3N0YXRpYyBpbnQgYXRpaGRtaV9waW4y cG9ydCh2b2lkICphdWRpb19wdHIsIGludCBwaW5fbmlkKQoreworCXJldHVybiBwaW5fbmlkIC8g MiAtIDE7Cit9CisKKy8qIGF1ZGlvIGNvbXBvbmVudCBub3RpZmllciBmb3IgQU1EIGNvZGVjcyAq Lworc3RhdGljIHZvaWQgYXRpaGRtaV9waW5fZWxkX25vdGlmeSh2b2lkICphdWRpb19wdHIsIGlu dCBwb3J0LCBpbnQgZGV2X2lkKQoreworCXN0cnVjdCBoZGFfY29kZWMgKmNvZGVjID0gYXVkaW9f cHRyOworCWhkYV9uaWRfdCBwaW5fbmlkID0gcG9ydCAqIDIgKyAzOyAvKiAwLWJhc2VkIHBvcnQj ICovCisKKwkvKiB0cmVhdCBub3RpZmljYXRpb24gb25seSB3aGVuIHN5c3RlbSBpcyBhbHJlYWR5 IHJ1bm5pbmcgYW5kCisJICogbm90IGR1cmluZyBQTSBzdXNwZW5kL3Jlc3VtZSBwcm9jZXNzIGl0 c2VsZgorCSAqLworCWlmIChzbmRfcG93ZXJfZ2V0X3N0YXRlKGNvZGVjLT5jYXJkKSA9PSBTTkRS Vl9DVExfUE9XRVJfRDAgJiYKKwkgICAgIWF0b21pY19yZWFkKCYoY29kZWMpLT5jb3JlLmluX3Bt KSkKKwkJY2hlY2tfcHJlc2VuY2VfYW5kX3JlcG9ydChjb2RlYywgcGluX25pZCwgZGV2X2lkKTsK K30KKwogc3RhdGljIGludCBwYXRjaF9hdGloZG1pKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQog ewogCXN0cnVjdCBoZG1pX3NwZWMgKnNwZWM7CkBAIC0zNzc5LDYgKzM4ODMsMTYgQEAgc3RhdGlj IGludCBwYXRjaF9hdGloZG1pKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQogCSAqLwogCWNvZGVj LT5saW5rX2Rvd25fYXRfc3VzcGVuZCA9IDE7CiAKKwkvKiBzZXQgdXAgYXVkaW8gY29tcG9uZW50 IGJpbmRpbmcgKi8KKwlzcGVjLT5kcm1fYXVkaW9fb3BzLmF1ZGlvX3B0ciA9IGNvZGVjOworCXNw ZWMtPmRybV9hdWRpb19vcHMucGluMnBvcnQgPSBhdGloZG1pX3BpbjJwb3J0OworCXNwZWMtPmRy bV9hdWRpb19vcHMucGluX2VsZF9ub3RpZnkgPSBhdGloZG1pX3Bpbl9lbGRfbm90aWZ5OworCXNw ZWMtPmRybV9hdWRpb19vcHMubWFzdGVyX2JpbmQgPSBhdGloZG1pX21hc3Rlcl9iaW5kOworCXNw ZWMtPmRybV9hdWRpb19vcHMubWFzdGVyX3VuYmluZCA9IGF0aWhkbWlfbWFzdGVyX3VuYmluZDsK KwlpZiAoIXNuZF9oZGFjX2Fjb21wX2luaXQoJmNvZGVjLT5idXMtPmNvcmUsICZzcGVjLT5kcm1f YXVkaW9fb3BzLAorCQkJCSBtYXRjaF9ib3VuZF92Z2EsIDApKQorCQlzcGVjLT5hY29tcF9yZWdp c3RlcmVkID0gdHJ1ZTsKKwogCXJldHVybiAwOwogfQogCi0tIAoyLjE4LjAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0 CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=