From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v2 06/15] drm/fbconv: Add mode conversion DRM <-> fbdev Date: Mon, 14 Oct 2019 16:04:07 +0200 Message-ID: <20191014140416.28517-7-tzimmermann@suse.de> References: <20191014140416.28517-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1A32A6E2E8 for ; Mon, 14 Oct 2019 14:04:24 +0000 (UTC) In-Reply-To: <20191014140416.28517-1-tzimmermann@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: airlied@linux.ie, daniel@ffwll.ch, maarten.lankhorst@linux.intel.com, mripard@kernel.org, sean@poorly.run, b.zolnierkie@samsung.com, ajax@redhat.com, ville.syrjala@linux.intel.com, malat@debian.org, michel@daenzer.net Cc: gregkh@linuxfoundation.org, linux-fbdev@vger.kernel.org, Thomas Zimmermann , dri-devel@lists.freedesktop.org, corbet@lwn.net List-Id: dri-devel@lists.freedesktop.org RFJNIHVzZXMgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgdG8gZGVzY3JpYmUgYSBkaXNwbGF5IG1v ZGUuIFRoZQpjb252ZXJzaW9uIGZ1bmN0aW9ucyBmaWxsIGl0IGZyb20gZmJkZXYgZGF0YSBzdHJ1 Y3V0dXJlcywgYW5kIHZpY2UKdmVyc2EuCgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgWmltbWVybWFu biA8dHppbW1lcm1hbm5Ac3VzZS5kZT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiY29udl9o ZWxwZXIuYyB8IDIwMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2RybS9k cm1fZmJjb252X2hlbHBlci5oICAgICB8ICAzMSArKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMzIg aW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJjb252X2hl bHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYmNvbnZfaGVscGVyLmMKaW5kZXggYWY0NTM1 OGExNTZhLi5lNWE1OGEzNjFhZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJj b252X2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJjb252X2hlbHBlci5jCkBA IC01LDYgKzUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CiAKICNpbmNsdWRlIDxkcm0vZHJt X2ZiY29udl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+CiAKIC8qCiAgKiBG b3JtYXQgY29udmVyc2lvbiBoZWxwZXJzCkBAIC00MzQsMyArNDM1LDIwMyBAQCBpbnQgZHJtX2Zi Y29udl91cGRhdGVfZmJfdmFyX3NjcmVlbmluZm9fZnJvbV9mb3JtYXQoCiAJcmV0dXJuIDA7CiB9 CiBFWFBPUlRfU1lNQk9MKGRybV9mYmNvbnZfdXBkYXRlX2ZiX3Zhcl9zY3JlZW5pbmZvX2Zyb21f Zm9ybWF0KTsKKworLyoKKyAqIE1vZGUgY29udmVyc2lvbiBoZWxwZXJzCisgKi8KKworLyoqCisg KiBkcm1fbW9kZV91cGRhdGVfZnJvbV9mYl92aWRlb21vZGUgLSBTZXRzIGEgZHJtX2Rpc3BsYXkg bW9kZSBzdHJ1ZWN0dXJlCisgKglmcm9tIGFuIGZiX3ZpZGVvbW9kZSBzdHJ1Y3R1cmUKKyAqIEBt b2RlOgl0aGUgRFJNIGRpc3BsYXkgbW9kZSBzdHJ1Y3R1cmUgdG8gdXBkYXRlCisgKiBAZmJfbW9k ZToJYW4gZmJfdmlkZW9tb2RlIHN0cnVjdHVyZQorICovCit2b2lkIGRybV9tb2RlX3VwZGF0ZV9m cm9tX2ZiX3ZpZGVvbW9kZShzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkgICAg ICAgY29uc3Qgc3RydWN0IGZiX3ZpZGVvbW9kZSAqZmJfbW9kZSkKK3sKKwltb2RlLT50eXBlID0g RFJNX01PREVfVFlQRV9EUklWRVI7CisKKwltb2RlLT5jbG9jayA9IFBJQ09TMktIWihmYl9tb2Rl LT5waXhjbG9jayk7CisKKwltb2RlLT5oZGlzcGxheSA9IGZiX21vZGUtPnhyZXM7CisJbW9kZS0+ aHN5bmNfc3RhcnQgPSBtb2RlLT5oZGlzcGxheSArIGZiX21vZGUtPnJpZ2h0X21hcmdpbjsKKwlt b2RlLT5oc3luY19lbmQgPSBtb2RlLT5oc3luY19zdGFydCArIGZiX21vZGUtPmhzeW5jX2xlbjsK Kwltb2RlLT5odG90YWwgPSBtb2RlLT5oc3luY19lbmQgKyBmYl9tb2RlLT5sZWZ0X21hcmdpbjsK Kwltb2RlLT5oc2tldyA9IDA7CisKKwltb2RlLT52ZGlzcGxheSA9IGZiX21vZGUtPnlyZXM7CisJ bW9kZS0+dnN5bmNfc3RhcnQgPSBtb2RlLT52ZGlzcGxheSArIGZiX21vZGUtPmxvd2VyX21hcmdp bjsKKwltb2RlLT52c3luY19lbmQgPSBtb2RlLT52c3luY19zdGFydCArIGZiX21vZGUtPnZzeW5j X2xlbjsKKwltb2RlLT52dG90YWwgPSBtb2RlLT52c3luY19lbmQgKyBmYl9tb2RlLT51cHBlcl9t YXJnaW47CisJbW9kZS0+dnNjYW4gPSAwOworCisJbW9kZS0+ZmxhZ3MgPSAwOworCisJaWYgKGZi X21vZGUtPnN5bmMgJiBGQl9TWU5DX0hPUl9ISUdIX0FDVCkKKwkJbW9kZS0+ZmxhZ3MgfD0gRFJN X01PREVfRkxBR19QSFNZTkM7CisJZWxzZQorCQltb2RlLT5mbGFncyB8PSBEUk1fTU9ERV9GTEFH X05IU1lOQzsKKworCWlmIChmYl9tb2RlLT5zeW5jICYgRkJfU1lOQ19WRVJUX0hJR0hfQUNUKQor CQltb2RlLT5mbGFncyB8PSBEUk1fTU9ERV9GTEFHX1BWU1lOQzsKKwllbHNlCisJCW1vZGUtPmZs YWdzIHw9IERSTV9NT0RFX0ZMQUdfTlZTWU5DOworCisJaWYgKGZiX21vZGUtPnN5bmMgJiBGQl9T WU5DX0NPTVBfSElHSF9BQ1QpCisJCW1vZGUtPmZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfQ1NZTkMg fCBEUk1fTU9ERV9GTEFHX1BDU1lOQzsKKworCWlmIChmYl9tb2RlLT52bW9kZSAmIEZCX1ZNT0RF X0lOVEVSTEFDRUQpCisJCW1vZGUtPmZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFOwor CisJaWYgKGZiX21vZGUtPnZtb2RlICYgRkJfVk1PREVfRE9VQkxFKQorCQltb2RlLT5mbGFncyB8 PSBEUk1fTU9ERV9GTEFHX0RCTFNDQU47CisKKwltb2RlLT53aWR0aF9tbSA9IDA7CisJbW9kZS0+ aGVpZ2h0X21tID0gMDsKKworCW1vZGUtPnZyZWZyZXNoID0gZmJfbW9kZS0+cmVmcmVzaDsKKwlt b2RlLT5oc3luYyA9IG1vZGUtPmNsb2NrIC8gbW9kZS0+dnRvdGFsOworCisJLyogZmluYWwgc3Rl cDsgZGVwZW5kcyBvbiBwcmV2aW91cyBzZXR1cCAqLworCWlmIChmYl9tb2RlLT5uYW1lKSB7CisJ CXN0cm5jcHkobW9kZS0+bmFtZSwgZmJfbW9kZS0+bmFtZSwgc2l6ZW9mKG1vZGUtPm5hbWUpIC0g MSk7CisJCW1vZGUtPm5hbWVbc2l6ZW9mKG1vZGUtPm5hbWUpIC0gMV0gPSAnXDAnOworCX0gZWxz ZSB7CisJCWRybV9tb2RlX3NldF9uYW1lKG1vZGUpOworCX0KK30KK0VYUE9SVF9TWU1CT0woZHJt X21vZGVfdXBkYXRlX2Zyb21fZmJfdmlkZW9tb2RlKTsKKworLyoqCisgKiBkcm1fbW9kZV91cGRh dGVfZnJvbV9mYl92YXJfc2NyZWVuaW5mbyAtIFNldHMgYSBkcm1fZGlzcGxheSBtb2RlIHN0cnVj dHVyZQorICoJZnJvbSBhbiBmYl92YXJfc2NyZWVubW9kZSBzdHJ1Y3R1cmUKKyAqIEBtb2RlOgl0 aGUgRFJNIGRpc3BsYXkgbW9kZSBzdHJ1Y3R1cmUgdG8gdXBkYXRlCisgKiBAZmJfdmFyOglhbiBm Yl92YXJfc2NyZWVuaW5mbyBzdHJ1Y3R1cmUKKyAqLwordm9pZCBkcm1fbW9kZV91cGRhdGVfZnJv bV9mYl92YXJfc2NyZWVuaW5mbygKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwgY29u c3Qgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICpmYl92YXIpCit7CisJc3RydWN0IGZiX3ZpZGVv bW9kZSBmYl9tb2RlOworCisJZmJfdmFyX3RvX3ZpZGVvbW9kZSgmZmJfbW9kZSwgZmJfdmFyKTsK Kwlkcm1fbW9kZV91cGRhdGVfZnJvbV9mYl92aWRlb21vZGUobW9kZSwgJmZiX21vZGUpOworfQor RVhQT1JUX1NZTUJPTChkcm1fbW9kZV91cGRhdGVfZnJvbV9mYl92YXJfc2NyZWVuaW5mbyk7CisK Ky8qKgorICogZHJtX21vZGVfY3JlYXRlX2Zyb21fZmJfdmlkZW9tb2RlIC0gQ3JlYXRlcyBhIGRy bV9kaXNwbGF5IG1vZGUgc3RydWN0dXJlCisgKglmcm9tIGFuIGZiX3ZpZGVvbW9kZSBzdHJ1Y3R1 cmUKKyAqIEBkZXY6CXRoZSBuZXcgbW9kZSdzIERSTSBkZXZpY2UKKyAqIEBmYl9tb2RlOglhbiBm Yl92aWRlb21vZGUgc3RydWN0dXJlCisgKiBSZXR1cm5zOgorICoJQSBuZXdseSBhbGxvY2F0ZWQg RFJNIGRpc3BsYXkgbW9kZSBzdHJ1Y3R1cmUgb24gc3VjY2Vzcywgb3IKKyAqCU5VTEwgb3RoZXJ3 aXNlCisgKi8KK3N0cnVjdCBkcm1fZGlzcGxheV9tb2RlICogZHJtX21vZGVfY3JlYXRlX2Zyb21f ZmJfdmlkZW9tb2RlKAorCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBmYl92 aWRlb21vZGUgKmZiX21vZGUpCit7CisJLyogY2xlYXJlZCB0byAnMCcgKi8KKwlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZTsKKworCW1vZGUgPSBkcm1fbW9kZV9jcmVhdGUoZGV2KTsKKwlp ZiAoIW1vZGUpCisJCXJldHVybiBOVUxMOworCisJZHJtX21vZGVfdXBkYXRlX2Zyb21fZmJfdmlk ZW9tb2RlKG1vZGUsIGZiX21vZGUpOworCisJcmV0dXJuIG1vZGU7Cit9CitFWFBPUlRfU1lNQk9M KGRybV9tb2RlX2NyZWF0ZV9mcm9tX2ZiX3ZpZGVvbW9kZSk7CisKKy8qKgorICogZHJtX2ZiY29u dl91cGRhdGVfZmJfdmlkZW9tb2RlX2Zyb21fbW9kZSAtIHVwZGF0ZXMgYW4gZmJfdmlkZW9tb2Rl CisgKglzdHJ1Y3R1cmUgZnJvbSBhIERSTSBkaXNwbGF5IG1vZGUKKyAqIEBmYl9tb2RlOgl0aGUg ZmJfdmlkZW9tb2RlIHN0cnVjdHVyZSB0byB1cGRhdGUKKyAqIEBtb2RlOglhIERSTSBkaXNwbGF5 IG1vZGUKKyAqLwordm9pZAorZHJtX2ZiY29udl91cGRhdGVfZmJfdmlkZW9tb2RlX2Zyb21fbW9k ZShzdHJ1Y3QgZmJfdmlkZW9tb2RlICpmYl9tb2RlLAorCQkJCQkgY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUpCit7CisJZmJfbW9kZS0+bmFtZSA9IE5VTEw7CisJZmJfbW9kZS0+ cmVmcmVzaCA9IG1vZGUtPnZyZWZyZXNoOworCWZiX21vZGUtPnhyZXMgPSBtb2RlLT5oZGlzcGxh eTsKKwlmYl9tb2RlLT55cmVzID0gbW9kZS0+dmRpc3BsYXk7CisJZmJfbW9kZS0+cGl4Y2xvY2sg PSBLSFoyUElDT1MobW9kZS0+Y2xvY2spOworCWZiX21vZGUtPmxlZnRfbWFyZ2luID0gbW9kZS0+ aHRvdGFsIC0gbW9kZS0+aHN5bmNfZW5kOworCWZiX21vZGUtPnJpZ2h0X21hcmdpbiA9IG1vZGUt PmhzeW5jX3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXk7CisJZmJfbW9kZS0+dXBwZXJfbWFyZ2luID0g bW9kZS0+dnRvdGFsIC0gbW9kZS0+dnN5bmNfZW5kOworCWZiX21vZGUtPmxvd2VyX21hcmdpbiA9 IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRpc3BsYXk7CisJZmJfbW9kZS0+aHN5bmNfbGVu ID0gbW9kZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7CisJZmJfbW9kZS0+dnN5bmNf bGVuID0gbW9kZS0+dnN5bmNfZW5kIC0gbW9kZS0+dnN5bmNfc3RhcnQ7CisKKwlmYl9tb2RlLT5z eW5jID0gMDsKKwlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BIU1lOQykKKwkJZmJf bW9kZS0+c3luYyB8PSBGQl9TWU5DX0hPUl9ISUdIX0FDVDsKKwlpZiAobW9kZS0+ZmxhZ3MgJiBE Uk1fTU9ERV9GTEFHX1BWU1lOQykKKwkJZmJfbW9kZS0+c3luYyB8PSBGQl9TWU5DX1ZFUlRfSElH SF9BQ1Q7CisJaWYgKG1vZGUtPmZsYWdzICYgKERSTV9NT0RFX0ZMQUdfQ1NZTkMgfCBEUk1fTU9E RV9GTEFHX1BDU1lOQykpCisJCWZiX21vZGUtPnN5bmMgfD0gRkJfU1lOQ19DT01QX0hJR0hfQUNU OworCisJZmJfbW9kZS0+dm1vZGUgPSAwOworCWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZM QUdfSU5URVJMQUNFKQorCQlmYl9tb2RlLT52bW9kZSB8PSBGQl9WTU9ERV9JTlRFUkxBQ0VEOwor CWlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJMU0NBTikKKwkJZmJfbW9kZS0+dm1v ZGUgfD0gRkJfVk1PREVfRE9VQkxFOworCisJZmJfbW9kZS0+ZmxhZyA9IDA7Cit9CitFWFBPUlRf U1lNQk9MKGRybV9mYmNvbnZfdXBkYXRlX2ZiX3ZpZGVvbW9kZV9mcm9tX21vZGUpOworCisvKioK KyAqIGRybV9mYmNvbnZfaW5pdF9mYl92aWRlb21vZGVfZnJvbV9tb2RlIC0gaW5pdGlhbGl6ZXMg YW4gZmJfdmlkZW9tb2RlCisgKglzdHJ1Y3R1cmUgZnJvbSBhIERSTSBkaXNwbGF5IG1vZGUKKyAq IEBmYl9tb2RlOgl0aGUgZmJfdmlkZW9tb2RlIHN0cnVjdHVyZSB0byB1cGRhdGUKKyAqIEBtb2Rl OglhIERSTSBkaXNwbGF5IG1vZGUKKyAqCisgKiBUaGlzIGlzIHRoZSBzYW1lIGFzIGRybV9mYmNv bnZfdXBkYXRlX2ZiX3ZpZGVvbW9kZV9mcm9tX21vZGUoKSwgYnV0CisgKiBmaXJzdCBjbGVhcnMg dGhlIGZiX3NjcmVlbmluZm8gc3RydWN0dXJlIHRvIDAuCisgKi8KK3ZvaWQgZHJtX2ZiY29udl9p bml0X2ZiX3ZpZGVvbW9kZV9mcm9tX21vZGUoCisJc3RydWN0IGZiX3ZpZGVvbW9kZSAqZmJfbW9k ZSwgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJbWVtc2V0KGZiX21v ZGUsIDAsIHNpemVvZigqZmJfbW9kZSkpOworCWRybV9mYmNvbnZfdXBkYXRlX2ZiX3ZpZGVvbW9k ZV9mcm9tX21vZGUoZmJfbW9kZSwgbW9kZSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9mYmNvbnZf aW5pdF9mYl92aWRlb21vZGVfZnJvbV9tb2RlKTsKKworLyoqCisgKiBkcm1fZmJjb252X3VwZGF0 ZV9mYl92YXJfc2NyZWVuaW5mb19mcm9tX21vZGUgLSB1cGRhdGVzIGFuCisgKglmYl92YXJfc2Ny ZWVuaW5mbyBzdHJ1Y3R1cmUgZnJvbSBhIERSTSBkaXNwbGF5IG1vZGUKKyAqIEBmYl92YXI6CXRo ZSBmYl92YXJfc2NyZWVuaW5mbyBzdHJ1Y3R1cmUgdG8gdXBkYXRlCisgKiBAbW9kZToJYSBEUk0g ZGlzcGxheSBtb2RlCisgKi8KK3ZvaWQgZHJtX2ZiY29udl91cGRhdGVfZmJfdmFyX3NjcmVlbmlu Zm9fZnJvbV9tb2RlKAorCXN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqZmJfdmFyLCBjb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlzdHJ1Y3QgZmJfdmlkZW9tb2RlIGZi X21vZGU7CisKKwlkcm1fZmJjb252X2luaXRfZmJfdmlkZW9tb2RlX2Zyb21fbW9kZSgmZmJfbW9k ZSwgbW9kZSk7CisJZmJfdmlkZW9tb2RlX3RvX3ZhcihmYl92YXIsICZmYl9tb2RlKTsKKworCWZi X3Zhci0+aGVpZ2h0ID0gbW9kZS0+aGVpZ2h0X21tOworCWZiX3Zhci0+d2lkdGggPSBtb2RlLT53 aWR0aF9tbTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2ZiY29udl91cGRhdGVfZmJfdmFyX3NjcmVl bmluZm9fZnJvbV9tb2RlKTsKKworLyoqCisgKiBkcm1fZmJjb252X2luaXRfZmJfdmFyX3NjcmVl bmluZm9fZnJvbV9tb2RlIC0gaW5pdGlhbGl6ZSBhbgorICoJZmJfdmFyX3NjcmVlbmluZm8gc3Ry dWN0dXJlIGZyb20gYSBEUk0gZGlzcGxheSBtb2RlCisgKiBAZmJfdmFyOgl0aGUgZmJfdmFyX3Nj cmVlbmluZm8gc3RydWN0dXJlIHRvIHVwZGF0ZQorICogQG1vZGU6CWEgRFJNIGRpc3BsYXkgbW9k ZQorICoKKyAqIFRoaXMgaXMgdGhlIHNhbWUgYXMgZHJtX2ZiY29udl91cGRhdGVfZmJfdmFyX3Nj cmVlbmluZm9fZnJvbV9tb2RlKCksIGJ1dAorICogZmlyc3QgY2xlYXJzIHRoZSBmYl9zY3JlZW5p bmZvIHN0cnVjdHVyZSB0byAwLgorICovCit2b2lkIGRybV9mYmNvbnZfaW5pdF9mYl92YXJfc2Ny ZWVuaW5mb19mcm9tX21vZGUoCisJc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICpmYl92YXIsIGNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCW1lbXNldChmYl92YXIsIDAs IHNpemVvZigqZmJfdmFyKSk7CisJZHJtX2ZiY29udl91cGRhdGVfZmJfdmFyX3NjcmVlbmluZm9f ZnJvbV9tb2RlKGZiX3ZhciwgbW9kZSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9mYmNvbnZfaW5p dF9mYl92YXJfc2NyZWVuaW5mb19mcm9tX21vZGUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2ZiY29udl9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9mYmNvbnZfaGVscGVyLmgKaW5k ZXggNmIyZWQxMmI1NzlhLi5jYmIxMzIyOGM3NmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9mYmNvbnZfaGVscGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2ZiY29udl9oZWxwZXIuaApA QCAtNSw4ICs1LDEyIEBACiAKICNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPgogCitzdHJ1Y3Qg ZHJtX2RldmljZTsKK3N0cnVjdCBkcm1fZGlzcGxheV9tb2RlOwogc3RydWN0IGZiX2luZm87CiBz dHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm87CitzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm87CitzdHJ1 Y3QgZmJfdmlkZW9tb2RlOwogCiAvKgogICogRm9ybWF0IGNvbnZlcnNpb24gaGVscGVycwpAQCAt MjAsNCArMjQsMzEgQEAgdWludDMyX3QgZHJtX2ZiY29udl9mb3JtYXRfb2ZfZmJfaW5mbyhjb25z dCBzdHJ1Y3QgZmJfaW5mbyAqZmJfaW5mbyk7CiBpbnQgZHJtX2ZiY29udl91cGRhdGVfZmJfdmFy X3NjcmVlbmluZm9fZnJvbV9mb3JtYXQoCiAJc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICpmYl92 YXIsIHVpbnQzMl90IGZvcm1hdCk7CiAKKy8qCisgKiBNb2RlIGNvbnZlcnNpb24gaGVscGVycwor ICovCisKK3ZvaWQgZHJtX21vZGVfdXBkYXRlX2Zyb21fZmJfdmlkZW9tb2RlKHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICptb2RlLAorCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZmJfdmlkZW9tb2Rl ICpmYl9tb2RlKTsKKwordm9pZCBkcm1fbW9kZV91cGRhdGVfZnJvbV9mYl92YXJfc2NyZWVuaW5m bygKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwgY29uc3Qgc3RydWN0IGZiX3Zhcl9z Y3JlZW5pbmZvICpmYl92YXIpOworCitzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqIGRybV9tb2Rl X2NyZWF0ZV9mcm9tX2ZiX3ZpZGVvbW9kZSgKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25z dCBzdHJ1Y3QgZmJfdmlkZW9tb2RlICpmYl9tb2RlKTsKKwordm9pZAorZHJtX2ZiY29udl91cGRh dGVfZmJfdmlkZW9tb2RlX2Zyb21fbW9kZShzdHJ1Y3QgZmJfdmlkZW9tb2RlICpmYl9tb2RlLAor CQkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpOworCit2b2lkCitkcm1f ZmJjb252X2luaXRfZmJfdmlkZW9tb2RlX2Zyb21fbW9kZShzdHJ1Y3QgZmJfdmlkZW9tb2RlICpm Yl9tb2RlLAorCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSk7 CisKK3ZvaWQgZHJtX2ZiY29udl91cGRhdGVfZmJfdmFyX3NjcmVlbmluZm9fZnJvbV9tb2RlKAor CXN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLCBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSk7CisKK3ZvaWQgZHJtX2ZiY29udl9pbml0X2ZiX3Zhcl9zY3JlZW5pbmZvX2Zy b21fbW9kZSgKKwlzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwgY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUpOworCiAjZW5kaWYKLS0gCjIuMjMuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs