From mboxrd@z Thu Jan 1 00:00:00 1970 From: Russell King Subject: [PATCH 1/9] drm: bridge/dw_hdmi-ahb-audio: add audio driver Date: Sat, 08 Aug 2015 17:10:06 +0100 Message-ID: References: <20150808160936.GN7557@n2100.arm.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20150808160936.GN7557@n2100.arm.linux.org.uk> Content-Disposition: inline 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@alsa-project.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Fabio Estevam , Jaroslav Kysela , Mark Brown , Yakir Yang , Andy Yan List-Id: alsa-devel@alsa-project.org QWRkIEFMU0EgYmFzZWQgSERNSSBBSEIgYXVkaW8gZHJpdmVyIGZvciBkd19oZG1pLiAgVGhlIG9u bHkgYnVmZmVyCmZvcm1hdCBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlIGlzIGl0cyBvd24gc3Bl Y2lhbCBJRUM5NTggYmFzZWQgZm9ybWF0LAp3aGljaCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGFu eSBBTFNBIGZvcm1hdC4gIFRvIGF2b2lkIGRvaW5nIHRvbyBtdWNoCmRhdGEgbWFuaXB1bGF0aW9u IHdpdGhpbiB0aGUgZHJpdmVyLCB3ZSBzdXBwb3J0IG9ubHkgQUxTQXMgSUVDOTU4IExFIGFuZAoy NC1iaXQgUENNIGZvcm1hdHMgZm9yIDIgdG8gNiBjaGFubmVscywgd2hpY2ggd2UgY29udmVydCB0 byBpdHMgaGFyZHdhcmUKZm9ybWF0LgoKQSBtb3JlIGRlc2lyYWJsZSBzb2x1dGlvbiB3b3VsZCBi ZSB0byBoYXZlIHRoaXMgY29udmVyc2lvbiBpbiB1c2Vyc3BhY2UsCmJ1dCBBTFNBIGRvZXMgbm90 IGFwcGVhciB0byBhbGxvdyBzdWNoIHRyYW5zZm9ybWF0aW9ucyBvdXRzaWRlIG9mCmxpYmFzb3Vu ZCBpdHNlbGYuCgpTaWduZWQtb2ZmLWJ5OiBSdXNzZWxsIEtpbmcgPHJtaytrZXJuZWxAYXJtLmxp bnV4Lm9yZy51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcgICAgICAgICAg ICAgfCAgMTAgKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZSAgICAgICAgICAgIHwg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfaGRtaS1haGItYXVkaW8uYyB8IDU2MSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19o ZG1pLWF1ZGlvLmggICAgIHwgIDEzICsKIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfaGRtaS5j ICAgICAgICAgICB8ICAyNCArKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLmggICAg ICAgICAgIHwgICAzICsKIDYgZmlsZXMgY2hhbmdlZCwgNjEyIGluc2VydGlvbnMoKykKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWktYWhiLWF1ZGlvLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWktYXVkaW8u aAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyBiL2RyaXZlcnMv Z3B1L2RybS9icmlkZ2UvS2NvbmZpZwppbmRleCBhY2VmMzIyMzc3MmMuLjU2ZWQzNWZlMDczNCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9icmlkZ2UvS2NvbmZpZwpAQCAtMyw2ICszLDE2IEBAIGNvbmZpZyBEUk1fRFdfSERN SQogCWRlcGVuZHMgb24gRFJNCiAJc2VsZWN0IERSTV9LTVNfSEVMUEVSCiAKK2NvbmZpZyBEUk1f RFdfSERNSV9BSEJfQVVESU8KKwl0cmlzdGF0ZSAiU3lub3BzaXMgRGVzaWdud2FyZSBBSEIgQXVk aW8gaW50ZXJmYWNlIgorCWRlcGVuZHMgb24gRFJNX0RXX0hETUkgJiYgU05ECisJc2VsZWN0IFNO RF9QQ00KKwlzZWxlY3QgU05EX1BDTV9JRUM5NTgKKwloZWxwCisJICBTdXBwb3J0IHRoZSBBSEIg QXVkaW8gaW50ZXJmYWNlIHdoaWNoIGlzIHBhcnQgb2YgdGhlIFN5bm9wc2lzCisJICBEZXNpZ253 YXJlIEhETUkgYmxvY2suICBUaGlzIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aAorCSAgdGhl IGkuTVg2IEhETUkgZHJpdmVyLgorCiBjb25maWcgRFJNX1BUTjM0NjAKIAl0cmlzdGF0ZSAiUFRO MzQ2MCBEUC9MVkRTIGJyaWRnZSIKIAlkZXBlbmRzIG9uIERSTQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZp bGUKaW5kZXggOGRmZWJkOTg0MzcwLi5lYjgwZGJiYjgzNjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtl ZmlsZQpAQCAtMywzICszLDQgQEAgY2NmbGFncy15IDo9IC1JaW5jbHVkZS9kcm0KIG9iai0kKENP TkZJR19EUk1fUFM4NjIyKSArPSBwczg2MjIubwogb2JqLSQoQ09ORklHX0RSTV9QVE4zNDYwKSAr PSBwdG4zNDYwLm8KIG9iai0kKENPTkZJR19EUk1fRFdfSERNSSkgKz0gZHdfaGRtaS5vCitvYmot JChDT05GSUdfRFJNX0RXX0hETUlfQUhCX0FVRElPKSArPSBkd19oZG1pLWFoYi1hdWRpby5vCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWktYWhiLWF1ZGlvLmMgYi9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWktYWhiLWF1ZGlvLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yMmJiYmM1YzIzOTMKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWktYWhiLWF1ZGlvLmMKQEAgLTAsMCArMSw1 NjEgQEAKKy8qCisgKiBEZXNpZ25XYXJlIEhETUkgYXVkaW8gZHJpdmVyCisgKgorICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbi4KKyAqCisgKiBXcml0dGVuIGFuZCB0ZXN0ZWQgYWdhaW5zdCB0aGUgRGVzaWdud2Fy ZSBIRE1JIFR4IGZvdW5kIGluIGlNWDYuCisgKi8KKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2lu Y2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgorI2luY2x1ZGUgPGRybS9icmlkZ2UvZHdf aGRtaS5oPgorCisjaW5jbHVkZSA8c291bmQvYXNvdW5kZWYuaD4KKyNpbmNsdWRlIDxzb3VuZC9j b3JlLmg+CisjaW5jbHVkZSA8c291bmQvaW5pdHZhbC5oPgorI2luY2x1ZGUgPHNvdW5kL3BjbS5o PgorI2luY2x1ZGUgPHNvdW5kL3BjbV9pZWM5NTguaD4KKworI2luY2x1ZGUgImR3X2hkbWktYXVk aW8uaCIKKworI2RlZmluZSBEUklWRVJfTkFNRSAiZHctaGRtaS1haGItYXVkaW8iCisKKy8qIFBy b3ZpZGUgc29tZSBiaXRzIHJhdGhlciB0aGFuIGJpdCBvZmZzZXRzICovCitlbnVtIHsKKwlIRE1J X0FIQl9ETUFfQ09ORjBfU1dfRklGT19SU1QgPSBCSVQoNyksCisJSERNSV9BSEJfRE1BX0NPTkYw X0VOX0hMT0NLID0gQklUKDMpLAorCUhETUlfQUhCX0RNQV9TVEFSVF9TVEFSVCA9IEJJVCgwKSwK KwlIRE1JX0FIQl9ETUFfU1RPUF9TVE9QID0gQklUKDApLAorCUhETUlfSUhfTVVURV9BSEJETUFB VURfU1RBVDBfRVJST1IgPSBCSVQoNSksCisJSERNSV9JSF9NVVRFX0FIQkRNQUFVRF9TVEFUMF9M T1NUID0gQklUKDQpLAorCUhETUlfSUhfTVVURV9BSEJETUFBVURfU1RBVDBfUkVUUlkgPSBCSVQo MyksCisJSERNSV9JSF9NVVRFX0FIQkRNQUFVRF9TVEFUMF9ET05FID0gQklUKDIpLAorCUhETUlf SUhfTVVURV9BSEJETUFBVURfU1RBVDBfQlVGRkZVTEwgPSBCSVQoMSksCisJSERNSV9JSF9NVVRF X0FIQkRNQUFVRF9TVEFUMF9CVUZGRU1QVFkgPSBCSVQoMCksCisJSERNSV9JSF9NVVRFX0FIQkRN QUFVRF9TVEFUMF9BTEwgPQorCQlIRE1JX0lIX01VVEVfQUhCRE1BQVVEX1NUQVQwX0VSUk9SIHwK KwkJSERNSV9JSF9NVVRFX0FIQkRNQUFVRF9TVEFUMF9MT1NUIHwKKwkJSERNSV9JSF9NVVRFX0FI QkRNQUFVRF9TVEFUMF9SRVRSWSB8CisJCUhETUlfSUhfTVVURV9BSEJETUFBVURfU1RBVDBfRE9O RSB8CisJCUhETUlfSUhfTVVURV9BSEJETUFBVURfU1RBVDBfQlVGRkZVTEwgfAorCQlIRE1JX0lI X01VVEVfQUhCRE1BQVVEX1NUQVQwX0JVRkZFTVBUWSwKKwlIRE1JX0lIX0FIQkRNQUFVRF9TVEFU MF9FUlJPUiA9IEJJVCg1KSwKKwlIRE1JX0lIX0FIQkRNQUFVRF9TVEFUMF9MT1NUID0gQklUKDQp LAorCUhETUlfSUhfQUhCRE1BQVVEX1NUQVQwX1JFVFJZID0gQklUKDMpLAorCUhETUlfSUhfQUhC RE1BQVVEX1NUQVQwX0RPTkUgPSBCSVQoMiksCisJSERNSV9JSF9BSEJETUFBVURfU1RBVDBfQlVG RkZVTEwgPSBCSVQoMSksCisJSERNSV9JSF9BSEJETUFBVURfU1RBVDBfQlVGRkVNUFRZID0gQklU KDApLAorCUhETUlfSUhfQUhCRE1BQVVEX1NUQVQwX0FMTCA9CisJCUhETUlfSUhfQUhCRE1BQVVE X1NUQVQwX0VSUk9SIHwKKwkJSERNSV9JSF9BSEJETUFBVURfU1RBVDBfTE9TVCB8CisJCUhETUlf SUhfQUhCRE1BQVVEX1NUQVQwX1JFVFJZIHwKKwkJSERNSV9JSF9BSEJETUFBVURfU1RBVDBfRE9O RSB8CisJCUhETUlfSUhfQUhCRE1BQVVEX1NUQVQwX0JVRkZGVUxMIHwKKwkJSERNSV9JSF9BSEJE TUFBVURfU1RBVDBfQlVGRkVNUFRZLAorCUhETUlfQUhCX0RNQV9DT05GMF9JTkNSMTYgPSAyIDw8 IDEsCisJSERNSV9BSEJfRE1BX0NPTkYwX0lOQ1I4ID0gMSA8PCAxLAorCUhETUlfQUhCX0RNQV9D T05GMF9JTkNSNCA9IDAsCisJSERNSV9BSEJfRE1BX0NPTkYwX0JVUlNUX01PREUgPSBCSVQoMCks CisJSERNSV9BSEJfRE1BX01BU0tfRE9ORSA9IEJJVCg3KSwKKwlIRE1JX1JFVklTSU9OX0lEID0g MHgwMDAxLAorCUhETUlfSUhfQUhCRE1BQVVEX1NUQVQwID0gMHgwMTA5LAorCUhETUlfSUhfTVVU RV9BSEJETUFBVURfU1RBVDAgPSAweDAxODksCisJSERNSV9BSEJfRE1BX0NPTkYwID0gMHgzNjAw LAorCUhETUlfQUhCX0RNQV9TVEFSVCA9IDB4MzYwMSwKKwlIRE1JX0FIQl9ETUFfU1RPUCA9IDB4 MzYwMiwKKwlIRE1JX0FIQl9ETUFfVEhSU0xEID0gMHgzNjAzLAorCUhETUlfQUhCX0RNQV9TVFJB RERSMCA9IDB4MzYwNCwKKwlIRE1JX0FIQl9ETUFfU1RQQUREUjAgPSAweDM2MDgsCisJSERNSV9B SEJfRE1BX01BU0sgPSAweDM2MTQsCisJSERNSV9BSEJfRE1BX1BPTCA9IDB4MzYxNSwKKwlIRE1J X0FIQl9ETUFfQ09ORjEgPSAweDM2MTYsCisJSERNSV9BSEJfRE1BX0JVRkZQT0wgPSAweDM2MWEs Cit9OworCitzdHJ1Y3Qgc25kX2R3X2hkbWkgeworCXN0cnVjdCBzbmRfY2FyZCAqY2FyZDsKKwlz dHJ1Y3Qgc25kX3BjbSAqcGNtOworCXN0cnVjdCBkd19oZG1pX2F1ZGlvX2RhdGEgZGF0YTsKKwlz dHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbTsKKwl2b2lkICgqcmVmb3JtYXQpKHN0 cnVjdCBzbmRfZHdfaGRtaSAqLCBzaXplX3QsIHNpemVfdCk7CisJdm9pZCAqYnVmX3NyYzsKKwl2 b2lkICpidWZfZHN0OworCWRtYV9hZGRyX3QgYnVmX2FkZHI7CisJdW5zaWduZWQgYnVmX29mZnNl dDsKKwl1bnNpZ25lZCBidWZfcGVyaW9kOworCXVuc2lnbmVkIGJ1Zl9zaXplOworCXVuc2lnbmVk IGNoYW5uZWxzOworCXU4IHJldmlzaW9uOworCXU4IGllY19vZmZzZXQ7CisJdTggY3NbMTkyXVs4 XTsKK307CisKK3N0YXRpYyB2b2lkIGR3X2hkbWlfd3JpdGVsKHVuc2lnbmVkIGxvbmcgdmFsLCB2 b2lkIF9faW9tZW0gKnB0cikKK3sKKwl3cml0ZWJfcmVsYXhlZCh2YWwsIHB0cik7CisJd3JpdGVi X3JlbGF4ZWQodmFsID4+IDgsIHB0ciArIDEpOworCXdyaXRlYl9yZWxheGVkKHZhbCA+PiAxNiwg cHRyICsgMik7CisJd3JpdGViX3JlbGF4ZWQodmFsID4+IDI0LCBwdHIgKyAzKTsKK30KKworLyoK KyAqIENvbnZlcnQgdG8gaGFyZHdhcmUgZm9ybWF0OiBUaGUgdXNlcnNwYWNlIGJ1ZmZlciBjb250 YWlucyBJRUM5NTggc2FtcGxlcywKKyAqIHdpdGggdGhlIFBDVVYgYml0cyBpbiBiaXRzIDMxLi4y OCBhbmQgYXVkaW8gc2FtcGxlcyBpbiBiaXRzIDI3Li40LiAgV2UKKyAqIG5lZWQgdGhlc2UgdG8g YmUgaW4gYml0cyAyNy4uMjQsIHdpdGggdGhlIElFQyBCIGJpdCBpbiBiaXQgMjgsIGFuZCBhdWRp bworICogc2FtcGxlcyBpbiAyMy4uMC4KKyAqCisgKiBEZWZhdWx0IHByZWFtYmxlIGluIGJpdHMg My4uMDogOCA9IGJsb2NrIHN0YXJ0LCA0ID0gZXZlbiAyID0gb2RkCisgKgorICogSWRlYWxseSwg d2UgY291bGQgZG8gd2l0aCBoYXZpbmcgdGhlIGRhdGEgcHJvcGVybHkgZm9ybWF0dGVkIGluIHVz ZXJzcGFjZS4KKyAqLworc3RhdGljIHZvaWQgZHdfaGRtaV9yZWZvcm1hdF9pZWM5NTgoc3RydWN0 IHNuZF9kd19oZG1pICpkdywKKwlzaXplX3Qgb2Zmc2V0LCBzaXplX3QgYnl0ZXMpCit7CisJdTMy ICpzcmMgPSBkdy0+YnVmX3NyYyArIG9mZnNldDsKKwl1MzIgKmRzdCA9IGR3LT5idWZfZHN0ICsg b2Zmc2V0OworCXUzMiAqZW5kID0gZHctPmJ1Zl9zcmMgKyBvZmZzZXQgKyBieXRlczsKKworCWRv IHsKKwkJdTMyIGIsIHNhbXBsZSA9ICpzcmMrKzsKKworCQliID0gKHNhbXBsZSAmIDgpIDw8ICgy OCAtIDMpOworCisJCXNhbXBsZSA+Pj0gNDsKKworCQkqZHN0KysgPSBzYW1wbGUgfCBiOworCX0g d2hpbGUgKHNyYyA8IGVuZCk7Cit9CisKK3N0YXRpYyB1MzIgcGFyaXR5KHUzMiBzYW1wbGUpCit7 CisJc2FtcGxlIF49IHNhbXBsZSA+PiAxNjsKKwlzYW1wbGUgXj0gc2FtcGxlID4+IDg7CisJc2Ft cGxlIF49IHNhbXBsZSA+PiA0OworCXNhbXBsZSBePSBzYW1wbGUgPj4gMjsKKwlzYW1wbGUgXj0g c2FtcGxlID4+IDE7CisJcmV0dXJuIChzYW1wbGUgJiAxKSA8PCAyNzsKK30KKworc3RhdGljIHZv aWQgZHdfaGRtaV9yZWZvcm1hdF9zMjQoc3RydWN0IHNuZF9kd19oZG1pICpkdywKKwlzaXplX3Qg b2Zmc2V0LCBzaXplX3QgYnl0ZXMpCit7CisJdTMyICpzcmMgPSBkdy0+YnVmX3NyYyArIG9mZnNl dDsKKwl1MzIgKmRzdCA9IGR3LT5idWZfZHN0ICsgb2Zmc2V0OworCXUzMiAqZW5kID0gZHctPmJ1 Zl9zcmMgKyBvZmZzZXQgKyBieXRlczsKKworCWRvIHsKKwkJdW5zaWduZWQgaTsKKwkJdTggKmNz OworCisJCWNzID0gZHctPmNzW2R3LT5pZWNfb2Zmc2V0KytdOworCQlpZiAoZHctPmllY19vZmZz ZXQgPj0gMTkyKQorCQkJZHctPmllY19vZmZzZXQgPSAwOworCisJCWkgPSBkdy0+Y2hhbm5lbHM7 CisJCWRvIHsKKwkJCXUzMiBzYW1wbGUgPSAqc3JjKys7CisKKwkJCXNhbXBsZSAmPSB+MHhmZjAw MDAwMDsKKwkJCXNhbXBsZSB8PSAqY3MrKyA8PCAyNDsKKwkJCXNhbXBsZSB8PSBwYXJpdHkoc2Ft cGxlICYgfjB4ZjgwMDAwMDApOworCisJCQkqZHN0KysgPSBzYW1wbGU7CisJCX0gd2hpbGUgKC0t aSk7CisJfSB3aGlsZSAoc3JjIDwgZW5kKTsKK30KKworc3RhdGljIHZvaWQgZHdfaGRtaV9jcmVh dGVfY3Moc3RydWN0IHNuZF9kd19oZG1pICpkdywKKwlzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpy dW50aW1lKQoreworCXU4IGNzWzRdOworCXVuc2lnbmVkIGNoLCBpLCBqOworCisJc25kX3BjbV9j cmVhdGVfaWVjOTU4X2NvbnN1bWVyKHJ1bnRpbWUsIGNzLCBzaXplb2YoY3MpKTsKKworCW1lbXNl dChkdy0+Y3MsIDAsIHNpemVvZihkdy0+Y3MpKTsKKworCWZvciAoY2ggPSAwOyBjaCA8IDg7IGNo KyspIHsKKwkJY3NbMl0gJj0gfklFQzk1OF9BRVMyX0NPTl9DSEFOTkVMOworCQljc1syXSB8PSAo Y2ggKyAxKSA8PCA0OworCisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNzKTsgaSsrKSB7 CisJCQl1bnNpZ25lZCBjID0gY3NbaV07CisKKwkJCWZvciAoaiA9IDA7IGogPCA4OyBqKyssIGMg Pj49IDEpCisJCQkJZHctPmNzW2kgKiA4ICsgal1bY2hdID0gKGMgJiAxKSA8PCAyOworCQl9CisJ fQorCWR3LT5jc1swXVswXSB8PSBCSVQoNCk7Cit9CisKK3N0YXRpYyB2b2lkIGR3X2hkbWlfc3Rh cnRfZG1hKHN0cnVjdCBzbmRfZHdfaGRtaSAqZHcpCit7CisJdm9pZCBfX2lvbWVtICpiYXNlID0g ZHctPmRhdGEuYmFzZTsKKwl1bnNpZ25lZCBvZmZzZXQgPSBkdy0+YnVmX29mZnNldDsKKwl1bnNp Z25lZCBwZXJpb2QgPSBkdy0+YnVmX3BlcmlvZDsKKwl1MzIgc3RhcnQsIHN0b3A7CisKKwlkdy0+ cmVmb3JtYXQoZHcsIG9mZnNldCwgcGVyaW9kKTsKKworCS8qIENsZWFyIGFsbCBpcnFzIGJlZm9y ZSBlbmFibGluZyBpcnFzIGFuZCBzdGFydGluZyBETUEgKi8KKwl3cml0ZWJfcmVsYXhlZChIRE1J X0lIX0FIQkRNQUFVRF9TVEFUMF9BTEwsCisJCSAgICAgICBiYXNlICsgSERNSV9JSF9BSEJETUFB VURfU1RBVDApOworCisJc3RhcnQgPSBkdy0+YnVmX2FkZHIgKyBvZmZzZXQ7CisJc3RvcCA9IHN0 YXJ0ICsgcGVyaW9kIC0gMTsKKworCS8qIFNldHVwIHRoZSBoYXJkd2FyZSBzdGFydC9zdG9wIGFk ZHJlc3NlcyAqLworCWR3X2hkbWlfd3JpdGVsKHN0YXJ0LCBiYXNlICsgSERNSV9BSEJfRE1BX1NU UkFERFIwKTsKKwlkd19oZG1pX3dyaXRlbChzdG9wLCBiYXNlICsgSERNSV9BSEJfRE1BX1NUUEFE RFIwKTsKKworCXdyaXRlYl9yZWxheGVkKCh1OCl+SERNSV9BSEJfRE1BX01BU0tfRE9ORSwgYmFz ZSArIEhETUlfQUhCX0RNQV9NQVNLKTsKKwl3cml0ZWIoSERNSV9BSEJfRE1BX1NUQVJUX1NUQVJU LCBiYXNlICsgSERNSV9BSEJfRE1BX1NUQVJUKTsKKworCW9mZnNldCArPSBwZXJpb2Q7CisJaWYg KG9mZnNldCA+PSBkdy0+YnVmX3NpemUpCisJCW9mZnNldCA9IDA7CisJZHctPmJ1Zl9vZmZzZXQg PSBvZmZzZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGR3X2hkbWlfc3RvcF9kbWEoc3RydWN0IHNuZF9k d19oZG1pICpkdykKK3sKKwlkdy0+c3Vic3RyZWFtID0gTlVMTDsKKworCS8qIERpc2FibGUgaW50 ZXJydXB0cyBiZWZvcmUgZGlzYWJsaW5nIERNQSAqLworCXdyaXRlYl9yZWxheGVkKH4wLCBkdy0+ ZGF0YS5iYXNlICsgSERNSV9BSEJfRE1BX01BU0spOworCXdyaXRlYl9yZWxheGVkKEhETUlfQUhC X0RNQV9TVE9QX1NUT1AsIGR3LT5kYXRhLmJhc2UgKyBIRE1JX0FIQl9ETUFfU1RPUCk7Cit9CisK K3N0YXRpYyBpcnFyZXR1cm5fdCBzbmRfZHdfaGRtaV9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkK K3sKKwlzdHJ1Y3Qgc25kX2R3X2hkbWkgKmR3ID0gZGF0YTsKKwlzdHJ1Y3Qgc25kX3BjbV9zdWJz dHJlYW0gKnN1YnN0cmVhbTsKKwl1bnNpZ25lZCBzdGF0OworCisJc3RhdCA9IHJlYWRiX3JlbGF4 ZWQoZHctPmRhdGEuYmFzZSArIEhETUlfSUhfQUhCRE1BQVVEX1NUQVQwKTsKKwlpZiAoIXN0YXQp CisJCXJldHVybiBJUlFfTk9ORTsKKworCXdyaXRlYl9yZWxheGVkKHN0YXQsIGR3LT5kYXRhLmJh c2UgKyBIRE1JX0lIX0FIQkRNQUFVRF9TVEFUMCk7CisKKwlzdWJzdHJlYW0gPSBkdy0+c3Vic3Ry ZWFtOworCWlmIChzdGF0ICYgSERNSV9JSF9BSEJETUFBVURfU1RBVDBfRE9ORSAmJiBzdWJzdHJl YW0pIHsKKwkJc25kX3BjbV9wZXJpb2RfZWxhcHNlZChzdWJzdHJlYW0pOworCQlpZiAoZHctPnN1 YnN0cmVhbSkKKwkJCWR3X2hkbWlfc3RhcnRfZG1hKGR3KTsKKwl9CisKKwlyZXR1cm4gSVJRX0hB TkRMRUQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc25kX3BjbV9oYXJkd2FyZSBkd19oZG1pX2h3ID0g eworCS5pbmZvID0gU05EUlZfUENNX0lORk9fSU5URVJMRUFWRUQgfAorCQlTTkRSVl9QQ01fSU5G T19CTE9DS19UUkFOU0ZFUiB8CisJCVNORFJWX1BDTV9JTkZPX01NQVAgfAorCQlTTkRSVl9QQ01f SU5GT19NTUFQX1ZBTElELAorCS5mb3JtYXRzID0gU05EUlZfUENNX0ZNVEJJVF9JRUM5NThfU1VC RlJBTUVfTEUgfAorCQkgICBTTkRSVl9QQ01fRk1UQklUX1MyNF9MRSwKKwkucmF0ZXMgPSBTTkRS Vl9QQ01fUkFURV8zMjAwMCB8CisJCSBTTkRSVl9QQ01fUkFURV80NDEwMCB8CisJCSBTTkRSVl9Q Q01fUkFURV80ODAwMCB8CisJCSBTTkRSVl9QQ01fUkFURV84ODIwMCB8CisJCSBTTkRSVl9QQ01f UkFURV85NjAwMCB8CisJCSBTTkRSVl9QQ01fUkFURV8xNzY0MDAgfAorCQkgU05EUlZfUENNX1JB VEVfMTkyMDAwLAorCS5jaGFubmVsc19taW4gPSAyLAorCS5jaGFubmVsc19tYXggPSA4LAorCS5i dWZmZXJfYnl0ZXNfbWF4ID0gNjQgKiAxMDI0LAorCS5wZXJpb2RfYnl0ZXNfbWluID0gMjU2LAor CS5wZXJpb2RfYnl0ZXNfbWF4ID0gODE5MiwJLyogRVJSMDA0MzIzOiBtdXN0IGxpbWl0IHRvIDhr ICovCisJLnBlcmlvZHNfbWluID0gMiwKKwkucGVyaW9kc19tYXggPSAxNiwKKwkuZmlmb19zaXpl ID0gMCwKK307CisKK3N0YXRpYyBpbnQgZHdfaGRtaV9vcGVuKHN0cnVjdCBzbmRfcGNtX3N1YnN0 cmVhbSAqc3Vic3RyZWFtKQoreworCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUgPSBz dWJzdHJlYW0tPnJ1bnRpbWU7CisJc3RydWN0IHNuZF9kd19oZG1pICpkdyA9IHN1YnN0cmVhbS0+ cHJpdmF0ZV9kYXRhOworCXZvaWQgX19pb21lbSAqYmFzZSA9IGR3LT5kYXRhLmJhc2U7CisJaW50 IHJldDsKKworCXJ1bnRpbWUtPmh3ID0gZHdfaGRtaV9odzsKKworCXJldCA9IHNuZF9wY21fbGlt aXRfaHdfcmF0ZXMocnVudGltZSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwly ZXQgPSBzbmRfcGNtX2h3X2NvbnN0cmFpbnRfaW50ZWdlcihydW50aW1lLCBTTkRSVl9QQ01fSFdf UEFSQU1fUEVSSU9EUyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwkvKiBDbGVh ciBGSUZPICovCisJd3JpdGViX3JlbGF4ZWQoSERNSV9BSEJfRE1BX0NPTkYwX1NXX0ZJRk9fUlNU LAorCQkgICAgICAgYmFzZSArIEhETUlfQUhCX0RNQV9DT05GMCk7CisKKwkvKiBDb25maWd1cmUg aW50ZXJydXB0IHBvbGFyaXRpZXMgKi8KKwl3cml0ZWJfcmVsYXhlZCh+MCwgYmFzZSArIEhETUlf QUhCX0RNQV9QT0wpOworCXdyaXRlYl9yZWxheGVkKH4wLCBiYXNlICsgSERNSV9BSEJfRE1BX0JV RkZQT0wpOworCisJLyogS2VlcCBpbnRlcnJ1cHRzIG1hc2tlZCwgYW5kIGNsZWFyIGFueSBwZW5k aW5nICovCisJd3JpdGViX3JlbGF4ZWQofjAsIGJhc2UgKyBIRE1JX0FIQl9ETUFfTUFTSyk7CisJ d3JpdGViX3JlbGF4ZWQofjAsIGJhc2UgKyBIRE1JX0lIX0FIQkRNQUFVRF9TVEFUMCk7CisKKwly ZXQgPSByZXF1ZXN0X2lycShkdy0+ZGF0YS5pcnEsIHNuZF9kd19oZG1pX2lycSwgSVJRRl9TSEFS RUQsCisJCQkgICJkdy1oZG1pLWF1ZGlvIiwgZHcpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7 CisKKwkvKiBVbi1tdXRlIGRvbmUgaW50ZXJydXB0ICovCisJd3JpdGViX3JlbGF4ZWQoSERNSV9J SF9NVVRFX0FIQkRNQUFVRF9TVEFUMF9BTEwgJgorCQkgICAgICAgfkhETUlfSUhfTVVURV9BSEJE TUFBVURfU1RBVDBfRE9ORSwKKwkJICAgICAgIGJhc2UgKyBIRE1JX0lIX01VVEVfQUhCRE1BQVVE X1NUQVQwKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGR3X2hkbWlfY2xvc2Uoc3Ry dWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7CisJc3RydWN0IHNuZF9kd19oZG1p ICpkdyA9IHN1YnN0cmVhbS0+cHJpdmF0ZV9kYXRhOworCisJLyogTXV0ZSBhbGwgaW50ZXJydXB0 cyAqLworCXdyaXRlYl9yZWxheGVkKEhETUlfSUhfTVVURV9BSEJETUFBVURfU1RBVDBfQUxMLAor CQkgICAgICAgZHctPmRhdGEuYmFzZSArIEhETUlfSUhfTVVURV9BSEJETUFBVURfU1RBVDApOwor CisJZnJlZV9pcnEoZHctPmRhdGEuaXJxLCBkdyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBkd19oZG1pX2h3X2ZyZWUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0p Cit7CisJcmV0dXJuIHNuZF9wY21fbGliX2ZyZWVfdm1hbGxvY19idWZmZXIoc3Vic3RyZWFtKTsK K30KKworc3RhdGljIGludCBkd19oZG1pX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJl YW0gKnN1YnN0cmVhbSwKKwlzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcykKK3sKKwly ZXR1cm4gc25kX3BjbV9saWJfYWxsb2Nfdm1hbGxvY19idWZmZXIoc3Vic3RyZWFtLAorCQkJCQkJ cGFyYW1zX2J1ZmZlcl9ieXRlcyhwYXJhbXMpKTsKK30KKworc3RhdGljIGludCBkd19oZG1pX3By ZXBhcmUoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pCit7CisJc3RydWN0IHNu ZF9wY21fcnVudGltZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKKwlzdHJ1Y3Qgc25k X2R3X2hkbWkgKmR3ID0gc3Vic3RyZWFtLT5wcml2YXRlX2RhdGE7CisJdTggdGhyZXNob2xkLCBj b25mMCwgY29uZjE7CisKKwkvKiBTZXR1cCBhcyBwZXIgMy4wLjUgRlNMIDQuMS4wIEJTUCAqLwor CXN3aXRjaCAoZHctPnJldmlzaW9uKSB7CisJY2FzZSAweDBhOgorCQljb25mMCA9IEhETUlfQUhC X0RNQV9DT05GMF9CVVJTVF9NT0RFIHwKKwkJCUhETUlfQUhCX0RNQV9DT05GMF9JTkNSNDsKKwkJ aWYgKHJ1bnRpbWUtPmNoYW5uZWxzID09IDIpCisJCQl0aHJlc2hvbGQgPSAxMjY7CisJCWVsc2UK KwkJCXRocmVzaG9sZCA9IDEyNDsKKwkJYnJlYWs7CisJY2FzZSAweDFhOgorCQljb25mMCA9IEhE TUlfQUhCX0RNQV9DT05GMF9CVVJTVF9NT0RFIHwKKwkJCUhETUlfQUhCX0RNQV9DT05GMF9JTkNS ODsKKwkJdGhyZXNob2xkID0gMTI4OworCQlicmVhazsKKwlkZWZhdWx0OgorCQkvKiBOT1RSRUFD SEVEICovCisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWR3X2hkbWlfc2V0X3NhbXBsZV9yYXRl KGR3LT5kYXRhLmhkbWksIHJ1bnRpbWUtPnJhdGUpOworCisJLyogTWluaW11bSBudW1iZXIgb2Yg Ynl0ZXMgaW4gdGhlIGZpZm8uICovCisJcnVudGltZS0+aHcuZmlmb19zaXplID0gdGhyZXNob2xk ICogMzI7CisKKwljb25mMCB8PSBIRE1JX0FIQl9ETUFfQ09ORjBfRU5fSExPQ0s7CisJY29uZjEg PSAoMSA8PCBydW50aW1lLT5jaGFubmVscykgLSAxOworCisJd3JpdGViX3JlbGF4ZWQodGhyZXNo b2xkLCBkdy0+ZGF0YS5iYXNlICsgSERNSV9BSEJfRE1BX1RIUlNMRCk7CisJd3JpdGViX3JlbGF4 ZWQoY29uZjAsIGR3LT5kYXRhLmJhc2UgKyBIRE1JX0FIQl9ETUFfQ09ORjApOworCXdyaXRlYl9y ZWxheGVkKGNvbmYxLCBkdy0+ZGF0YS5iYXNlICsgSERNSV9BSEJfRE1BX0NPTkYxKTsKKworCXN3 aXRjaCAocnVudGltZS0+Zm9ybWF0KSB7CisJY2FzZSBTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9T VUJGUkFNRV9MRToKKwkJZHctPnJlZm9ybWF0ID0gZHdfaGRtaV9yZWZvcm1hdF9pZWM5NTg7CisJ CWJyZWFrOworCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TMjRfTEU6CisJCWR3X2hkbWlfY3JlYXRl X2NzKGR3LCBydW50aW1lKTsKKwkJZHctPnJlZm9ybWF0ID0gZHdfaGRtaV9yZWZvcm1hdF9zMjQ7 CisJCWJyZWFrOworCX0KKwlkdy0+aWVjX29mZnNldCA9IDA7CisJZHctPmNoYW5uZWxzID0gcnVu dGltZS0+Y2hhbm5lbHM7CisJZHctPmJ1Zl9zcmMgID0gcnVudGltZS0+ZG1hX2FyZWE7CisJZHct PmJ1Zl9kc3QgID0gc3Vic3RyZWFtLT5kbWFfYnVmZmVyLmFyZWE7CisJZHctPmJ1Zl9hZGRyID0g c3Vic3RyZWFtLT5kbWFfYnVmZmVyLmFkZHI7CisJZHctPmJ1Zl9wZXJpb2QgPSBzbmRfcGNtX2xp Yl9wZXJpb2RfYnl0ZXMoc3Vic3RyZWFtKTsKKwlkdy0+YnVmX3NpemUgPSBzbmRfcGNtX2xpYl9i dWZmZXJfYnl0ZXMoc3Vic3RyZWFtKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGR3 X2hkbWlfdHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgaW50IGNt ZCkKK3sKKwlzdHJ1Y3Qgc25kX2R3X2hkbWkgKmR3ID0gc3Vic3RyZWFtLT5wcml2YXRlX2RhdGE7 CisJaW50IHJldCA9IDA7CisKKwlzd2l0Y2ggKGNtZCkgeworCWNhc2UgU05EUlZfUENNX1RSSUdH RVJfU1RBUlQ6CisJCWR3LT5idWZfb2Zmc2V0ID0gMDsKKwkJZHctPnN1YnN0cmVhbSA9IHN1YnN0 cmVhbTsKKwkJZHdfaGRtaV9zdGFydF9kbWEoZHcpOworCQlkd19oZG1pX2F1ZGlvX2VuYWJsZShk dy0+ZGF0YS5oZG1pKTsKKwkJc3Vic3RyZWFtLT5ydW50aW1lLT5kZWxheSA9IHN1YnN0cmVhbS0+ cnVudGltZS0+cGVyaW9kX3NpemU7CisJCWJyZWFrOworCisJY2FzZSBTTkRSVl9QQ01fVFJJR0dF Ul9TVE9QOgorCQlkd19oZG1pX3N0b3BfZG1hKGR3KTsKKwkJZHdfaGRtaV9hdWRpb19kaXNhYmxl KGR3LT5kYXRhLmhkbWkpOworCQlicmVhazsKKworCWRlZmF1bHQ6CisJCXJldCA9IC1FSU5WQUw7 CisJCWJyZWFrOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzbmRfcGNtX3VmcmFt ZXNfdCBkd19oZG1pX3BvaW50ZXIoc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0p Cit7CisJc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSA9IHN1YnN0cmVhbS0+cnVudGlt ZTsKKwlzdHJ1Y3Qgc25kX2R3X2hkbWkgKmR3ID0gc3Vic3RyZWFtLT5wcml2YXRlX2RhdGE7CisK KwlyZXR1cm4gYnl0ZXNfdG9fZnJhbWVzKHJ1bnRpbWUsIGR3LT5idWZfb2Zmc2V0KTsKK30KKwor c3RhdGljIHN0cnVjdCBzbmRfcGNtX29wcyBzbmRfZHdfaGRtaV9vcHMgPSB7CisJLm9wZW4gPSBk d19oZG1pX29wZW4sCisJLmNsb3NlID0gZHdfaGRtaV9jbG9zZSwKKwkuaW9jdGwgPSBzbmRfcGNt X2xpYl9pb2N0bCwKKwkuaHdfcGFyYW1zID0gZHdfaGRtaV9od19wYXJhbXMsCisJLmh3X2ZyZWUg PSBkd19oZG1pX2h3X2ZyZWUsCisJLnByZXBhcmUgPSBkd19oZG1pX3ByZXBhcmUsCisJLnRyaWdn ZXIgPSBkd19oZG1pX3RyaWdnZXIsCisJLnBvaW50ZXIgPSBkd19oZG1pX3BvaW50ZXIsCisJLnBh Z2UgPSBzbmRfcGNtX2xpYl9nZXRfdm1hbGxvY19wYWdlLAorfTsKKworc3RhdGljIGludCBzbmRf ZHdfaGRtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWNvbnN0IHN0 cnVjdCBkd19oZG1pX2F1ZGlvX2RhdGEgKmRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsK KwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBwZGV2LT5kZXYucGFyZW50OworCXN0cnVjdCBzbmRfZHdf aGRtaSAqZHc7CisJc3RydWN0IHNuZF9jYXJkICpjYXJkOworCXN0cnVjdCBzbmRfcGNtICpwY207 CisJdW5zaWduZWQgcmV2aXNpb247CisJaW50IHJldDsKKworCXdyaXRlYl9yZWxheGVkKEhETUlf SUhfTVVURV9BSEJETUFBVURfU1RBVDBfQUxMLAorCQkgICAgICAgZGF0YS0+YmFzZSArIEhETUlf SUhfTVVURV9BSEJETUFBVURfU1RBVDApOworCXJldmlzaW9uID0gcmVhZGJfcmVsYXhlZChkYXRh LT5iYXNlICsgSERNSV9SRVZJU0lPTl9JRCk7CisJaWYgKHJldmlzaW9uICE9IDB4MGEgJiYgcmV2 aXNpb24gIT0gMHgxYSkgeworCQlkZXZfZXJyKGRldiwgImR3LWhkbWktYXVkaW86IHVua25vd24g cmV2aXNpb24gMHglMDJ4XG4iLAorCQkJcmV2aXNpb24pOworCQlyZXR1cm4gLUVOWElPOworCX0K KworCXJldCA9IHNuZF9jYXJkX25ldyhkZXYsIFNORFJWX0RFRkFVTFRfSURYMSwgU05EUlZfREVG QVVMVF9TVFIxLAorCQkJICAgICAgVEhJU19NT0RVTEUsIHNpemVvZihzdHJ1Y3Qgc25kX2R3X2hk bWkpLCAmY2FyZCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlzdHJsY3B5KGNh cmQtPmRyaXZlciwgRFJJVkVSX05BTUUsIHNpemVvZihjYXJkLT5kcml2ZXIpKTsKKwlzdHJsY3B5 KGNhcmQtPnNob3J0bmFtZSwgIkRXLUhETUkiLCBzaXplb2YoY2FyZC0+c2hvcnRuYW1lKSk7CisJ c25wcmludGYoY2FyZC0+bG9uZ25hbWUsIHNpemVvZihjYXJkLT5sb25nbmFtZSksCisJCSAiJXMg cmV2IDB4JTAyeCwgaXJxICVkIiwgY2FyZC0+c2hvcnRuYW1lLCByZXZpc2lvbiwKKwkJIGRhdGEt PmlycSk7CisKKwlkdyA9IGNhcmQtPnByaXZhdGVfZGF0YTsKKwlkdy0+Y2FyZCA9IGNhcmQ7CisJ ZHctPmRhdGEgPSAqZGF0YTsKKwlkdy0+cmV2aXNpb24gPSByZXZpc2lvbjsKKworCXJldCA9IHNu ZF9wY21fbmV3KGNhcmQsICJEVyBIRE1JIiwgMCwgMSwgMCwgJnBjbSk7CisJaWYgKHJldCA8IDAp CisJCWdvdG8gZXJyOworCisJZHctPnBjbSA9IHBjbTsKKwlwY20tPnByaXZhdGVfZGF0YSA9IGR3 OworCXN0cmxjcHkocGNtLT5uYW1lLCBEUklWRVJfTkFNRSwgc2l6ZW9mKHBjbS0+bmFtZSkpOwor CXNuZF9wY21fc2V0X29wcyhwY20sIFNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0ssICZzbmRfZHdf aGRtaV9vcHMpOworCisJc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXNfZm9yX2FsbChwY20s IFNORFJWX0RNQV9UWVBFX0RFViwKKwkJCWRldiwgNjQgKiAxMDI0LCA2NCAqIDEwMjQpOworCisJ cmV0ID0gc25kX2NhcmRfcmVnaXN0ZXIoY2FyZCk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJy OworCisJcGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZHcpOworCisJcmV0dXJuIDA7CisKK2Vy cjoKKwlzbmRfY2FyZF9mcmVlKGNhcmQpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQg c25kX2R3X2hkbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3Ry dWN0IHNuZF9kd19oZG1pICpkdyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJc25k X2NhcmRfZnJlZShkdy0+Y2FyZCk7CisKKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIENPTkZJR19Q TV9TTEVFUAorc3RhdGljIGludCBzbmRfZHdfaGRtaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRl dikKK3sKKwlzdHJ1Y3Qgc25kX2R3X2hkbWkgKmR3ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisK KwlzbmRfcG93ZXJfY2hhbmdlX3N0YXRlKGR3LT5jYXJkLCBTTkRSVl9DVExfUE9XRVJfRDNjb2xk KTsKKwlzbmRfcGNtX3N1c3BlbmRfYWxsKGR3LT5wY20pOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgc25kX2R3X2hkbWlfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1 Y3Qgc25kX2R3X2hkbWkgKmR3ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwlzbmRfcG93ZXJf Y2hhbmdlX3N0YXRlKGR3LT5jYXJkLCBTTkRSVl9DVExfUE9XRVJfRDApOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhzbmRfZHdfaGRtaV9wbSwgc25kX2R3X2hk bWlfc3VzcGVuZCwKKwkJCSBzbmRfZHdfaGRtaV9yZXN1bWUpOworI2RlZmluZSBQTV9PUFMgJnNu ZF9kd19oZG1pX3BtCisjZWxzZQorI2RlZmluZSBQTV9PUFMgTlVMTAorI2VuZGlmCisKK3N0YXRp YyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNuZF9kd19oZG1pX2RyaXZlciA9IHsKKwkucHJvYmUJ PSBzbmRfZHdfaGRtaV9wcm9iZSwKKwkucmVtb3ZlCT0gc25kX2R3X2hkbWlfcmVtb3ZlLAorCS5k cml2ZXIJPSB7CisJCS5uYW1lID0gRFJJVkVSX05BTUUsCisJCS5vd25lciA9IFRISVNfTU9EVUxF LAorCQkucG0gPSBQTV9PUFMsCisJfSwKK307CisKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc25k X2R3X2hkbWlfZHJpdmVyKTsKKworTU9EVUxFX0FVVEhPUigiUnVzc2VsbCBLaW5nIDxybWsra2Vy bmVsQGFybS5saW51eC5vcmcudWs+Iik7CitNT0RVTEVfREVTQ1JJUFRJT04oIlN5bm9wc2lzIERl c2lnbndhcmUgSERNSSBBSEIgQUxTQSBpbnRlcmZhY2UiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwg djIiKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06IiBEUklWRVJfTkFNRSk7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWktYXVkaW8uaCBiL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvZHdfaGRtaS1hdWRpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMWU4NDAxMThkOTBhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9kd19oZG1pLWF1ZGlvLmgKQEAgLTAsMCArMSwxMyBAQAorI2lmbmRlZiBEV19IRE1J X0FVRElPX0gKKyNkZWZpbmUgRFdfSERNSV9BVURJT19ICisKK3N0cnVjdCBkd19oZG1pOworCitz dHJ1Y3QgZHdfaGRtaV9hdWRpb19kYXRhIHsKKwlwaHlzX2FkZHJfdCBwaHlzOworCXZvaWQgX19p b21lbSAqYmFzZTsKKwlpbnQgaXJxOworCXN0cnVjdCBkd19oZG1pICpoZG1pOworfTsKKworI2Vu ZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuYyBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvZHdfaGRtaS5jCmluZGV4IGZiYTI1NjA3ZWY4OC4uYjY1NDY0Nzg5 ZmJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1 ZGUgPGRybS9icmlkZ2UvZHdfaGRtaS5oPgogCiAjaW5jbHVkZSAiZHdfaGRtaS5oIgorI2luY2x1 ZGUgImR3X2hkbWktYXVkaW8uaCIKIAogI2RlZmluZSBIRE1JX0VESURfTEVOCQk1MTIKIApAQCAt MTA0LDYgKzEwNSw3IEBAIHN0cnVjdCBkd19oZG1pIHsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXI7CiAJc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZTsKIAorCXN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKmF1ZGlvOwogCWVudW0gZHdfaGRtaV9kZXZ0eXBlIGRldl90eXBlOwogCXN0cnVjdCBk ZXZpY2UgKmRldjsKIAlzdHJ1Y3QgY2xrICppc2ZyX2NsazsKQEAgLTE3MzIsNyArMTczNCw5IEBA IGludCBkd19oZG1pX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0 ZXIsCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRhdGE7CiAJc3RydWN0IGRldmljZV9u b2RlICpucCA9IGRldi0+b2Zfbm9kZTsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlX2luZm8gcGRl dmluZm87CiAJc3RydWN0IGRldmljZV9ub2RlICpkZGNfbm9kZTsKKwlzdHJ1Y3QgZHdfaGRtaV9h dWRpb19kYXRhIGF1ZGlvOwogCXN0cnVjdCBkd19oZG1pICpoZG1pOwogCWludCByZXQ7CiAJdTMy IHZhbCA9IDE7CkBAIC0xODYwLDYgKzE4NjQsMjMgQEAgaW50IGR3X2hkbWlfYmluZChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKIAloZG1pX3dyaXRlYihoZG1pLCB+ KEhETUlfSUhfUEhZX1NUQVQwX0hQRCB8IEhETUlfSUhfUEhZX1NUQVQwX1JYX1NFTlNFKSwKIAkJ ICAgIEhETUlfSUhfTVVURV9QSFlfU1RBVDApOwogCisJbWVtc2V0KCZwZGV2aW5mbywgMCwgc2l6 ZW9mKHBkZXZpbmZvKSk7CisJcGRldmluZm8ucGFyZW50ID0gZGV2OworCXBkZXZpbmZvLmlkID0g UExBVEZPUk1fREVWSURfQVVUTzsKKworCWlmIChoZG1pX3JlYWRiKGhkbWksIEhETUlfQ09ORklH MV9JRCkgJiBIRE1JX0NPTkZJRzFfQUhCKSB7CisJCWF1ZGlvLnBoeXMgPSBpb3Jlcy0+c3RhcnQ7 CisJCWF1ZGlvLmJhc2UgPSBoZG1pLT5yZWdzOworCQlhdWRpby5pcnEgPSBpcnE7CisJCWF1ZGlv LmhkbWkgPSBoZG1pOworCisJCXBkZXZpbmZvLm5hbWUgPSAiZHctaGRtaS1haGItYXVkaW8iOwor CQlwZGV2aW5mby5kYXRhID0gJmF1ZGlvOworCQlwZGV2aW5mby5zaXplX2RhdGEgPSBzaXplb2Yo YXVkaW8pOworCQlwZGV2aW5mby5kbWFfbWFzayA9IERNQV9CSVRfTUFTSygzMik7CisJCWhkbWkt PmF1ZGlvID0gcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyX2Z1bGwoJnBkZXZpbmZvKTsKKwl9CisK IAlkZXZfc2V0X2RydmRhdGEoZGV2LCBoZG1pKTsKIAogCXJldHVybiAwOwpAQCAtMTg3Nyw2ICsx ODk4LDkgQEAgdm9pZCBkd19oZG1pX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBk ZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHdfaGRtaSAqaGRtaSA9IGRl dl9nZXRfZHJ2ZGF0YShkZXYpOwogCisJaWYgKGhkbWktPmF1ZGlvICYmICFJU19FUlIoaGRtaS0+ YXVkaW8pKQorCQlwbGF0Zm9ybV9kZXZpY2VfdW5yZWdpc3RlcihoZG1pLT5hdWRpbyk7CisKIAkv KiBEaXNhYmxlIGFsbCBpbnRlcnJ1cHRzICovCiAJaGRtaV93cml0ZWIoaGRtaSwgfjAsIEhETUlf SUhfTVVURV9QSFlfU1RBVDApOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2R3X2hkbWkuaCBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfaGRtaS5oCmluZGV4IDE3NWRi Yzg5YTgyNC4uNzhlNTRlODEzMjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2R3X2hkbWkuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuaApAQCAtNTQ1 LDYgKzU0NSw5IEBACiAjZGVmaW5lIEhETUlfSTJDTV9GU19TQ0xfTENOVF8wX0FERFIgICAgICAg ICAgICAweDdFMTIKIAogZW51bSB7CisvKiBDT05GSUcxX0lEIGZpZWxkIHZhbHVlcyAqLworCUhE TUlfQ09ORklHMV9BSEIgPSAweDAxLAorCiAvKiBJSF9GQ19JTlQyIGZpZWxkIHZhbHVlcyAqLwog CUhETUlfSUhfRkNfSU5UMl9PVkVSRkxPV19NQVNLID0gMHgwMywKIAlIRE1JX0lIX0ZDX0lOVDJf TE9XX1BSSU9SSVRZX09WRVJGTE9XID0gMHgwMiwKLS0gCjIuMS4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=