From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian Starkey Subject: [RFC PATCH 11/11] drm: mali-dp: Add writeback connector Date: Tue, 11 Oct 2016 15:54:08 +0100 Message-ID: <1476197648-24918-12-git-send-email-brian.starkey@arm.com> References: <1476197648-24918-1-git-send-email-brian.starkey@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from foss.arm.com (foss.arm.com [217.140.101.70]) by gabe.freedesktop.org (Postfix) with ESMTP id F09B36E6AF for ; Tue, 11 Oct 2016 14:54:34 +0000 (UTC) In-Reply-To: <1476197648-24918-1-git-send-email-brian.starkey@arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: liviu.dudau@arm.com, linux-kernel@vger.kernel.org, hverkuil@xs4all.nl, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org TWFsaS1EUCBoYXMgYSBtZW1vcnkgd3JpdGViYWNrIGVuZ2luZSB3aGljaCBjYW4gYmUgdXNlZCB0 byB3cml0ZSB0aGUKY29tcG9zaXRpb24gcmVzdWx0IHRvIGEgbWVtb3J5IGJ1ZmZlci4KRXhwb3Nl IHRoaXMgZnVuY3Rpb25hbGl0eSBhcyBhIERSTSB3cml0ZWJhY2sgY29ubmVjdG9yIG9uIHN1cHBv cnRlZApoYXJkd2FyZS4KClNpZ25lZC1vZmYtYnk6IEJyaWFuIFN0YXJrZXkgPGJyaWFuLnN0YXJr ZXlAYXJtLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vYXJtL01ha2VmaWxlICAgICAgfCAgICAx ICsKIGRyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2NydGMuYyB8ICAgMTAgKysKIGRyaXZlcnMv Z3B1L2RybS9hcm0vbWFsaWRwX2Rydi5jICB8ICAgMjUgKysrLQogZHJpdmVycy9ncHUvZHJtL2Fy bS9tYWxpZHBfZHJ2LmggIHwgICAgNSArCiBkcml2ZXJzL2dwdS9kcm0vYXJtL21hbGlkcF9tdy5j ICAgfCAgMjY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMg Y2hhbmdlZCwgMzA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfbXcuYwoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL01ha2VmaWxlCmlu ZGV4IGJiOGIxNTguLjNiZjMxZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9NYWtlZmlsZQpAQCAtMSw0ICsxLDUgQEAK IGhkbGNkLXkgOj0gaGRsY2RfZHJ2Lm8gaGRsY2RfY3J0Yy5vCiBvYmotJChDT05GSUdfRFJNX0hE TENEKQkrPSBoZGxjZC5vCiBtYWxpLWRwLXkgOj0gbWFsaWRwX2Rydi5vIG1hbGlkcF9ody5vIG1h bGlkcF9wbGFuZXMubyBtYWxpZHBfY3J0Yy5vCittYWxpLWRwLXkgKz0gbWFsaWRwX213Lm8KIG9i ai0kKENPTkZJR19EUk1fTUFMSV9ESVNQTEFZKQkrPSBtYWxpLWRwLm8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFs aWRwX2NydGMuYwppbmRleCAwOGU2YTcxLi45OGRkY2VhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYXJtL21hbGlkcF9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBf Y3J0Yy5jCkBAIC02OCw2ICs2OCwxNiBAQCBzdGF0aWMgdm9pZCBtYWxpZHBfY3J0Y19lbmFibGUo c3RydWN0IGRybV9jcnRjICpjcnRjKQogCWNsa19zZXRfcmF0ZShod2Rldi0+cHhsY2xrLCBjcnRj LT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrICogMTAwMCk7CiAKIAlod2Rldi0+bW9k ZXNldChod2RldiwgJnZtKTsKKwkvKgorCSAqIFdlIHNob3VsZCBhbHdheXMgZGlzYWJsZSB0aGUg bWVtb3J5IHdyaXRlIHdoZW4gbGVhdmluZyBjb25maWcgbW9kZSwKKwkgKiBvdGhlcndpc2UgdGhl IGhhcmR3YXJlIHdpbGwgc3RhcnQgd3JpdGluZyByaWdodCBhd2F5IC0gcG9zc2libHkgd2l0aAor CSAqIGEgc3RhbGUgY29uZmlnLCBhbmQgZGVmaW5pdGVseSBiZWZvcmUgd2UndmUgaGFkIGEgY2hh bmNlIHRvIGNvbmZpZ3VyZQorCSAqIHRoZSBwbGFuZXMuCisJICogSWYgdGhlIG1lbW9yeSB3cml0 ZSBuZWVkcyB0byBiZSBlbmFibGVkLCB0aGF0IHdpbGwgZ2V0IHRha2VuIGNhcmUKKwkgKiBvZiBs YXRlciBkdXJpbmcgdGhlIGF0b21pYyBjb21taXQKKwkgKi8KKwlpZiAoaHdkZXYtPmRpc2FibGVf bWVtd3JpdGUpCisJCWh3ZGV2LT5kaXNhYmxlX21lbXdyaXRlKGh3ZGV2KTsKIAlod2Rldi0+bGVh dmVfY29uZmlnX21vZGUoaHdkZXYpOwogCWRybV9jcnRjX3ZibGFua19vbihjcnRjKTsKIH0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5jIGIvZHJpdmVycy9ncHUv ZHJtL2FybS9tYWxpZHBfZHJ2LmMKaW5kZXggNjJhMjlmNi4uZTIwMjY2ZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Fy bS9tYWxpZHBfZHJ2LmMKQEAgLTkxLDcgKzkxLDE2IEBAIHN0YXRpYyB2b2lkIG1hbGlkcF9hdG9t aWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCXN0cnVjdCBk cm1fZGV2aWNlICpkcm0gPSBzdGF0ZS0+ZGV2OwogCiAJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0 X21vZGVzZXRfZGlzYWJsZXMoZHJtLCBzdGF0ZSk7CisKIAlkcm1fYXRvbWljX2hlbHBlcl9jb21t aXRfbW9kZXNldF9lbmFibGVzKGRybSwgc3RhdGUpOworCisJLyoKKwkgKiBUaGUgb3JkZXIgaGVy ZSBpcyBpbXBvcnRhbnQuIFdlIG11c3QgY29uZmlndXJlIG1lbW9yeS13cml0ZSBhZnRlcgorCSAq IHRoZSBDUlRDIGlzIGFscmVhZHkgZW5hYmxlZCwgc28gdGhhdCBpdHMgY29uZmlndXJhdGlvbiB1 cGRhdGUgaXMKKwkgKiBnYXRlZCBvbiB0aGUgbmV4dCBDVkFMLgorCSAqLworCW1hbGlkcF9td19h dG9taWNfY29tbWl0KGRybSwgc3RhdGUpOworCiAJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3Bs YW5lcyhkcm0sIHN0YXRlLAogCQkJCQlEUk1fUExBTkVfQ09NTUlUX0FDVElWRV9PTkxZKTsKIApA QCAtMTQ4LDEyICsxNTcsMjAgQEAgc3RhdGljIGludCBtYWxpZHBfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtKQogCWRybS0+bW9kZV9jb25maWcuaGVscGVyX3ByaXZhdGUgPSAmbWFsaWRwX21v ZGVfY29uZmlnX2hlbHBlcnM7CiAKIAlyZXQgPSBtYWxpZHBfY3J0Y19pbml0KGRybSk7Ci0JaWYg KHJldCkgewotCQlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOwotCQlyZXR1cm4gcmV0Owot CX0KKwlpZiAocmV0KQorCQlnb3RvIGNydGNfZmFpbDsKKworCXJldCA9IG1hbGlkcF9td19jb25u ZWN0b3JfaW5pdChkcm0pOworCWlmIChyZXQpCisJCWdvdG8gbXdfZmFpbDsKIAogCXJldHVybiAw OworCittd19mYWlsOgorCW1hbGlkcF9kZV9wbGFuZXNfZGVzdHJveShkcm0pOworY3J0Y19mYWls OgorCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7CisJcmV0dXJuIHJldDsKIH0KIAogc3Rh dGljIHZvaWQgbWFsaWRwX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9t YWxpZHBfZHJ2LmgKaW5kZXggOWZjOGEyZS4uOTA1YzEwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FybS9tYWxpZHBfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBf ZHJ2LmgKQEAgLTIyLDYgKzIyLDggQEAgc3RydWN0IG1hbGlkcF9kcm0gewogCXN0cnVjdCBkcm1f ZmJkZXZfY21hICpmYmRldjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGV2ZW50X2xpc3Q7CiAJc3RydWN0 IGRybV9jcnRjIGNydGM7CisJc3RydWN0IGRybV9lbmNvZGVyIG13X2VuY29kZXI7CisJc3RydWN0 IGRybV9jb25uZWN0b3IgbXdfY29ubmVjdG9yOwogCXdhaXRfcXVldWVfaGVhZF90IHdxOwogCWF0 b21pY190IGNvbmZpZ192YWxpZDsKIH07CkBAIC01MCw2ICs1Miw5IEBAIHN0cnVjdCBtYWxpZHBf cGxhbmVfc3RhdGUgewogaW50IG1hbGlkcF9kZV9wbGFuZXNfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtKTsKIHZvaWQgbWFsaWRwX2RlX3BsYW5lc19kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNl ICpkcm0pOwogaW50IG1hbGlkcF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSk7Citp bnQgbWFsaWRwX213X2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkcm0pOwordm9p ZCBtYWxpZHBfbXdfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAorCQkJICAg ICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKTsKIAogLyogb2Z0ZW4gdXNlZCBj b21iaW5hdGlvbiBvZiByb3RhdGlvbmFsIGJpdHMgKi8KICNkZWZpbmUgTUFMSURQX1JPVEFURURf TUFTSwkoRFJNX1JPVEFURV85MCB8IERSTV9ST1RBVEVfMjcwKQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FybS9tYWxpZHBfbXcuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX213 LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJkZjNmZAotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX213LmMKQEAgLTAsMCArMSwyNjgg QEAKKy8qCisgKiAoQykgQ09QWVJJR0hUIDIwMTYgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCisgKiBBdXRob3I6IEJyaWFuIFN0YXJrZXkgPGJyaWFuLnN0YXJrZXlAYXJtLmNvbT4K KyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZSBhbmQgaXMgcHJvdmlkZWQgdG8g eW91IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRp b24sIGFuZCBhbnkgdXNlIGJ5IHlvdSBvZiB0aGlzIHByb2dyYW0gaXMgc3ViamVjdCB0byB0aGUg dGVybXMKKyAqIG9mIHN1Y2ggR05VIGxpY2VuY2UuCisgKgorICogQVJNIE1hbGkgRFAgV3JpdGVi YWNrIGNvbm5lY3RvciBpbXBsZW1lbnRhdGlvbgorICovCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgor I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0 Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRl IDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CisKKyNpbmNsdWRlICJtYWxpZHBfZHJ2LmgiCisj aW5jbHVkZSAibWFsaWRwX2h3LmgiCisKKyNkZWZpbmUgbXdfY29ubl90b19tYWxpZHBfZGV2aWNl KHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgbWFsaWRwX2RybSwgbXdfY29ubmVjdG9yKQorI2Rl ZmluZSB0b19td19zdGF0ZShfc3RhdGUpIChzdHJ1Y3QgbWFsaWRwX213X2Nvbm5lY3Rvcl9zdGF0 ZSAqKShfc3RhdGUpCisKK3N0cnVjdCBtYWxpZHBfbXdfY29ubmVjdG9yX3N0YXRlIHsKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSBiYXNlOworCWRtYV9hZGRyX3QgYWRkcnNbMl07CisJczMy IHBpdGNoZXNbMl07CisJdTggZm9ybWF0OworCXU4IG5fcGxhbmVzOworCXU4IGNydGNfYWN0aXZl OjE7Cit9OworCitzdGF0aWMgaW50IG1hbGlkcF9td19jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNvbm5lY3Rvci0+ZGV2OworCisJcmV0dXJuIGRybV9hZGRfbW9kZXNfbm9lZGlkKGNvbm5lY3Rv ciwgZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGgsCisJCQkJICAgIGRldi0+bW9kZV9jb25maWcu bWF4X2hlaWdodCk7Cit9CisKK3N0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cworbWFsaWRwX213 X2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJ CQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2OworCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKm1v ZGVfY29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7CisJaW50IHcgPSBtb2RlLT5oZGlzcGxheSwg aCA9IG1vZGUtPnZkaXNwbGF5OworCisJaWYgKCh3IDwgbW9kZV9jb25maWctPm1pbl93aWR0aCkg fHwgKHcgPiBtb2RlX2NvbmZpZy0+bWF4X3dpZHRoKSkKKwkJcmV0dXJuIE1PREVfQkFEX0hWQUxV RTsKKworCWlmICgoaCA8IG1vZGVfY29uZmlnLT5taW5faGVpZ2h0KSB8fCAoaCA+IG1vZGVfY29u ZmlnLT5tYXhfaGVpZ2h0KSkKKwkJcmV0dXJuIE1PREVfQkFEX1ZWQUxVRTsKKworCXJldHVybiBN T0RFX09LOworfQorCitjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgbWFs aWRwX213X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CisJLmdldF9tb2RlcyA9IG1hbGlkcF9t d19jb25uZWN0b3JfZ2V0X21vZGVzLAorCS5tb2RlX3ZhbGlkID0gbWFsaWRwX213X2Nvbm5lY3Rv cl9tb2RlX3ZhbGlkLAorfTsKKworc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKK21h bGlkcF9td19jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is IGJvb2wgZm9yY2UpCit7CisJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOworfQor CitzdGF0aWMgdm9pZCBtYWxpZHBfbXdfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsK K30KKworc3RhdGljIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICoKK21hbGlkcF9td19jb25u ZWN0b3JfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7 CisJc3RydWN0IG1hbGlkcF9td19jb25uZWN0b3Jfc3RhdGUgKm13X3N0YXRlLCAqb2xkX3N0YXRl OworCisJaWYgKFdBUk5fT04oIWNvbm5lY3Rvci0+c3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKKwor CW13X3N0YXRlID0ga21hbGxvYyhzaXplb2YoKm13X3N0YXRlKSwgR0ZQX0tFUk5FTCk7CisJaWYg KCFtd19zdGF0ZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlvbGRfc3RhdGUgPSAoc3RydWN0IG1hbGlk cF9td19jb25uZWN0b3Jfc3RhdGUgKiljb25uZWN0b3ItPnN0YXRlOworCW1lbWNweShtd19zdGF0 ZSwgb2xkX3N0YXRlLCBzaXplb2YoKm13X3N0YXRlKSk7CisJLyoKKwkgKiBUaGlzIGR1cGxpY2F0 ZXMgYSBsaXR0bGUgbWVtY3B5LCBidXQgaXQgZW5zdXJlcyB3ZSBzdGlsbCBkbyB0aGUKKwkgKiBy aWdodCB0aGluZyBpZiBkcm1fY29ubmVjdG9yX3N0YXRlIGNoYW5nZXMKKwkgKi8KKwlfX2RybV9h dG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUoY29ubmVjdG9yLCAmbXdfc3Rh dGUtPmJhc2UpOworCisJcmV0dXJuICZtd19zdGF0ZS0+YmFzZTsKK30KKworc3RhdGljIHZvaWQg bWFsaWRwX213X2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsCisJCQkJCSAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSkK K3sKKwlzdHJ1Y3QgbWFsaWRwX213X2Nvbm5lY3Rvcl9zdGF0ZSAqbXdfc3RhdGUgPQorCQkoc3Ry dWN0IG1hbGlkcF9td19jb25uZWN0b3Jfc3RhdGUgKilzdGF0ZTsKKworCV9fZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUoJm13X3N0YXRlLT5iYXNlKTsKKwlrZnJlZSht d19zdGF0ZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBt YWxpZHBfbXdfY29ubmVjdG9yX2Z1bmNzID0geworCS5kcG1zID0gZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2RwbXMsCisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jl c2V0LAorCS5kZXRlY3QgPSBtYWxpZHBfbXdfY29ubmVjdG9yX2RldGVjdCwKKwkuZmlsbF9tb2Rl cyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKKwkuZGVzdHJveSA9 IG1hbGlkcF9td19jb25uZWN0b3JfZGVzdHJveSwKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9 IG1hbGlkcF9td19jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9z dGF0ZSA9IG1hbGlkcF9td19jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRpYyBp bnQKK21hbGlkcF9td19lbmNvZGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIsCisJCQkgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJ ICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQoreworCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uID0gY29ubl9zdGF0ZS0+Y29ubmVjdG9yOworCXN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gY29ubl9zdGF0ZS0+ZmI7CisJc3RydWN0IG1hbGlkcF9kcm0g Km1hbGlkcCA9IG13X2Nvbm5fdG9fbWFsaWRwX2RldmljZShjb25uKTsKKwlzdHJ1Y3QgbWFsaWRw X213X2Nvbm5lY3Rvcl9zdGF0ZSAqbXdfc3RhdGU7CisJaW50IGksIG5fcGxhbmVzOworCisJbXdf c3RhdGUgPSAoc3RydWN0IG1hbGlkcF9td19jb25uZWN0b3Jfc3RhdGUgKiljb25uX3N0YXRlOwor CW13X3N0YXRlLT5jcnRjX2FjdGl2ZSA9IGNydGNfc3RhdGUtPmFjdGl2ZTsKKworCWlmICghY29u bl9zdGF0ZS0+ZmIpCisJCXJldHVybiAwOworCisJaWYgKChmYi0+d2lkdGggIT0gY3J0Y19zdGF0 ZS0+bW9kZS5oZGlzcGxheSkgfHwKKwkgICAgKGZiLT5oZWlnaHQgIT0gY3J0Y19zdGF0ZS0+bW9k ZS52ZGlzcGxheSkpIHsKKwkJRFJNX0RFQlVHX0tNUygiSW52YWxpZCBmcmFtZWJ1ZmZlciBzaXpl ICV1eCV1XG4iLAorCQkJCWZiLT53aWR0aCwgZmItPmhlaWdodCk7CisJCXJldHVybiAtRUlOVkFM OworCX0KKworCW13X3N0YXRlLT5mb3JtYXQgPQorCQltYWxpZHBfaHdfZ2V0X2Zvcm1hdF9pZCgm bWFsaWRwLT5kZXYtPm1hcCwgU0VfTUVNV1JJVEUsCisJCQkJCWZiLT5waXhlbF9mb3JtYXQpOwor CWlmIChtd19zdGF0ZS0+Zm9ybWF0ID09IE1BTElEUF9JTlZBTElEX0ZPUk1BVF9JRCkgeworCQlj aGFyICpmb3JtYXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUoZmItPnBpeGVsX2Zvcm1hdCk7 CisJCURSTV9ERUJVR19LTVMoIkludmFsaWQgcGl4ZWwgZm9ybWF0ICVzXG4iLCBmb3JtYXRfbmFt ZSk7CisJCWtmcmVlKGZvcm1hdF9uYW1lKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJbl9w bGFuZXMgPSBkcm1fZm9ybWF0X251bV9wbGFuZXMoZmItPnBpeGVsX2Zvcm1hdCk7CisJZm9yIChp ID0gMDsgaSA8IG5fcGxhbmVzOyBpKyspIHsKKwkJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAq b2JqID0gZHJtX2ZiX2NtYV9nZXRfZ2VtX29iaihmYiwgaSk7CisJCWlmICghbWFsaWRwX2h3X3Bp dGNoX3ZhbGlkKG1hbGlkcC0+ZGV2LCBmYi0+cGl0Y2hlc1tpXSkpIHsKKwkJCURSTV9ERUJVR19L TVMoIkludmFsaWQgcGl0Y2ggJXUgZm9yIHBsYW5lICVkXG4iLAorCQkJCSAgICAgIGZiLT5waXRj aGVzW2ldLCBpKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJCW13X3N0YXRlLT5waXRjaGVz W2ldID0gZmItPnBpdGNoZXNbaV07CisJCW13X3N0YXRlLT5hZGRyc1tpXSA9IG9iai0+cGFkZHIg KyBmYi0+b2Zmc2V0c1tpXTsKKwl9CisJbXdfc3RhdGUtPm5fcGxhbmVzID0gbl9wbGFuZXM7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJf ZnVuY3MgbWFsaWRwX213X2VuY29kZXJfaGVscGVyX2Z1bmNzID0geworCS5hdG9taWNfY2hlY2sg PSBtYWxpZHBfbXdfZW5jb2Rlcl9hdG9taWNfY2hlY2ssCit9OworCitzdGF0aWMgdm9pZCBtYWxp ZHBfbXdfZW5jb2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlk cm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9lbmNvZGVyX2Z1bmNzIG1hbGlkcF9td19lbmNvZGVyX2Z1bmNzID0geworCS5kZXN0cm95ID0g bWFsaWRwX213X2VuY29kZXJfZGVzdHJveSwKK307CisKK2ludCBtYWxpZHBfbXdfY29ubmVjdG9y X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKK3sKKwlzdHJ1Y3QgbWFsaWRwX2RybSAqbWFs aWRwID0gZHJtLT5kZXZfcHJpdmF0ZTsKKwljb25zdCBzdHJ1Y3QgbWFsaWRwX2h3X3JlZ21hcCAq bWFwID0gJm1hbGlkcC0+ZGV2LT5tYXA7CisJdTMyICpmb3JtYXRzOworCWludCByZXQsIG4sIGk7 CisKKwlpZiAoIW1hbGlkcC0+ZGV2LT5lbmFibGVfbWVtd3JpdGUpCisJCXJldHVybiAwOworCisJ cmV0ID0gZHJtX21vZGVfY3JlYXRlX3dyaXRlYmFja19jb25uZWN0b3JfcHJvcGVydGllcyhkcm0p OworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKCZt YWxpZHAtPm13X2VuY29kZXIsICZtYWxpZHBfbXdfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOworCW1h bGlkcC0+bXdfZW5jb2Rlci5wb3NzaWJsZV9jcnRjcyA9IDEgPDwgZHJtX2NydGNfaW5kZXgoJm1h bGlkcC0+Y3J0Yyk7CisJcmV0ID0gZHJtX2VuY29kZXJfaW5pdChkcm0sICZtYWxpZHAtPm13X2Vu Y29kZXIsICZtYWxpZHBfbXdfZW5jb2Rlcl9mdW5jcywKKwkJCSAgICAgICBEUk1fTU9ERV9FTkNP REVSX1ZJUlRVQUwsIE5VTEwpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlkcm1fY29u bmVjdG9yX2hlbHBlcl9hZGQoJm1hbGlkcC0+bXdfY29ubmVjdG9yLAorCQkJCSAmbWFsaWRwX213 X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOworCW1hbGlkcC0+bXdfY29ubmVjdG9yLmludGVybGFj ZV9hbGxvd2VkID0gMDsKKwlyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZHJtLCAmbWFsaWRwLT5t d19jb25uZWN0b3IsCisJCQkJICZtYWxpZHBfbXdfY29ubmVjdG9yX2Z1bmNzLAorCQkJCSBEUk1f TU9ERV9DT05ORUNUT1JfV1JJVEVCQUNLKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9lbmNvZGVy OworCisJcmV0ID0gZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZtYWxpZHAtPm13 X2Nvbm5lY3RvciwKKwkJCQkJCSZtYWxpZHAtPm13X2VuY29kZXIpOworCWlmIChyZXQpCisJCWdv dG8gZXJyX2Nvbm5lY3RvcjsKKworCWZvcm1hdHMgPSBrY2FsbG9jKG1hcC0+bl9waXhlbF9mb3Jt YXRzLCBzaXplb2YoKmZvcm1hdHMpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWZvcm1hdHMpCisJCWdv dG8gZXJyX2Nvbm5lY3RvcjsKKworCWZvciAobiA9IDAsIGkgPSAwOyAgaSA8IG1hcC0+bl9waXhl bF9mb3JtYXRzOyBpKyspIHsKKwkJaWYgKG1hcC0+cGl4ZWxfZm9ybWF0c1tpXS5sYXllciAmIFNF X01FTVdSSVRFKQorCQkJZm9ybWF0c1tuKytdID0gbWFwLT5waXhlbF9mb3JtYXRzW2ldLmZvcm1h dDsKKwl9CisKKwlyZXQgPSBkcm1fbW9kZV9jb25uZWN0b3Jfc2V0X3dyaXRlYmFja19mb3JtYXRz KCZtYWxpZHAtPm13X2Nvbm5lY3RvciwKKwkJCQkJCSAgICAgICBmb3JtYXRzLCBuKTsKKwlrZnJl ZShmb3JtYXRzKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9jb25uZWN0b3I7CisKKwlyZXR1cm4g MDsKKworZXJyX2Nvbm5lY3RvcjoKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoJm1hbGlkcC0+bXdf Y29ubmVjdG9yKTsKK2Vycl9lbmNvZGVyOgorCWRybV9lbmNvZGVyX2NsZWFudXAoJm1hbGlkcC0+ bXdfZW5jb2Rlcik7CisJcmV0dXJuIHJldDsKK30KKwordm9pZCBtYWxpZHBfbXdfYXRvbWljX2Nv bW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLAorCQkJICAgICBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqb2xkX3N0YXRlKQoreworCXN0cnVjdCBtYWxpZHBfbXdfY29ubmVjdG9yX3N0YXRlICpt d19zdGF0ZTsKKwlzdHJ1Y3QgbWFsaWRwX2RybSAqbWFsaWRwID0gZHJtLT5kZXZfcHJpdmF0ZTsK KwlzdHJ1Y3QgbWFsaWRwX2h3X2RldmljZSAqaHdkZXYgPSBtYWxpZHAtPmRldjsKKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqbXdfY29ubiA9ICZtYWxpZHAtPm13X2Nvbm5lY3RvcjsKKwlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYjsKKworCW13X3N0YXRlID0gdG9fbXdfc3RhdGUobXdfY29ubi0+ c3RhdGUpOworCWlmICghbXdfc3RhdGUgfHwgIW13X3N0YXRlLT5jcnRjX2FjdGl2ZSkKKwkJcmV0 dXJuOworCisJaWYgKCFtd19zdGF0ZS0+YmFzZS5mYikgeworCQlzdHJ1Y3QgbWFsaWRwX213X2Nv bm5lY3Rvcl9zdGF0ZSAqb2xkX213X3N0YXRlOworCQlvbGRfbXdfc3RhdGUgPSB0b19td19zdGF0 ZShkcm1fYXRvbWljX2dldF9leGlzdGluZ19jb25uZWN0b3Jfc3RhdGUob2xkX3N0YXRlLAorCQkJ CQkJCQkJCSAgIG13X2Nvbm4pKTsKKwkJaWYgKG9sZF9td19zdGF0ZSAmJiBvbGRfbXdfc3RhdGUt PmJhc2UuZmIpCisJCQlod2Rldi0+ZGlzYWJsZV9tZW13cml0ZShod2Rldik7CisKKwkJcmV0dXJu OworCX0KKworCWZiID0gbXdfc3RhdGUtPmJhc2UuZmI7CisJaHdkZXYtPmVuYWJsZV9tZW13cml0 ZShod2RldiwgbXdfc3RhdGUtPmFkZHJzLCBtd19zdGF0ZS0+cGl0Y2hlcywKKwkJCSAgICAgICBt d19zdGF0ZS0+bl9wbGFuZXMsIGZiLT53aWR0aCwgZmItPmhlaWdodCwKKwkJCSAgICAgICBtd19z dGF0ZS0+Zm9ybWF0KTsKK30KLS0gCjEuNy45LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=