From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH 02/11] drm/fbdevdrm: Add fbdevdrm device Date: Tue, 26 Mar 2019 10:17:35 +0100 Message-ID: <20190326091744.11542-3-tzimmermann@suse.de> References: <20190326091744.11542-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 12A3D6E7B2 for ; Tue, 26 Mar 2019 09:17:54 +0000 (UTC) In-Reply-To: <20190326091744.11542-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, b.zolnierkie@samsung.com Cc: linux-fbdev@vger.kernel.org, Thomas Zimmermann , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlcmUncyBhbiBmYmRldmRybSBkZXZpY2UgZm9yIGVhY2ggc3VwcG9ydGVkIGZiZGV2IGRldmlj ZS4gVGhlIGZiZGV2ZHJtCmRyaXZlciBsaXN0ZW5zIGZvciBmYiBldmVudHMsIGFuZCBjcmVhdGVz IGFuZCBkZXN0cm95cyBmYmRldmRybSBkZXZpY2VzCmFjY29yZGluZ2x5LgoKT25seSBoYXJkd2Fy ZS1zcGVjaWZpYyBmYmRldiBkcml2ZXJzIGFyZSBzdXBwb3J0ZWQuIEdlbmVyaWMgZHJpdmVycywg c3VjaAphcyB2Z2ExNmZiIG9yIHZlc2FmYiBhcmUgbm90IGhhbmRsZWQuIERSTS1iYXNlZCBmYmRl diBkcml2ZXJzIGFyZSBhbHNvIG5vdApzdXBwb3J0ZWQuIFRoaXMgcHJldmVudHMgdGhlIHNpdHVh dGlvbiB3aGVyZSBhIERSTSBkcml2ZXJzIGVuYWJsZXMKZnJhbWVidWZmZXIgZW11bGF0aW9uIGFu ZCBmYmRldmRybSBjcmVhdGVzIGEgc2Vjb25kIERSTSBkZXZpY2UgZm9yIHRoZQpzYW1lIGhhcmR3 YXJlLgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2Uu ZGU+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL01ha2VmaWxlICAgICAgICAgIHwgICAz ICstCiBkcml2ZXJzL2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZkcm1fZGV2aWNlLmMgfCAgNzkgKysr KysrKysrKwogZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL2ZiZGV2ZHJtX2RldmljZS5oIHwgIDQ0 ICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL2ZiZGV2ZHJtX2Rydi5jICAgIHwgMTcz ICsrKysrKysrKysrKysrKysrKysrLQogNCBmaWxlcyBjaGFuZ2VkLCAyOTYgaW5zZXJ0aW9ucygr KSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZmJk ZXZkcm0vZmJkZXZkcm1fZGV2aWNlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vZmJkZXZkcm0vZmJkZXZkcm1fZGV2aWNlLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZmJkZXZkcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vZmJkZXZkcm0vTWFrZWZpbGUK aW5kZXggNjVlNmI0M2NmNjgyLi43NTA5NDBkMzg1MDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9mYmRldmRybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vZmJkZXZkcm0vTWFr ZWZpbGUKQEAgLTEsNCArMSw1IEBACiBjY2ZsYWdzLXkgPSAtSWluY2x1ZGUvZHJtCi1mYmRldmRy bS15IDo9IGZiZGV2ZHJtX2Rydi5vCitmYmRldmRybS15IDo9IGZiZGV2ZHJtX2RldmljZS5vIFwK KwkgICAgICBmYmRldmRybV9kcnYubwogCiBvYmotJChDT05GSUdfRFJNX0ZCREVWRFJNKSArPSBm YmRldmRybS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZkcm1f ZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZkcm1fZGV2aWNlLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wYWJmNDFjZjA1YmIKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZkcm1fZGV2aWNlLmMK QEAgLTAsMCArMSw3OSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3It bGF0ZXIKKyAqCisgKiBPbmUgcHVycG9zZSBvZiB0aGlzIGRyaXZlciBpcyB0byBhbGxvdyBmb3Ig ZWFzeSBjb252ZXJzaW9uIG9mIGZyYW1lYnVmZmVyCisgKiBkcml2ZXJzIHRvIERSTS4gQXMgYSBz cGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdQTCwgeW91IGFyZSBhbGxvd2VkIHRvCisgKiBy ZWxpY2Vuc2UgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiBhIGxpY2Vuc2Ugb2YgeW91ciBj aG9pY2UgaWYgeW91J3JlCisgKiBwb3J0aW5nIGEgZnJhbWVidWZmZXIgZHJpdmVyLiBJbiBvcmRl ciB0byBkbyBzbywgdXBkYXRlIHRoZSBTUERYIGxpY2Vuc2UKKyAqIGlkZW50aWZpZXIgdG8gdGhl IG5ldyBsaWNlbnNlIGFuZCByZW1vdmUgdGhpcyBleGNlcHRpb24uCisgKgorICogSWYgeW91IGFk ZCBjb2RlIHRvIHRoaXMgZmlsZSwgcGxlYXNlIGVuc3VyZSB0aGF0IGl0J3MgY29tcGF0aWJsZSB3 aXRoIHRoZQorICogc3RhdGVkIGV4Y2VwdGlvbi4KKyAqLworCisjaW5jbHVkZSAiZmJkZXZkcm1f ZGV2aWNlLmgiCisjaW5jbHVkZSA8ZHJtL2RybV9kcnYuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX21v ZGVzZXRfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgorI2luY2x1ZGUgPGxp bnV4L2ZiLmg+CisjaW5jbHVkZSA8bGludXgvcGNpLmg+CisKKy8qCisgKiBzdHJ1Y3QgZmJkcm1k ZXZfZGV2aWNlCisgKi8KKworaW50IGZiZGV2ZHJtX2RldmljZV9pbml0KHN0cnVjdCBmYmRldmRy bV9kZXZpY2UgKmZkZXYsIHN0cnVjdCBkcm1fZHJpdmVyICpkcnYsCisJCQkgc3RydWN0IGZiX2lu Zm8gKmZiX2luZm8pCit7CisJaW50IHJldDsKKworCXJldCA9IGRybV9kZXZfaW5pdCgmZmRldi0+ ZGV2LCBkcnYsIGZiX2luZm8tPmRldmljZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwlm ZGV2LT5kZXYuZGV2X3ByaXZhdGUgPSBmZGV2OworCWZkZXYtPmRldi5wZGV2ID0gY29udGFpbmVy X29mKGZiX2luZm8tPmRldmljZSwgc3RydWN0IHBjaV9kZXYsIGRldik7CisJZmRldi0+ZmJfaW5m byA9IGZiX2luZm87CisKKwlJTklUX0xJU1RfSEVBRCgmZmRldi0+ZGV2aWNlX2xpc3QpOworCisJ cmV0dXJuIDA7Cit9CisKK3ZvaWQgZmJkZXZkcm1fZGV2aWNlX2NsZWFudXAoc3RydWN0IGZiZGV2 ZHJtX2RldmljZSAqZmRldikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmZkZXYtPmRl djsKKworCWlmICghbGlzdF9lbXB0eSgmZmRldi0+ZGV2aWNlX2xpc3QpKSB7CisJCURSTV9FUlJP UigiZmJkZXZkcm06IGNsZWFuZWQgdXAgZGV2aWNlIGlzIHN0aWxsIGVucXVldWVkICIKKwkJCSAg ImluIGRldmljZSBsaXN0XG4iKTsKKwl9CisKKwlkcm1fZGV2X2ZpbmkoZGV2KTsKKwlkZXYtPmRl dl9wcml2YXRlID0gTlVMTDsKK30KKworc3RydWN0IGZiZGV2ZHJtX2RldmljZSogZmJkZXZkcm1f ZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgZHJtX2RyaXZlciAqZHJ2LAorCQkJCQkgICAgICAgc3RydWN0 IGZiX2luZm8gKmZiX2luZm8pCit7CisJc3RydWN0IGZiZGV2ZHJtX2RldmljZSAqZmRldjsKKwlp bnQgcmV0OworCisJZmRldiA9IGRldm1fa3phbGxvYyhmYl9pbmZvLT5kZXYsIHNpemVvZigqZmRl diksIEdGUF9LRVJORUwpOworCWlmICghZmRldikKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CisJcmV0ID0gZmJkZXZkcm1fZGV2aWNlX2luaXQoZmRldiwgZHJ2LCBmYl9pbmZvKTsKKwlpZiAo cmV0IDwgMCkKKwkJZ290byBlcnJfZGV2bV9rZnJlZTsKKwlyZXR1cm4gZmRldjsKKworZXJyX2Rl dm1fa2ZyZWU6CisJZGV2bV9rZnJlZShmYl9pbmZvLT5kZXYsIGZkZXYpOworCXJldHVybiBFUlJf UFRSKHJldCk7Cit9CisKK3ZvaWQgZmJkZXZkcm1fZGV2aWNlX2Rlc3Ryb3koc3RydWN0IGZiZGV2 ZHJtX2RldmljZSAqZmRldikKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBmZGV2LT5mYl9pbmZv LT5kZXY7CisKKwlmYmRldmRybV9kZXZpY2VfY2xlYW51cChmZGV2KTsKKwlkZXZtX2tmcmVlKGRl diwgZmRldik7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZk cm1fZGV2aWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZkcm1fZGV2aWNlLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NTg3OGY2MGJiYTQKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZmJkZXZkcm0vZmJkZXZkcm1fZGV2aWNl LmgKQEAgLTAsMCArMSw0NCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt b3ItbGF0ZXIKKyAqCisgKiBPbmUgcHVycG9zZSBvZiB0aGlzIGRyaXZlciBpcyB0byBhbGxvdyBm b3IgZWFzeSBjb252ZXJzaW9uIG9mIGZyYW1lYnVmZmVyCisgKiBkcml2ZXJzIHRvIERSTS4gQXMg YSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdQTCwgeW91IGFyZSBhbGxvd2VkIHRvCisg KiByZWxpY2Vuc2UgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiBhIGxpY2Vuc2Ugb2YgeW91 ciBjaG9pY2UgaWYgeW91J3JlCisgKiBwb3J0aW5nIGEgZnJhbWVidWZmZXIgZHJpdmVyLiBJbiBv cmRlciB0byBkbyBzbywgdXBkYXRlIHRoZSBTUERYIGxpY2Vuc2UKKyAqIGlkZW50aWZpZXIgdG8g dGhlIG5ldyBsaWNlbnNlIGFuZCByZW1vdmUgdGhpcyBleGNlcHRpb24uCisgKgorICogSWYgeW91 IGFkZCBjb2RlIHRvIHRoaXMgZmlsZSwgcGxlYXNlIGVuc3VyZSB0aGF0IGl0J3MgY29tcGF0aWJs ZSB3aXRoIHRoZQorICogc3RhdGVkIGV4Y2VwdGlvbi4KKyAqLworCisjaWZuZGVmIEZCREVWRFJN X0RFVklDRV9ICisjZGVmaW5lIEZCREVWRFJNX0RFVklDRV9ICisKKyNpbmNsdWRlIDxkcm0vZHJt X2RldmljZS5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L2xp c3QuaD4KKworc3RydWN0IGRybV9kcml2ZXI7CitzdHJ1Y3QgZmJfaW5mbzsKKworc3RydWN0IGZi ZGV2ZHJtX2RldmljZSB7CisJc3RydWN0IGRybV9kZXZpY2UgZGV2OworCXN0cnVjdCBmYl9pbmZv ICpmYl9pbmZvOworCisJc3RydWN0IGxpc3RfaGVhZCBkZXZpY2VfbGlzdDsgLyogZW50cnkgaW4g Z2xvYmFsIGRldmljZSBsaXN0ICovCit9OworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBmYmRldmRy bV9kZXZpY2UqIGZiZGV2ZHJtX2RldmljZV9vZl9kZXZpY2VfbGlzdCgKKwlzdHJ1Y3QgbGlzdF9o ZWFkICpkZXZpY2VfbGlzdCkKK3sKKwlyZXR1cm4gbGlzdF9lbnRyeShkZXZpY2VfbGlzdCwgc3Ry dWN0IGZiZGV2ZHJtX2RldmljZSwgZGV2aWNlX2xpc3QpOworfQorCitpbnQgZmJkZXZkcm1fZGV2 aWNlX2luaXQoc3RydWN0IGZiZGV2ZHJtX2RldmljZSAqZmRldiwgc3RydWN0IGRybV9kcml2ZXIg KmRydiwKKwkJCSBzdHJ1Y3QgZmJfaW5mbyAqZmJfaW5mbyk7Cit2b2lkIGZiZGV2ZHJtX2Rldmlj ZV9jbGVhbnVwKHN0cnVjdCBmYmRldmRybV9kZXZpY2UgKmZkZXYpOworCitzdHJ1Y3QgZmJkZXZk cm1fZGV2aWNlKiBmYmRldmRybV9kZXZpY2VfY3JlYXRlKHN0cnVjdCBkcm1fZHJpdmVyICpkcnYs CisJCQkJCSAgICAgICBzdHJ1Y3QgZmJfaW5mbyAqZmJfaW5mbyk7Cit2b2lkIGZiZGV2ZHJtX2Rl dmljZV9kZXN0cm95KHN0cnVjdCBmYmRldmRybV9kZXZpY2UgKmZkZXYpOworCisjZW5kaWYKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mYmRldmRybS9mYmRldmRybV9kcnYuYyBiL2RyaXZl cnMvZ3B1L2RybS9mYmRldmRybS9mYmRldmRybV9kcnYuYwppbmRleCBkY2IyNjNiMGMzODYuLjVi ZTkwMjA5NGRjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ZiZGV2ZHJtL2ZiZGV2ZHJt X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9mYmRldmRybS9mYmRldmRybV9kcnYuYwpAQCAt MTAsOCArMTAsMTMgQEAKICAqIHN0YXRlZCBleGNlcHRpb24uCiAgKi8KIAorI2luY2x1ZGUgPGRy bS9kcm1fZHJ2Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPgorI2luY2x1ZGUgPGxpbnV4 L2NvbnNvbGUuaD4gLyogZm9yIGNvbnNvbGVfe3VuL2xvY2t9KCkgKi8KICNpbmNsdWRlIDxsaW51 eC9mYi5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4 Lmg+CisjaW5jbHVkZSAiZmJkZXZkcm1fZGV2aWNlLmgiCiAKIC8qIERSTSBwb3J0aW5nIG5vdGU6 IEhlcmUgYXJlIHNvbWUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJpdmVyLAogICog bGljZW5zaW5nIGFuZCBtYWludGVuYW5jZSBjb250YWN0LiBJZiB5b3UncmUgcG9ydGluZyBhbiBm YmRldiBkcml2ZXIKQEAgLTI5LDE4ICszNCwxNTYgQEAKICNkZWZpbmUgRFJJVkVSX01JTk9SCQkw CiAjZGVmaW5lIERSSVZFUl9QQVRDSExFVkVMCTEKIAorLyoKKyAqIERSTSBkcml2ZXIKKyAqLwor CitzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZmJkZXZkcm1fZHJ2ID0geworCS8qIGRhdGEgZmll bGRzICovCisJLm1ham9yID0gRFJJVkVSX01BSk9SLAorCS5taW5vciA9IERSSVZFUl9NSU5PUiwK KwkucGF0Y2hsZXZlbCA9IERSSVZFUl9QQVRDSExFVkVMLAorCS5uYW1lID0gRFJJVkVSX05BTUUs CisJLmRlc2MgPSBEUklWRVJfREVTQ1JJUFRJT04sCisJLmRhdGUgPSBEUklWRVJfREFURQorfTsK KworLyogRGV2aWNlIGxpc3QgKi8KKworc3RhdGljIERFRklORV9NVVRFWChkZXZpY2VfbGlzdF9t dXRleCk7CitzdGF0aWMgTElTVF9IRUFEKGRldmljZV9saXN0KTsKKworc3RhdGljIHZvaWQgZGV2 aWNlX2xpc3RfYWRkKHN0cnVjdCBmYmRldmRybV9kZXZpY2UgKmZkZXYpCit7CisJbXV0ZXhfbG9j aygmZGV2aWNlX2xpc3RfbXV0ZXgpOworCWxpc3RfYWRkKCZmZGV2LT5kZXZpY2VfbGlzdCwgJmRl dmljZV9saXN0KTsKKwltdXRleF91bmxvY2soJmRldmljZV9saXN0X211dGV4KTsKK30KKworc3Rh dGljIHN0cnVjdCBmYmRldmRybV9kZXZpY2UqIGRldmljZV9saXN0X2RlbChzdHJ1Y3QgZmJkZXZk cm1fZGV2aWNlICpmZGV2KQoreworCW11dGV4X2xvY2soJmRldmljZV9saXN0X211dGV4KTsKKwls aXN0X2RlbCgmZmRldi0+ZGV2aWNlX2xpc3QpOworCW11dGV4X3VubG9jaygmZGV2aWNlX2xpc3Rf bXV0ZXgpOworCisJcmV0dXJuIGZkZXY7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZmJkZXZkcm1fZGV2 aWNlKiBkZXZpY2VfbGlzdF9maW5kX2J5X2ZiX2luZm8oCisJY29uc3Qgc3RydWN0IGZiX2luZm8g KmZiX2luZm8pCit7CisJc3RydWN0IGxpc3RfaGVhZCAqcG9zOworCXN0cnVjdCBmYmRldmRybV9k ZXZpY2UgKmZkZXYgPSBOVUxMOworCisJbXV0ZXhfbG9jaygmZGV2aWNlX2xpc3RfbXV0ZXgpOwor CWxpc3RfZm9yX2VhY2gocG9zLCAmZGV2aWNlX2xpc3QpIHsKKwkJc3RydWN0IGZiZGV2ZHJtX2Rl dmljZSAqcG9zX2ZkZXYgPQorCQkJZmJkZXZkcm1fZGV2aWNlX29mX2RldmljZV9saXN0KHBvcyk7 CisJCWlmIChwb3NfZmRldi0+ZmJfaW5mbyA9PSBmYl9pbmZvKSB7CisJCQlmZGV2ID0gcG9zX2Zk ZXY7CisJCQlnb3RvIG91dDsKKwkJfQorCX0KK291dDoKKwltdXRleF91bmxvY2soJmRldmljZV9s aXN0X211dGV4KTsKKwlyZXR1cm4gZmRldjsKK30KKwogLyogTW9kdWxlIGVudHJ5IHBvaW50cyAq LwogCitzdGF0aWMgYm9vbCBpc19nZW5lcmljX2RyaXZlcihjb25zdCBzdHJ1Y3QgZmJfaW5mbyAq ZmJfaW5mbykKK3sKKwkvKiBEUk0gcG9ydGluZyBub3RlOiBXZSBkb24ndCB3YW50IHRvIGJpbmQg dG8gdmdhMTZmYiwgdmVzYWZiLCBvciBhbnkKKwkgKiBvdGhlciBnZW5lcmljIGZiZGV2IGRyaXZl ci4gVXN1YWxseSwgdGhlc2UgZHJpdmVycyBoYXZlIGxpbWl0ZWQKKwkgKiBjYXBhYmlsaXRpcy4g V2Ugb25seSBjb250aW51ZSBpZiB0aGUgZml4IHN0cnVjdHVyZSBpbmRpY2F0ZXMgYQorCSAqIGhh cmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgLiBUaGlzIHRlc3Qgd2lsbCBhbHNvIHNvcnQgb3V0IGRy aXZlcnMKKwkgKiByZWdpc3RlcmVkIHZpYSBEUk0ncyBmYmRldiBlbXVsYXRpb24uIElmIHlvdSdy ZSBwb3J0aW5nIGFuIGZiZGV2CisJICogZHJpdmVyIHRvIERSTSwgeW91IGNhbiByZW1vdmUgdGhp cyB0ZXN0LiBUaGUgbW9kdWxlJ3MgUENJIGRldmljZQorCSAqIGlkcyB3aWxsIGNvbnRhaW4gdGhp cyBpbmZvcm1hdGlvbi4KKwkgKi8KKwlyZXR1cm4gIWZiX2luZm8tPmZpeC5hY2NlbCAmJgorCSAg ICAgICAhIXN0cmNtcChmYl9pbmZvLT5maXguaWQsICJTMyBWaXJnZS9EWCIpOworfQorCitzdGF0 aWMgaW50IG9uX2ZiX3JlZ2lzdGVyZWQoc3RydWN0IGZiX2luZm8gKmZiX2luZm8sIHZvaWQgKmRh dGEpCit7CisJc3RydWN0IGZiZGV2ZHJtX2RldmljZSAqZmRldjsKKwlpbnQgcmV0OworCisJaWYg KGlzX2dlbmVyaWNfZHJpdmVyKGZiX2luZm8pKSB7CisJCURSTV9FUlJPUigiZmJkZXZkcm06IG5v dCBiaW5kaW5nIHRvICVzXG4iLCBmYl9pbmZvLT5maXguaWQpOworCQlyZXR1cm4gMDsKKwl9CisK KwlmZGV2ID0gZmJkZXZkcm1fZGV2aWNlX2NyZWF0ZSgmZmJkZXZkcm1fZHJ2LCBmYl9pbmZvKTsK KwlpZiAoSVNfRVJSKGZkZXYpKQorCQlyZXR1cm4gUFRSX0VSUihmZGV2KTsKKwlkZXZpY2VfbGlz dF9hZGQoZmRldik7CisKKwlyZXQgPSBkcm1fZGV2X3JlZ2lzdGVyKCZmZGV2LT5kZXYsIDApOwor CWlmIChyZXQpCisJCWdvdG8gZXJyX2RldmljZV9saXN0X2RlbDsKKworCXJldHVybiAwOworCitl cnJfZGV2aWNlX2xpc3RfZGVsOgorCWRldmljZV9saXN0X2RlbChmZGV2KTsKKwlmYmRldmRybV9k ZXZpY2VfZGVzdHJveShmZGV2KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9uX2Zi X3VucmVnaXN0ZXJlZChzdHJ1Y3QgZmJfaW5mbyAqZmJfaW5mbywgdm9pZCAqZGF0YSkKK3sKKwlz dHJ1Y3QgZmJkZXZkcm1fZGV2aWNlICpmZGV2OworCisJZmRldiA9IGRldmljZV9saXN0X2ZpbmRf YnlfZmJfaW5mbyhmYl9pbmZvKTsKKwlpZiAoIWZkZXYpCisJCXJldHVybiAwOworCisJZGV2aWNl X2xpc3RfZGVsKGZkZXYpOworCWZiZGV2ZHJtX2RldmljZV9kZXN0cm95KGZkZXYpOworCisJcmV0 dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgZmJfY2xpZW50X25vdGlmaWVyX2NhbGwoc3RydWN0IG5v dGlmaWVyX2Jsb2NrICpuYiwKIAkJCQkgICB1bnNpZ25lZCBsb25nIGFjdGlvbiwgdm9pZCAqZGF0 YSkKIHsKKwlzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXZlbnRfbmFtZVtdID0geworI2RlZmlu ZSBFVkVOVF9OQU1FKF9ldikgXAorCVtfZXZdID0gI19ldgorCQlFVkVOVF9OQU1FKEZCX0VWRU5U X01PREVfQ0hBTkdFKSwKKwkJRVZFTlRfTkFNRShGQl9FVkVOVF9TVVNQRU5EKSwKKwkJRVZFTlRf TkFNRShGQl9FVkVOVF9SRVNVTUUpLAorCQlFVkVOVF9OQU1FKEZCX0VWRU5UX01PREVfREVMRVRF KSwKKwkJRVZFTlRfTkFNRShGQl9FVkVOVF9GQl9SRUdJU1RFUkVEKSwKKwkJRVZFTlRfTkFNRShG Ql9FVkVOVF9GQl9VTlJFR0lTVEVSRUQpLAorCQlFVkVOVF9OQU1FKEZCX0VWRU5UX0dFVF9DT05T T0xFX01BUCksCisJCUVWRU5UX05BTUUoRkJfRVZFTlRfU0VUX0NPTlNPTEVfTUFQKSwKKwkJRVZF TlRfTkFNRShGQl9FVkVOVF9CTEFOSyksCisJCUVWRU5UX05BTUUoRkJfRVZFTlRfTkVXX01PREVM SVNUKSwKKwkJRVZFTlRfTkFNRShGQl9FVkVOVF9NT0RFX0NIQU5HRV9BTEwpLAorCQlFVkVOVF9O QU1FKEZCX0VWRU5UX0NPTkJMQU5LKSwKKwkJRVZFTlRfTkFNRShGQl9FVkVOVF9HRVRfUkVRKSwK KwkJRVZFTlRfTkFNRShGQl9FVkVOVF9GQl9VTkJJTkQpLAorCQlFVkVOVF9OQU1FKEZCX0VWRU5U X1JFTUFQX0FMTF9DT05TT0xFKSwKKwkJRVZFTlRfTkFNRShGQl9FQVJMWV9FVkVOVF9CTEFOSyks CisJCUVWRU5UX05BTUUoRkJfUl9FQVJMWV9FVkVOVF9CTEFOSykKKyN1bmRlZiBFVkVOVF9OQU1F CisJfTsKKwogCXN0YXRpYyBpbnQgKCogY29uc3Qgb25fZXZlbnRbXSkoc3RydWN0IGZiX2luZm8q LCB2b2lkKikgPSB7CisJCVtGQl9FVkVOVF9GQl9SRUdJU1RFUkVEXSAgID0gb25fZmJfcmVnaXN0 ZXJlZCwKKwkJW0ZCX0VWRU5UX0ZCX1VOUkVHSVNURVJFRF0gPSBvbl9mYl91bnJlZ2lzdGVyZWQK IAl9OwogCiAJY29uc3Qgc3RydWN0IGZiX2V2ZW50ICpldmVudCA9IGRhdGE7CiAKLQlpZiAoKGFj dGlvbiA+PSBBUlJBWV9TSVpFKG9uX2V2ZW50KSkgfHwgIW9uX2V2ZW50W2FjdGlvbl0pCisJaWYg KChhY3Rpb24gPj0gQVJSQVlfU0laRShvbl9ldmVudCkpIHx8ICFvbl9ldmVudFthY3Rpb25dKSB7 CisJCURSTV9FUlJPUigiZmJkZXZkcm06IHVuaGFuZGxlZCBldmVudCAlc1xuIiwKKwkJCQlldmVu dF9uYW1lW2FjdGlvbl0pOwogCQlyZXR1cm4gMDsgLyogZXZlbnQgbm90IGhhbmRsZWQgYnkgdXMg Ki8KKwl9CiAJcmV0dXJuIG9uX2V2ZW50W2FjdGlvbl0oZXZlbnQtPmluZm8sIGV2ZW50LT5kYXRh KTsKIH0KIApAQCAtNTAsMTMgKzE5MywzOSBAQCBzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2Nr IGZiX2NsaWVudCA9IHsKIAogc3RhdGljIGludCBfX2luaXQgZmJkZXZkcm1faW5pdCh2b2lkKQog ewotCWludCByZXQ7CisJaW50IHJldCwgaTsKIAogCXJldCA9IGZiX3JlZ2lzdGVyX2NsaWVudCgm ZmJfY2xpZW50KTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuIHJldDsKIAorCS8qIFRoZXJlIG1p Z2h0IGFscmVhZHkgYmUgcmVnaXN0ZXJlZCBGQiBkZXZpY2VzLiBXZSBnbworCSAqIHRocm91Z2gg dGhlbSBtYW51YWxseSB0byBjcmVhdGUgYSBjb3JyZXNwb25kaW5nIERSTQorCSAqIGRldmljZS4g Rm9yIHRoZSBldmVudCBub3RpZmllciwgYWxsIHRoZSBsb2NraW5nIGlzCisJICogcGVyZm9ybWVk IGJ5IHRoZSBmYmRldiBmcmFtZXdvcmsuIEhlcmUsIHdlIGhhdmUgdG8KKwkgKiBkbyBpdCBieSBv dXJzZWx2ZXMuICovCisKKwljb25zb2xlX2xvY2soKTsKKworCWZvcl9lYWNoX3JlZ2lzdGVyZWRf ZmIoaSkgeworCQlzdHJ1Y3QgZmJfaW5mbyAqZmJfaW5mbyA9IHJlZ2lzdGVyZWRfZmJbaV07CisJ CWlmICghbG9ja19mYl9pbmZvKGZiX2luZm8pKSB7CisJCQlyZXQgPSAtRU5PREVWOworCQkJZ290 byBlcnJfY29uc29sZV91bmxvY2s7CisJCX0KKwkJcmV0ID0gb25fZmJfcmVnaXN0ZXJlZChmYl9p bmZvLCBOVUxMKTsKKwkJdW5sb2NrX2ZiX2luZm8oZmJfaW5mbyk7CisJCWlmIChyZXQgPCAwKQor CQkJZ290byBlcnJfY29uc29sZV91bmxvY2s7CisJfQorCisJY29uc29sZV91bmxvY2soKTsKKwog CXJldHVybiAwOworCitlcnJfY29uc29sZV91bmxvY2s6CisJY29uc29sZV91bmxvY2soKTsKKwly ZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBfX2V4aXQgZmJkZXZkcm1fZXhpdCh2b2lkKQot LSAKMi4yMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=