From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yakir Yang Subject: [PATCH v5 4/6] drm: bridge/dw_hdmi-i2s-audio: add audio driver Date: Sat, 20 Jun 2015 00:28:15 +0800 Message-ID: <1434731295-11060-1-git-send-email-ykk@rock-chips.com> References: <1434730417-10629-1-git-send-email-ykk@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1434730417-10629-1-git-send-email-ykk@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-rockchip@lists.infradead.org, alsa-devel , dri-devel , linux-kernel@vger.kernel.org, linux-arm-kernel Cc: Fabio Estevam , Paul Bolle , Liam Girdwood , Doug Anderson , Jaroslav Kysela , Mark Brown , Yakir Yang , Russell King , Andy Yan List-Id: linux-rockchip.vger.kernel.org QWRkIEFMU0EgYmFzZWQgSERNSSBJMlMgYXVkaW8gZHJpdmVyIGZvciBkd19oZG1pLiBTb3VuZCBj YXJkCmRyaXZlciBjb3VsZCBjb25uZWN0IHRvIHRoaXMgY29kZWMgdGhyb3VnaCB0aGUgY29kZWMg ZGFpIG5hbWUKImR3LWhkbWktaTJzLWF1ZGlvIi4KClNpZ25lZC1vZmYtYnk6IFlha2lyIFlhbmcg PHlra0Byb2NrLWNoaXBzLmNvbT4KLS0tCkNoYW5nZXMgaW4gdjU6Ci0gVGFrZSBNYXJrIEJyb3du IHN1Z2dlc3QgdGhhdCByZW1vdmUgamFja19zdGF0dXMgcmVjb3JkZWQsIHJlcG9ydAogIGphY2sg c3RhdHVzIGRpcmVjdGx5IHdoZW4gaGRtaSBwbHVnIGhhcHBlbmQsIGFuZCByZW1vdmUgZGV2bV9r ZnJlZQogIGFuZCBkZXZtX2ZyZWVfaXJxLgotIENvcnJlY3QgdGhlIE1PRFVMRV9MSUNFTlNFIHRv ICJHUEwgdjIiCi0gTW92ZSBzb3VyY2UgZnJvbSBzb3VuZC9zb2MvY29kZWNzIHRvIGRyaXZlcnMv Z3B1L2RybS9icmlkZ2UvCi0gUmVuYW1lIGRhaSBkcml2ZXIgbmFtZSB0byAiZHctaGRtaS1pMnMt aGlmaSIKCkNoYW5nZXMgaW4gdjQ6Ci0gUmVwbGFjZSBkZWxheXdvcmsgd2l0aCBpcnEgdGhyZWFk LCBhbmQgYWRkIHN1c3BlbmQvcmVzdW1lIGludGVyZmFjZXMsCiAgcmVwbGFjZSAiZHctaGRtaS1h dWRpbyIgd2l0aCBjb25zZWN1dGl2ZSBzdHJpbmdzLgoKQ2hhbmdlcyBpbiB2MzoKLSBLZWVwIGF1 ZGlvIGZvcm1hdCBjb25maWcgZnVuY3Rpb24gaW4gZHctaGRtaS1hdWRpbyBkcml2ZXIKICBhbmQg cmVtb3ZlIGF1ZGlvX2NvbmZpZyAmIGdldF9jb25uZWN0X3N0YXR1cyBmdW5jdGlvbnMsCiAgbW92 ZSBqYWNrIGNvbnRyb2wgdG8gZHctaGRtaS1hdWRpbyBjb21wbGV0ZWx5LgoKQ2hhbmdlcyBpbiB2 MjoKLSBVcGRhdGUgZHdfaGRtaSBhdWRpbyBjb250cm9sIGludGVyZmFjZXMsIGFuZCBhZGp1c3Qg amFjayByZXBvcnQgcHJvY2VzcwoKIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyAgICAg ICAgICAgICB8ICAgOSArCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlICAgICAgICAg ICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLWkycy1hdWRpby5jIHwg Mzk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2R3X2hkbWkuYyAgICAgICAgICAgfCAgMjQgKy0KIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdf aGRtaS5oICAgICAgICAgICB8ICAgMyArCiA1IGZpbGVzIGNoYW5nZWQsIDQyNiBpbnNlcnRpb25z KCspLCA5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvZHdfaGRtaS1pMnMtYXVkaW8uYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwppbmRleCAyMDQ4 NjFiLi41OWUzZjI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcK KysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCkBAIC0xNCw2ICsxNCwxNSBAQCBj b25maWcgRFJNX0RXX0hETUlfQUhCX0FVRElPCiAJICBEZXNpZ253YXJlIEhETUkgYmxvY2suICBU aGlzIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAogCSAgdGhlIGkuTVg2IEhETUkgZHJpdmVy LgogCitjb25maWcgRFJNX0RXX0hETUlfSTJTX0FVRElPCisJdHJpc3RhdGUgIlN5bm9wc2lzIERl c2lnbndhcmUgSTJTIEF1ZGlvIGludGVyZmFjZSIKKwlkZXBlbmRzIG9uIERSTV9EV19IRE1JICYm IFNORAorCXNlbGVjdCBTTkRfUENNCisJaGVscAorCSAgU3VwcG9ydCB0aGUgSTJTIEF1ZGlvIGlu dGVyZmFjZSB3aGljaCBpcyBwYXJ0IG9mIHRoZSBTeW5vcHNpcworCSAgRGVzaWdud2FyZSBIRE1J IGJsb2NrLiAgVGhpcyBpcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCisJICBSSzMyODgg SERNSSBkcml2ZXIuCisKIGNvbmZpZyBEUk1fUFROMzQ2MAogCXRyaXN0YXRlICJQVE4zNDYwIERQ L0xWRFMgYnJpZGdlIgogCWRlcGVuZHMgb24gRFJNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYnJpZGdlL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQppbmRl eCBlYjgwZGJiLi42NWExMjM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01h a2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKQEAgLTQsMyArNCw0 IEBAIG9iai0kKENPTkZJR19EUk1fUFM4NjIyKSArPSBwczg2MjIubwogb2JqLSQoQ09ORklHX0RS TV9QVE4zNDYwKSArPSBwdG4zNDYwLm8KIG9iai0kKENPTkZJR19EUk1fRFdfSERNSSkgKz0gZHdf aGRtaS5vCiBvYmotJChDT05GSUdfRFJNX0RXX0hETUlfQUhCX0FVRElPKSArPSBkd19oZG1pLWFo Yi1hdWRpby5vCitvYmotJChDT05GSUdfRFJNX0RXX0hETUlfSTJTX0FVRElPKSArPSBkd19oZG1p LWkycy1hdWRpby5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkt aTJzLWF1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWktaTJzLWF1ZGlvLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQxYWI5NwotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfaGRtaS1pMnMtYXVkaW8uYwpAQCAtMCww ICsxLDM5OCBAQAorLyoKKyAqIERlc2lnbldhcmUgSERNSSBhdWRpbyBkcml2ZXIKKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLgorICoKKyAqIFdyaXR0ZW4gYW5kIHRlc3RlZCBhZ2FpbnN0IHRoZSBEZXNp Z253YXJlIEhETUkgVHggZm91bmQgaW4gUkszMjg4LgorICovCisjaW5jbHVkZSA8bGludXgvaW8u aD4KKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cisj aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+CisjaW5j bHVkZSA8bGludXgvbW9kdWxlcGFyYW0uaD4KKworI2luY2x1ZGUgPHNvdW5kL3BjbS5oPgorI2lu Y2x1ZGUgPHNvdW5kL3NvYy5oPgorI2luY2x1ZGUgPHNvdW5kL2NvcmUuaD4KKyNpbmNsdWRlIDxz b3VuZC9qYWNrLmg+CisjaW5jbHVkZSA8c291bmQvaW5pdHZhbC5oPgorI2luY2x1ZGUgPHNvdW5k L3BjbV9wYXJhbXMuaD4KKyNpbmNsdWRlIDxkcm0vYnJpZGdlL2R3X2hkbWkuaD4KKworI2luY2x1 ZGUgImR3X2hkbWktYXVkaW8uaCIKKworI2RlZmluZSBEUklWRVJfTkFNRSAiZHctaGRtaS1pMnMt YXVkaW8iCisKK2VudW0geworCUFVRElPX0NPTkYxX0RBVFdJRFRIX01TSyA9IDB4MUYsCisJQVVE SU9fQ09ORjFfREFUQU1PREVfTVNLID0gMHhFMCwKKwlBVURJT19EQUlGTVRfSUlTID0gMHgwLAor CUFVRElPX0RBSUZNVF9SSUdIVF9KID0gMHgyMCwKKwlBVURJT19EQUlGTVRfTEVGVF9KID0gMHg0 MCwKKwlBVURJT19EQUlGTVRfQlVSU1RfMSA9IDB4NjAsCisJQVVESU9fREFJRk1UX0JVUlNUXzIg PSAweDgwLAorCUFVRElPX0NPTkYwX0lOVEVSRkFDRV9NU0sgPSBCSVQoNSksCisJQVVESU9fSU5Q VVRUWVBFX0lJUyA9IDB4MjAsCisJQVVESU9fSU5QVVRUWVBFX1NQRElGID0gMHgwMCwKKwlBVURJ T19DT05GMF9JMlNJTkVOX01TSyA9IDB4MEYsCisJQVVESU9fQ0hBTk5FTE5VTV8yID0gMHgwMSwK KwlBVURJT19DSEFOTkVMTlVNXzQgPSAweDAzLAorCUFVRElPX0NIQU5ORUxOVU1fNiA9IDB4MDcs CisJQVVESU9fQ0hBTk5FTE5VTV84ID0gMHgwRiwKKwlIRE1JX1BIWV9IUEQgPSBCSVQoMSksCisJ SERNSV9QSFlfU1RBVDAgPSAweDMwMDQsCisJSERNSV9BVURfQ09ORjAgPSAweDMxMDAsCisJSERN SV9BVURfQ09ORjEgPSAweDMxMDEsCisJSERNSV9BVURfSU5QVVRDTEtGUyA9IDB4MzIwNiwKK307 CisKK3N0cnVjdCBkd19hdWRpb19mbXQgeworCWludCBpbnB1dF90eXBlOworCWludCBjaGFuX251 bTsKKwlpbnQgc2FtcGxlX3JhdGU7CisJaW50IHdvcmRfbGVuZ3RoOworCWludCBkYWlfZm10Owor fTsKKworc3RydWN0IHNuZF9kd19oZG1pIHsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0 IGR3X2hkbWlfYXVkaW9fZGF0YSBkYXRhOworCisJYm9vbCBpc19qYWNrX3JlYWR5OworCXN0cnVj dCBzbmRfc29jX2phY2sgamFjazsKKworCWJvb2wgaXNfcGxheWJhY2tfc3RhdHVzOworCXN0cnVj dCBkd19hdWRpb19mbXQgZm10OworfTsKKworc3RhdGljIHZvaWQgaGRtaV93cml0ZWwoc3RydWN0 IHNuZF9kd19oZG1pICpkdywgdTggdmFsLCBpbnQgb2Zmc2V0KQoreworCXdyaXRlbCh2YWwsIGR3 LT5kYXRhLmJhc2UgKyAob2Zmc2V0IDw8IDIpKTsKK30KKworc3RhdGljIHU4IGhkbWlfcmVhZGwo c3RydWN0IHNuZF9kd19oZG1pICpkdywgaW50IG9mZnNldCkKK3sKKwlyZXR1cm4gcmVhZGwoZHct PmRhdGEuYmFzZSArIChvZmZzZXQgPDwgMikpOworfQorCitzdGF0aWMgdm9pZCBoZG1pX21vZGwo c3RydWN0IHNuZF9kd19oZG1pICpkdywgdTggZGF0YSwKKwkJICAgICAgdTggbWFzaywgdW5zaWdu ZWQgcmVnKQoreworCXU4IHZhbCA9IGhkbWlfcmVhZGwoZHcsIHJlZykgJiB+bWFzazsKKworCXZh bCB8PSBkYXRhICYgbWFzazsKKwloZG1pX3dyaXRlbChkdywgdmFsLCByZWcpOworfQorCitpbnQg c25kX2R3X2hkbWlfamFja19kZXRlY3Qoc3RydWN0IHNuZF9kd19oZG1pICpkdykKK3sKKwl1OCBq YWNrX3N0YXR1czsKKworCWlmICghZHctPmlzX2phY2tfcmVhZHkpCisJCXJldHVybiAtRUlOVkFM OworCisJamFja19zdGF0dXMgPSAhIShoZG1pX3JlYWRsKGR3LCBIRE1JX1BIWV9TVEFUMCkgJiBI RE1JX1BIWV9IUEQpID8KKwkJCVNORF9KQUNLX0xJTkVPVVQgOiAwOworCisJc25kX3NvY19qYWNr X3JlcG9ydCgmZHctPmphY2ssIGphY2tfc3RhdHVzLCBTTkRfSkFDS19MSU5FT1VUKTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgaXJxcmV0dXJuX3Qgc25kX2R3X2hkbWlfaXJxKGludCBpcnEs IHZvaWQgKmRldl9pZCkKK3sKKwlzdHJ1Y3Qgc25kX2R3X2hkbWkgKmR3ID0gZGV2X2lkOworCisJ c25kX2R3X2hkbWlfamFja19kZXRlY3QoZHcpOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQor CitzdGF0aWMgdm9pZCBkd19oZG1pX2F1ZGlvX3NldF9mbXQoc3RydWN0IHNuZF9kd19oZG1pICpk dywKKwkJCQkgIGNvbnN0IHN0cnVjdCBkd19hdWRpb19mbXQgKmZtdCkKK3sKKwloZG1pX21vZGwo ZHcsIGZtdC0+aW5wdXRfdHlwZSwgQVVESU9fQ09ORjBfSU5URVJGQUNFX01TSywKKwkJICBIRE1J X0FVRF9DT05GMCk7CisKKwloZG1pX21vZGwoZHcsIGZtdC0+Y2hhbl9udW0sIEFVRElPX0NPTkYw X0kyU0lORU5fTVNLLAorCQkgIEhETUlfQVVEX0NPTkYwKTsKKworCWhkbWlfbW9kbChkdywgZm10 LT53b3JkX2xlbmd0aCwgQVVESU9fQ09ORjFfREFUV0lEVEhfTVNLLAorCQkgIEhETUlfQVVEX0NP TkYxKTsKKworCWhkbWlfbW9kbChkdywgZm10LT5kYWlfZm10LCBBVURJT19DT05GMV9EQVRBTU9E RV9NU0ssCisJCSAgSERNSV9BVURfQ09ORjEpOworCisJaGRtaV93cml0ZWwoZHcsIDAsIEhETUlf QVVEX0lOUFVUQ0xLRlMpOworCisJZHdfaGRtaV9zZXRfc2FtcGxlX3JhdGUoZHctPmRhdGEuaGRt aSwgZm10LT5zYW1wbGVfcmF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGR3X2F1ZGlvX3NldF9mbXQo c3RydWN0IHNuZF9kd19oZG1pICpkdywKKwkJCSAgICAgY29uc3Qgc3RydWN0IGR3X2F1ZGlvX2Zt dCAqZm10KQoreworCWlmIChmbXQpCisJCWR3LT5mbXQgPSAqZm10OworCWR3X2hkbWlfYXVkaW9f c2V0X2ZtdChkdywgJmR3LT5mbXQpOworfQorCitzdGF0aWMgaW50IHNuZF9kd19oZG1pX2RhaV9z dGFydHVwKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAorCQkJCSAgIHN0cnVj dCBzbmRfc29jX2RhaSAqY29kZWNfZGFpKQoreworCXN0cnVjdCBzbmRfZHdfaGRtaSAqZHcgPSBz bmRfc29jX2RhaV9nZXRfZHJ2ZGF0YShjb2RlY19kYWkpOworCisJZHctPmlzX3BsYXliYWNrX3N0 YXR1cyA9IHRydWU7CisJZHdfaGRtaV9hdWRpb19lbmFibGUoZHctPmRhdGEuaGRtaSk7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzbmRfZHdfaGRtaV9kYWlfaHdfcGFyYW1zKHN0cnVj dCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAorCQkJCSAgICAgc3RydWN0IHNuZF9wY21f aHdfcGFyYW1zICpwYXJhbXMsCisJCQkJICAgICBzdHJ1Y3Qgc25kX3NvY19kYWkgKmNvZGVjX2Rh aSkKK3sKKwlzdHJ1Y3Qgc25kX2R3X2hkbWkgKmR3ID0gc25kX3NvY19kYWlfZ2V0X2RydmRhdGEo Y29kZWNfZGFpKTsKKwlzdHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkID0gc3Vic3RyZWFt LT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGR3X2F1ZGlvX2ZtdCBkd19mbXQ7CisJdW5zaWduZWQg aW50IGZtdCwgcmF0ZSwgY2hhbiwgd2lkdGg7CisKKwlmbXQgPSBydGQtPmRhaV9saW5rLT5kYWlf Zm10ICYgU05EX1NPQ19EQUlGTVRfRk9STUFUX01BU0s7CisJc3dpdGNoIChmbXQpIHsKKwljYXNl IFNORF9TT0NfREFJRk1UX0kyUzoKKwkJZHdfZm10LmRhaV9mbXQgPSBBVURJT19EQUlGTVRfSUlT OworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1UX0xFRlRfSjoKKwkJZHdfZm10LmRhaV9m bXQgPSBBVURJT19EQUlGTVRfTEVGVF9KOworCQlicmVhazsKKwljYXNlIFNORF9TT0NfREFJRk1U X1JJR0hUX0o6CisJCWR3X2ZtdC5kYWlfZm10ID0gQVVESU9fREFJRk1UX1JJR0hUX0o7CisJCWJy ZWFrOworCWRlZmF1bHQ6CisJCWRldl9lcnIoY29kZWNfZGFpLT5kZXYsICJEQUkgZm9ybWF0IHVu c3VwcG9ydGVkIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXdpZHRoID0gcGFyYW1zX3dp ZHRoKHBhcmFtcyk7CisJc3dpdGNoICh3aWR0aCkgeworCWNhc2UgMTY6CisJY2FzZSAyNDoKKwkJ ZHdfZm10LndvcmRfbGVuZ3RoID0gd2lkdGg7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRldl9l cnIoY29kZWNfZGFpLT5kZXYsICJ3aWR0aFslZF0gbm90IHN1cHBvcnQhXG4iLCB3aWR0aCk7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCWNoYW4gPSBwYXJhbXNfY2hhbm5lbHMocGFyYW1zKTsK Kwlzd2l0Y2ggKGNoYW4pIHsKKwljYXNlIDI6CisJCWR3X2ZtdC5jaGFuX251bSA9IEFVRElPX0NI QU5ORUxOVU1fMjsKKwkJYnJlYWs7CisJY2FzZSA0OgorCQlkd19mbXQuY2hhbl9udW0gPSBBVURJ T19DSEFOTkVMTlVNXzQ7CisJCWJyZWFrOworCWNhc2UgNjoKKwkJZHdfZm10LmNoYW5fbnVtID0g QVVESU9fQ0hBTk5FTE5VTV82OworCQlicmVhazsKKwljYXNlIDg6CisJCWR3X2ZtdC5jaGFuX251 bSA9IEFVRElPX0NIQU5ORUxOVU1fODsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZGV2X2Vycihj b2RlY19kYWktPmRldiwgImNoYW5uZWxbJWRdIG5vdCBzdXBwb3J0IVxuIiwgY2hhbik7CisJCXJl dHVybiAtRUlOVkFMOworCX0KKworCXJhdGUgPSBwYXJhbXNfcmF0ZShwYXJhbXMpOworCXN3aXRj aCAocmF0ZSkgeworCWNhc2UgMzIwMDA6CisJY2FzZSA0NDEwMDoKKwljYXNlIDQ4MDAwOgorCWNh c2UgODgyMDA6CisJY2FzZSA5NjAwMDoKKwljYXNlIDE3NjQwMDoKKwljYXNlIDE5MjAwMDoKKwkJ ZHdfZm10LnNhbXBsZV9yYXRlID0gcmF0ZTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZGV2X2Vy cihjb2RlY19kYWktPmRldiwgInJhdGVbJWRdIG5vdCBzdXBwb3J0IVxuIiwgcmF0ZSk7CisJCXJl dHVybiAtRUlOVkFMOworCX0KKworCWR3X2ZtdC5pbnB1dF90eXBlID0gQVVESU9fSU5QVVRUWVBF X0lJUzsKKworCWR3X2F1ZGlvX3NldF9mbXQoZHcsICZkd19mbXQpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgc25kX2R3X2hkbWlfZGFpX3RyaWdnZXIoc3RydWN0IHNuZF9wY21fc3Vi c3RyZWFtICpzdWJzdHJlYW0sCisJCQkJICAgaW50IGNtZCwgc3RydWN0IHNuZF9zb2NfZGFpICpj b2RlY19kYWkpCit7CisJc3RydWN0IHNuZF9kd19oZG1pICpkdyA9IHNuZF9zb2NfZGFpX2dldF9k cnZkYXRhKGNvZGVjX2RhaSk7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgU05EUlZfUENNX1RS SUdHRVJfU1RBUlQ6CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9SRVNVTUU6CisJY2FzZSBTTkRS Vl9QQ01fVFJJR0dFUl9QQVVTRV9SRUxFQVNFOgorCQlkd19oZG1pX2F1ZGlvX2VuYWJsZShkdy0+ ZGF0YS5oZG1pKTsKKwkJYnJlYWs7CisJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVE9QOgorCWNh c2UgU05EUlZfUENNX1RSSUdHRVJfU1VTUEVORDoKKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1BB VVNFX1BVU0g6CisJCWR3X2hkbWlfYXVkaW9fZGlzYWJsZShkdy0+ZGF0YS5oZG1pKTsKKwkJYnJl YWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyB2b2lkIHNuZF9kd19oZG1pX2RhaV9zaHV0ZG93bihzdHJ1Y3Qgc25kX3BjbV9zdWJz dHJlYW0gKnN1YnN0cmVhbSwKKwkJCQkgICAgIHN0cnVjdCBzbmRfc29jX2RhaSAqY29kZWNfZGFp KQoreworCXN0cnVjdCBzbmRfZHdfaGRtaSAqZHcgPSBzbmRfc29jX2RhaV9nZXRfZHJ2ZGF0YShj b2RlY19kYWkpOworCisJZHctPmlzX3BsYXliYWNrX3N0YXR1cyA9IGZhbHNlOworCWR3X2hkbWlf YXVkaW9fZGlzYWJsZShkdy0+ZGF0YS5oZG1pKTsKK30KKworc3RhdGljIGludCBzbmRfZHdfaGRt aV9hdWRpb19wcm9iZShzdHJ1Y3Qgc25kX3NvY19jb2RlYyAqY29kZWMpCit7CisJc3RydWN0IHNu ZF9kd19oZG1pICpkdyA9IHNuZF9zb2NfY29kZWNfZ2V0X2RydmRhdGEoY29kZWMpOworCWludCBy ZXQ7CisKKwlyZXQgPSBzbmRfc29jX2phY2tfbmV3KGNvZGVjLCAiZHcgSmFjayIsIFNORF9KQUNL X0xJTkVPVVQsCisJCQkgICAgICAgJmR3LT5qYWNrKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIo ZHctPmRldiwgImphY2sgbmV3IGZhaWxlZCAoJWQpXG4iLCByZXQpOworCQlkdy0+aXNfamFja19y ZWFkeSA9IGZhbHNlOworCQlyZXR1cm4gcmV0OworCX0KKworCWR3LT5pc19qYWNrX3JlYWR5ID0g dHJ1ZTsKKworCXJldHVybiBzbmRfZHdfaGRtaV9qYWNrX2RldGVjdChkdyk7Cit9CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCBzbmRfZHdfaGRtaV9hdWRpb193aWRn ZXRzW10gPSB7CisJU05EX1NPQ19EQVBNX09VVFBVVCgiVFgiKSwKK307CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3JvdXRlIHNuZF9kd19oZG1pX2F1ZGlvX3JvdXRlc1tdID0g eworCXsgIlRYIiwgTlVMTCwgIlBsYXliYWNrIiB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCBzbmRfc29jX2RhaV9vcHMgZHdfaGRtaV9kYWlfb3BzID0geworCS5zdGFydHVwID0gc25kX2R3 X2hkbWlfZGFpX3N0YXJ0dXAsCisJLmh3X3BhcmFtcyA9IHNuZF9kd19oZG1pX2RhaV9od19wYXJh bXMsCisJLnRyaWdnZXIgPSBzbmRfZHdfaGRtaV9kYWlfdHJpZ2dlciwKKwkuc2h1dGRvd24gPSBz bmRfZHdfaGRtaV9kYWlfc2h1dGRvd24sCit9OworCitzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFp X2RyaXZlciBkd19oZG1pX2F1ZGlvX2RhaSA9IHsKKwkubmFtZSA9ICJkdy1oZG1pLWkycy1oaWZp IiwKKwkucGxheWJhY2sgPSB7CisJCS5zdHJlYW1fbmFtZSA9ICJQbGF5YmFjayIsCisJCS5jaGFu bmVsc19taW4gPSAyLAorCQkuY2hhbm5lbHNfbWF4ID0gOCwKKwkJLnJhdGVzID0gU05EUlZfUENN X1JBVEVfMzIwMDAgfAorCQkJIFNORFJWX1BDTV9SQVRFXzQ0MTAwIHwgU05EUlZfUENNX1JBVEVf NDgwMDAgfAorCQkJIFNORFJWX1BDTV9SQVRFXzg4MjAwIHwgU05EUlZfUENNX1JBVEVfOTYwMDAg fAorCQkJIFNORFJWX1BDTV9SQVRFXzE3NjQwMCB8IFNORFJWX1BDTV9SQVRFXzE5MjAwMCwKKwkJ LmZvcm1hdHMgPSBTTkRSVl9QQ01fRk1UQklUX1MxNl9MRSB8IFNORFJWX1BDTV9GTVRCSVRfUzI0 X0xFLAorCX0sCisJLm9wcyA9ICZkd19oZG1pX2RhaV9vcHMsCit9OworCitzdGF0aWMgY29uc3Qg c3RydWN0IHNuZF9zb2NfY29kZWNfZHJpdmVyIGR3X2hkbWlfYXVkaW8gPSB7CisJLnByb2JlID0g c25kX2R3X2hkbWlfYXVkaW9fcHJvYmUsCisJLmRhcG1fd2lkZ2V0cyA9IHNuZF9kd19oZG1pX2F1 ZGlvX3dpZGdldHMsCisJLm51bV9kYXBtX3dpZGdldHMgPSBBUlJBWV9TSVpFKHNuZF9kd19oZG1p X2F1ZGlvX3dpZGdldHMpLAorCS5kYXBtX3JvdXRlcyA9IHNuZF9kd19oZG1pX2F1ZGlvX3JvdXRl cywKKwkubnVtX2RhcG1fcm91dGVzID0gQVJSQVlfU0laRShzbmRfZHdfaGRtaV9hdWRpb19yb3V0 ZXMpLAorfTsKKworc3RhdGljIGludCBkd19oZG1pX2F1ZGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGR3X2hkbWlfYXVkaW9fZGF0YSAqZGF0YSA9IHBk ZXYtPmRldi5wbGF0Zm9ybV9kYXRhOworCXN0cnVjdCBzbmRfZHdfaGRtaSAqZHc7CisJaW50IHJl dDsKKworCWR3ID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqZHcpLCBHRlBfS0VS TkVMKTsKKwlpZiAoIWR3KQorCQlyZXR1cm4gLUVOT01FTTsKKworCWR3LT5kYXRhID0gKmRhdGE7 CisJZHctPmRldiA9ICZwZGV2LT5kZXY7CisJZHctPmlzX2phY2tfcmVhZHkgPSBmYWxzZTsKKwlw bGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkdyk7CisKKwlyZXQgPSByZXF1ZXN0X2lycShkdy0+ ZGF0YS5pcnEsIHNuZF9kd19oZG1pX2lycSwgSVJRRl9TSEFSRUQsCisJCQkgICJkdy1kdy1hdWRp byIsIGR3KTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgInJlcXVlc3QgaXJx IGZhaWxlZCAoJWQpXG4iLCByZXQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBz bmRfc29jX3JlZ2lzdGVyX2NvZGVjKCZwZGV2LT5kZXYsICZkd19oZG1pX2F1ZGlvLAorCQkJCSAg ICAgJmR3X2hkbWlfYXVkaW9fZGFpLCAxKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoJnBkZXYt PmRldiwgInJlZ2lzdGVyIGNvZGVjIGZhaWxlZCAoJWQpXG4iLCByZXQpOworCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwlkZXZfZGJnKCZwZGV2LT5kZXYsICJkdyBhdWRpbyBpbml0IHN1Y2Nlc3Mu XG4iKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGR3X2hkbWlfYXVkaW9fcmVtb3Zl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IHNuZF9kd19oZG1pICpk dyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJc25kX3NvY191bnJlZ2lzdGVyX2Nv ZGVjKCZwZGV2LT5kZXYpOworCisJcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBDT05GSUdfUE0KK3N0 YXRpYyBpbnQgZHdfaGRtaV9hdWRpb19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0 cnVjdCBzbmRfZHdfaGRtaSAqZHcgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCXNuZF9kd19o ZG1pX2phY2tfZGV0ZWN0KGR3KTsKKworCWlmIChkdy0+aXNfcGxheWJhY2tfc3RhdHVzKQorCQlk d19oZG1pX2F1ZGlvX3NldF9mbXQoZHcsICZkdy0+Zm10KTsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGR3X2hkbWlfYXVkaW9fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJ cmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGR3 X2hkbWlfYXVkaW9fcG0gPSB7CisJU0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMoZHdfaGRtaV9hdWRp b19zdXNwZW5kLCBkd19oZG1pX2F1ZGlvX3Jlc3VtZSkKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIGR3X2hkbWlfYXVkaW9fZHJpdmVyID0geworCS5kcml2ZXIgPSB7CisJCS5u YW1lID0gRFJJVkVSX05BTUUsCisJCS5wbSA9ICZkd19oZG1pX2F1ZGlvX3BtLAorCX0sCisJLnBy b2JlID0gZHdfaGRtaV9hdWRpb19wcm9iZSwKKwkucmVtb3ZlID0gZHdfaGRtaV9hdWRpb19yZW1v dmUsCit9OworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkd19oZG1pX2F1ZGlvX2RyaXZlcik7CisK K01PRFVMRV9BVVRIT1IoIllha2lyIFlhbmcgPHlra0Byb2NrLWNoaXBzLmNvbT4iKTsKK01PRFVM RV9ERVNDUklQVElPTigiRFcgZHcgQXVkaW8gQVNvQyBJbnRlcmZhY2UiKTsKK01PRFVMRV9MSUNF TlNFKCJHUEwgdjIiKTsKK01PRFVMRV9BTElBUyhQTEFURk9STV9NT0RVTEVfUFJFRklYIERSSVZF Ul9OQU1FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfaGRtaS5jIGIv ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLmMKaW5kZXggY2JiNTVhZS4uNTM1NjEyNiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLmMKQEAgLTE3ODQsMjAgKzE3ODQsMjYgQEAgaW50IGR3 X2hkbWlfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKIAog CW1lbXNldCgmcGRldmluZm8sIDAsIHNpemVvZihwZGV2aW5mbykpOwogCXBkZXZpbmZvLnBhcmVu dCA9IGRldjsKLQlwZGV2aW5mby5pZCA9IFBMQVRGT1JNX0RFVklEX0FVVE87CiAKLQlpZiAoaGRt aV9yZWFkYihoZG1pLCBIRE1JX0NPTkZJRzFfSUQpICYgSERNSV9DT05GSUcxX0FIQikgewotCQlh dWRpby5waHlzID0gaW9yZXMtPnN0YXJ0OwotCQlhdWRpby5iYXNlID0gaGRtaS0+cmVnczsKLQkJ YXVkaW8uaXJxID0gaXJxOwotCQlhdWRpby5oZG1pID0gaGRtaTsKLQkJYXVkaW8uZWxkID0gaGRt aS0+Y29ubmVjdG9yLmVsZDsKKwlhdWRpby5waHlzID0gaW9yZXMtPnN0YXJ0OworCWF1ZGlvLmJh c2UgPSBoZG1pLT5yZWdzOworCWF1ZGlvLmlycSA9IGlycTsKKwlhdWRpby5oZG1pID0gaGRtaTsK KwlhdWRpby5lbGQgPSBoZG1pLT5jb25uZWN0b3IuZWxkOworCisJcGRldmluZm8uZGF0YSA9ICZh dWRpbzsKKwlwZGV2aW5mby5zaXplX2RhdGEgPSBzaXplb2YoYXVkaW8pOwogCisJaWYgKGhkbWlf cmVhZGIoaGRtaSwgSERNSV9DT05GSUcxX0lEKSAmIEhETUlfQ09ORklHMV9BSEIpIHsKIAkJcGRl dmluZm8ubmFtZSA9ICJkdy1oZG1pLWFoYi1hdWRpbyI7Ci0JCXBkZXZpbmZvLmRhdGEgPSAmYXVk aW87Ci0JCXBkZXZpbmZvLnNpemVfZGF0YSA9IHNpemVvZihhdWRpbyk7CisJCXBkZXZpbmZvLmlk ID0gUExBVEZPUk1fREVWSURfQVVUTzsKIAkJcGRldmluZm8uZG1hX21hc2sgPSBETUFfQklUX01B U0soMzIpOwogCQloZG1pLT5hdWRpbyA9IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9mdWxsKCZw ZGV2aW5mbyk7CisKKwl9IGVsc2UgaWYgKGhkbWlfcmVhZGIoaGRtaSwgSERNSV9DT05GSUcwX0lE KSAmIEhETUlfQ09ORklHMF9JMlMpIHsKKwkJcGRldmluZm8ubmFtZSA9ICJkdy1oZG1pLWFoYi1h dWRpbyI7CisJCXBkZXZpbmZvLmlkID0gUExBVEZPUk1fREVWSURfTk9ORTsKKwkJaGRtaS0+YXVk aW8gPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZnVsbCgmcGRldmluZm8pOwogCX0KIAogCWRl dl9zZXRfZHJ2ZGF0YShkZXYsIGhkbWkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Jy aWRnZS9kd19oZG1pLmggYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuaAppbmRleCA3 OGU1NGU4Li45YzIyMzc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hk bWkuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuaApAQCAtNTQ1LDYgKzU0 NSw5IEBACiAjZGVmaW5lIEhETUlfSTJDTV9GU19TQ0xfTENOVF8wX0FERFIgICAgICAgICAgICAw eDdFMTIKIAogZW51bSB7CisvKiBDT05GSUcwX0lEIGZpZWxkIHZhbHVlcyAqLworCUhETUlfQ09O RklHMF9JMlMgPSAweDAxLAorCiAvKiBDT05GSUcxX0lEIGZpZWxkIHZhbHVlcyAqLwogCUhETUlf Q09ORklHMV9BSEIgPSAweDAxLAogCi0tIAoyLjEuMgoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==