From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C5A48C433E0 for ; Fri, 15 May 2020 13:13:12 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8A3F0206D4 for ; Fri, 15 May 2020 13:13:12 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="A8sxgBCQ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8A3F0206D4 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sigxcpu.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tkqA4/DOY/5gbuC21U7HAk+OA91qvFCl5EU1SWiNWdA=; b=A8sxgBCQjF5ESB uEcYR7dZQHke1oJyb8oneZNeCyoOqhh9+RazpMykid4kb9okYH4FIkiheN0GkiVNz8pULML7W5Go9 91nFtRgFMxt2Be5EseItd/gtKZ5jQPlj4oX9mcRQxwxu1f/TXxL9S5fyBYgE9Fne7qZko828SGzcO LaMQO8vwRBFBYztkITtyd8ps1SrAgCkyZ8m9XjfxPi+pneRz+DxaXmvXeHQiJqfFbO2aWVA+pNmuR ZDTRM71xeqhAX/EhuSqfJ732DKBlq7xbddeRStZ17ReXirBI3dJZ8mP/ZIY5QHL4/6HkgX4bvkmhp TwnDtbWPACm9tb5U0Wkw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jZa9H-000140-37; Fri, 15 May 2020 13:13:11 +0000 Received: from honk.sigxcpu.org ([24.134.29.49]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jZa8Y-0000KF-DA for linux-arm-kernel@lists.infradead.org; Fri, 15 May 2020 13:12:31 +0000 Received: from localhost (localhost [127.0.0.1]) by honk.sigxcpu.org (Postfix) with ESMTP id E9585FB04; Fri, 15 May 2020 15:12:22 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at honk.sigxcpu.org Received: from honk.sigxcpu.org ([127.0.0.1]) by localhost (honk.sigxcpu.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ud4qQG39xKE9; Fri, 15 May 2020 15:12:19 +0200 (CEST) Received: by bogon.sigxcpu.org (Postfix, from userid 1000) id 6D3FB445A8; Fri, 15 May 2020 15:12:15 +0200 (CEST) From: =?UTF-8?q?Guido=20G=C3=BCnther?= To: Laurent Pinchart , David Airlie , Daniel Vetter , Rob Herring , Shawn Guo , Pengutronix Kernel Team , Fabio Estevam , NXP Linux Team , Andrzej Hajda , Sam Ravnborg , Anson Huang , Leonard Crestez , Lucas Stach , Peng Fan , Robert Chiras , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [RFC PATCH 2/6] drm/bridge: Add mux-input bridge Date: Fri, 15 May 2020 15:12:11 +0200 Message-Id: <1d4a97de9acea438f156092dfd1434eb160bf861.1589548223.git.agx@sigxcpu.org> X-Mailer: git-send-email 2.26.1 In-Reply-To: References: MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200515_061226_815259_1BB0ECFF X-CRM114-Status: GOOD ( 18.63 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhpcyBicmlkZ2UgYWxsb3dzIHRvIHNlbGVjdCB0aGUgaW5wdXQgc291cmNlCnZpYSBhIG11eCBj b250cm9sbGVyLiBUaGUgaW5wdXQgc291cmNlIGlzCmRldGVybWluZWQgdmlhIERUIGJ1dCBpdCBj b3VsZCBiZWNvbWUgcnV0aW1lCnNlbGVjdGFibGUgaW4gdGhlIGZ1dHVyZS4KClNpZ25lZC1vZmYt Ynk6IEd1aWRvIEfDvG50aGVyIDxhZ3hAc2lneGNwdS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9LY29uZmlnICAgICB8ICAgOSArKwogZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtl ZmlsZSAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL211eC1pbnB1dC5jIHwgMjM4 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI0OCBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9tdXgt aW5wdXQuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyBiL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwppbmRleCAwNGY4NzZlOTg1ZGUuLjM4ODZjMGY0 MWJkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwpAQCAtMjA2LDYgKzIwNiwxNSBAQCBjb25maWcg RFJNX1RJX1RQRDEyUzAxNQogCSAgVGV4YXMgSW5zdHJ1bWVudHMgVFBEMTJTMDE1IEhETUkgbGV2 ZWwgc2hpZnRlciBhbmQgRVNEIHByb3RlY3Rpb24KIAkgIGRyaXZlci4KIAorY29uZmlnIERSTV9N VVhfSU5QVVQKKwl0cmlzdGF0ZSAiQnJpZGdlIHRvIHNlbGVjdCBhIHZpZGVvIGlucHV0IHNvdXJj ZSIKKwlkZXBlbmRzIG9uIE9GCisJZGVwZW5kcyBvbiBEUk1fQlJJREdFCisJc2VsZWN0IE1VTFRJ UExFWEVSCisJaGVscAorCSAgU2VsZWN0IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHNlbGVj dCB0aGUgaW5wdXQgc291cmNlIHRvCisJICBhIERSTSBicmlkZ2Ugb3IgcGFuZWwgdmlhIGEgc2Vw YXJhdGUgbXV4IGNoaXAuCisKIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dp eC9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9LY29u ZmlnIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKaW5kZXggZDYzZDRiN2U0MzQ3Li45ZjMzNzBjZTdl MDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKKysrIGIvZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQpAQCAtNCw2ICs0LDcgQEAgb2JqLSQoQ09ORklH X0RSTV9DSFJPTlRFTF9DSDcwMzMpICs9IGNocm9udGVsLWNoNzAzMy5vCiBvYmotJChDT05GSUdf RFJNX0RJU1BMQVlfQ09OTkVDVE9SKSArPSBkaXNwbGF5LWNvbm5lY3Rvci5vCiBvYmotJChDT05G SUdfRFJNX0xWRFNfQ09ERUMpICs9IGx2ZHMtY29kZWMubwogb2JqLSQoQ09ORklHX0RSTV9NRUdB Q0hJUFNfU1REUFhYWFhfR0VfQjg1MFYzX0ZXKSArPSBtZWdhY2hpcHMtc3RkcHh4eHgtZ2UtYjg1 MHYzLWZ3Lm8KK29iai0kKENPTkZJR19EUk1fTVVYX0lOUFVUKSArPSBtdXgtaW5wdXQubwogb2Jq LSQoQ09ORklHX0RSTV9OWFBfUFROMzQ2MCkgKz0gbnhwLXB0bjM0NjAubwogb2JqLSQoQ09ORklH X0RSTV9QQVJBREVfUFM4NjIyKSArPSBwYXJhZGUtcHM4NjIyLm8KIG9iai0kKENPTkZJR19EUk1f UEFSQURFX1BTODY0MCkgKz0gcGFyYWRlLXBzODY0MC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL211eC1pbnB1dC5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9tdXgtaW5w dXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI0OTYxZDQxYWMz MAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvbXV4LWlucHV0LmMK QEAgLTAsMCArMSwyMzggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwor LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBQdXJpc20gU1BDCisgKi8KKworI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L211eC9jb25zdW1lci5oPgorI2luY2x1ZGUg PGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxs aW51eC9wbV9ydW50aW1lLmg+CisKKyNpbmNsdWRlIDxkcm0vZHJtX2JyaWRnZS5oPgorI2luY2x1 ZGUgPGRybS9kcm1fb2YuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9wcmludC5oPgorCisjZGVmaW5lIERSVl9OQU1FICJtdXgtaW5wdXQtYnJpZGdlIgor CitzdHJ1Y3QgbXV4X2lucHV0IHsKKwlzdHJ1Y3QgZHJtX2JyaWRnZSBicmlkZ2U7CisJc3RydWN0 IGRybV9icmlkZ2UgKm91dDsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisJc3RydWN0IG11eF9jb250 cm9sICptdXg7CisJdW5zaWduZWQgaW50IG5faW5wdXRzOworCXVuc2lnbmVkIGludCBpbnB1dDsK KwlzdHJ1Y3QgZHJtX2JyaWRnZV90aW1pbmdzIHRpbWluZ3M7Cit9OworCitzdGF0aWMgaW5saW5l IHN0cnVjdCBtdXhfaW5wdXQgKmJyaWRnZV90b19tdXhfaW5wdXQoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSkKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKGJyaWRnZSwgc3RydWN0IG11eF9pbnB1 dCwgYnJpZGdlKTsKK30KKworc3RhdGljIHZvaWQgbXV4X2lucHV0X2JyaWRnZV9kaXNhYmxlKHN0 cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCit7CisJc3RydWN0IG11eF9pbnB1dCAqbXV4X2lucHV0 ID0gYnJpZGdlX3RvX211eF9pbnB1dChicmlkZ2UpOworCisJcG1fcnVudGltZV9wdXQobXV4X2lu cHV0LT5kZXYpOworfQorCitzdGF0aWMgdm9pZCBtdXhfaW5wdXRfYnJpZGdlX3ByZV9lbmFibGUo c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlzdHJ1Y3QgbXV4X2lucHV0ICptdXhfaW5w dXQgPSBicmlkZ2VfdG9fbXV4X2lucHV0KGJyaWRnZSk7CisKKwlwbV9ydW50aW1lX2dldChtdXhf aW5wdXQtPmRldik7Cit9CisKK3N0YXRpYyBpbnQgbXV4X2lucHV0X2JyaWRnZV9hdHRhY2goc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKKwkJCQkgICBlbnVtIGRybV9icmlkZ2VfYXR0YWNoX2Zs YWdzIGZsYWdzKQoreworCXN0cnVjdCBtdXhfaW5wdXQgKm11eF9pbnB1dCA9IGJyaWRnZV90b19t dXhfaW5wdXQoYnJpZGdlKTsKKwlzdHJ1Y3QgZHJtX2JyaWRnZSAqcGFuZWxfYnJpZGdlOworCXN0 cnVjdCBkcm1fcGFuZWwgKnBhbmVsOworCXN0cnVjdCBkZXZpY2UgKmRldjsKKwlzdHJ1Y3QgZGV2 aWNlX25vZGUgKnJlbW90ZTsKKwlpbnQgcmV0OworCisJLyogT25seSBhdHRhY2ggdG8gdGhlIHNl bGVjdGVkIGlucHV0ICovCisJcmVtb3RlID0gb2ZfZ3JhcGhfZ2V0X3JlbW90ZV9ub2RlKG11eF9p bnB1dC0+ZGV2LT5vZl9ub2RlLAorCQkJCQkgIG11eF9pbnB1dC0+aW5wdXQsCisJCQkJCSAgMCk7 CisJaWYgKCFyZW1vdGUpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGJyaWRnZS0+ZGV2KSB7 CisJCWRldiA9IGJyaWRnZS0+ZGV2LT5kZXY7CisJCWlmIChkZXYtPm9mX25vZGUgIT0gcmVtb3Rl KSB7CisJCQlEUk1fREVWX0RFQlVHKG11eF9pbnB1dC0+ZGV2LAorCQkJCSAgICAgICJOb3QgYXR0 YWNoaW5nIHRvIGVuZHBvaW50ICVzIiwKKwkJCQkgICAgICBkZXYtPm9mX25vZGUtPm5hbWUpOwor CQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwl9CisJb2Zfbm9kZV9wdXQocmVtb3RlKTsKKworCXJl dCA9IGRybV9vZl9maW5kX3BhbmVsX29yX2JyaWRnZShtdXhfaW5wdXQtPmRldi0+b2Zfbm9kZSwK KwkJCQkJICBtdXhfaW5wdXQtPm5faW5wdXRzIC0gMSwgMCwgJnBhbmVsLAorCQkJCQkgICZwYW5l bF9icmlkZ2UpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlpZiAocGFuZWwpIHsKKwkJ cGFuZWxfYnJpZGdlID0gZHJtX3BhbmVsX2JyaWRnZV9hZGQocGFuZWwpOworCQlpZiAoSVNfRVJS KHBhbmVsX2JyaWRnZSkpCisJCQlyZXR1cm4gUFRSX0VSUihwYW5lbF9icmlkZ2UpOworCX0KKwlt dXhfaW5wdXQtPm91dCA9IHBhbmVsX2JyaWRnZTsKKworCWlmICghbXV4X2lucHV0LT5vdXQpCisJ CXJldHVybiAtRVBST0JFX0RFRkVSOworCisJLyogQnViYmxlIGRvd25zdHJlYW0gYnJpZGdlIHRp bWluZ3MgdXB3YXJkcyAqLworCW1lbWNweSgmbXV4X2lucHV0LT50aW1pbmdzLCBtdXhfaW5wdXQt Pm91dC0+dGltaW5ncywKKwkgICAgICAgc2l6ZW9mKG11eF9pbnB1dC0+dGltaW5ncykpOworCW11 eF9pbnB1dC0+YnJpZGdlLnRpbWluZ3MgPSAmbXV4X2lucHV0LT50aW1pbmdzOworCXJldHVybiBk cm1fYnJpZGdlX2F0dGFjaChicmlkZ2UtPmVuY29kZXIsIG11eF9pbnB1dC0+b3V0LCBicmlkZ2Us CisJCQkJIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgbXV4X2lucHV0X2JyaWRnZV9kZXRhY2go c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sJc3RydWN0IG11eF9pbnB1dCAqbXV4X2lucHV0 ID0gYnJpZGdlX3RvX211eF9pbnB1dChicmlkZ2UpOworCisJZHJtX29mX3BhbmVsX2JyaWRnZV9y ZW1vdmUobXV4X2lucHV0LT5kZXYtPm9mX25vZGUsCisJCQkJICAgbXV4X2lucHV0LT5uX2lucHV0 cyAtIDEsIDApOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgbXV4 X2lucHV0X2JyaWRnZV9mdW5jcyA9IHsKKwkucHJlX2VuYWJsZSA9IG11eF9pbnB1dF9icmlkZ2Vf cHJlX2VuYWJsZSwKKwkuZGlzYWJsZSAgICA9IG11eF9pbnB1dF9icmlkZ2VfZGlzYWJsZSwKKwku YXR0YWNoCSAgICA9IG11eF9pbnB1dF9icmlkZ2VfYXR0YWNoLAorCS5kZXRhY2gJICAgID0gbXV4 X2lucHV0X2JyaWRnZV9kZXRhY2gsCit9OworCitzdGF0aWMgaW50IG11eF9pbnB1dF9zZWxlY3Rf aW5wdXQoc3RydWN0IG11eF9pbnB1dCAqbXV4X2lucHV0KQoreworCWludCByZXQ7CisKKwlEUk1f REVWX0RFQlVHKG11eF9pbnB1dC0+ZGV2LCAiVXNpbmcgaW5wdXQgJWQgYXMgcGl4ZWwgc291cmNl XG4iLAorCQkgICAgICBtdXhfaW5wdXQtPmlucHV0KTsKKwlyZXQgPSBtdXhfY29udHJvbF90cnlf c2VsZWN0KG11eF9pbnB1dC0+bXV4LCBtdXhfaW5wdXQtPmlucHV0KTsKKwlpZiAocmV0IDwgMCkg eworCQlEUk1fREVWX0VSUk9SKG11eF9pbnB1dC0+ZGV2LCAiRmFpbGVkIHRvIHNlbGVjdCBpbnB1 dDogJWRcbiIsCisJCQkgICAgICByZXQpOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRp YyBpbnQgbXV4X2lucHV0X2Rlc2VsZWN0X2lucHV0KHN0cnVjdCBtdXhfaW5wdXQgKm11eF9pbnB1 dCkKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gbXV4X2NvbnRyb2xfZGVzZWxlY3QobXV4X2lucHV0 LT5tdXgpOworCWlmIChyZXQgPCAwKSB7CisJCURSTV9ERVZfRVJST1IobXV4X2lucHV0LT5kZXYs ICJGYWlsZWQgdG8gZGVzZWxlY3QgaW5wdXQ6ICVkXG4iLAorCQkJICAgICAgcmV0KTsKKwl9CisK KwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdXhf aW5wdXRfZHRfaWRzW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJtdXgtaW5wdXQtYnJpZGdlIiwg fSwKKwl7IC8qIHNlbnRpbmVsICovIH0KK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtdXhf aW5wdXRfZHRfaWRzKTsKKworc3RhdGljIGludCBtdXhfaW5wdXRfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi0+ZGV2 Lm9mX25vZGU7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgZGV2 aWNlX25vZGUgKmVwOworCXN0cnVjdCBtdXhfaW5wdXQgKm11eF9pbnB1dDsKKwlpbnQgcmV0Owor CisJbXV4X2lucHV0ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptdXhfaW5wdXQpLCBHRlBf S0VSTkVMKTsKKwlpZiAoIW11eF9pbnB1dCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltdXhfaW5w dXQtPmRldiA9IGRldjsKKworCS8qCisJICogVGhlIGxhcmdlc3QgbnVtYmVyZWQgcG9ydCBpcyB0 aGUgb3V0cHV0IHBvcnQuIEl0IGRldGVybWluZXMKKwkgKiB0b3RhbCBudW1iZXIgb2YgcG9ydHMu CisJICovCisJZm9yX2VhY2hfZW5kcG9pbnRfb2Zfbm9kZShucCwgZXApIHsKKwkJc3RydWN0IG9m X2VuZHBvaW50IGVuZHBvaW50OworCisJCW9mX2dyYXBoX3BhcnNlX2VuZHBvaW50KGVwLCAmZW5k cG9pbnQpOworCQltdXhfaW5wdXQtPm5faW5wdXRzID0gbWF4KG11eF9pbnB1dC0+bl9pbnB1dHMs CisJCQkJCSAgZW5kcG9pbnQucG9ydCArIDEpOworCX0KKworCWlmIChtdXhfaW5wdXQtPm5faW5w dXRzIDwgMikgeworCQlEUk1fREVWX0VSUk9SKGRldiwgIk5vdCBlbm91Z2ggcG9ydHMgJWRcbiIs CisJCQkgICAgICBtdXhfaW5wdXQtPm5faW5wdXRzKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQor CisJaWYgKGRldmljZV9wcm9wZXJ0eV9yZWFkX3UzMihkZXYsICJkZWZhdWx0LWlucHV0IiwKKwkJ CQkgICAgICZtdXhfaW5wdXQtPmlucHV0KSkKKwkJbXV4X2lucHV0LT5pbnB1dCA9IDA7CisKKwlp ZiAobXV4X2lucHV0LT5pbnB1dCA+IG11eF9pbnB1dC0+bl9pbnB1dHMgLSAyKSB7CisJCURSTV9E RVZfRVJST1IoZGV2LCAiSW52YWxpZCBkZWZhdWx0IHBvcnQgJWRcbiIsCisJCQkgICAgICBtdXhf aW5wdXQtPmlucHV0KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJbXV4X2lucHV0LT5tdXgg PSBkZXZtX211eF9jb250cm9sX2dldChkZXYsIE5VTEwpOworCWlmIChJU19FUlIobXV4X2lucHV0 LT5tdXgpKSB7CisJCXJldCA9IFBUUl9FUlIobXV4X2lucHV0LT5tdXgpOworCQlpZiAocmV0ICE9 IC1FUFJPQkVfREVGRVIpCisJCQlEUk1fREVWX0VSUk9SKGRldiwgIkZhaWxlZCB0byBnZXQgbXV4 OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwltdXhfaW5wdXQtPmJyaWRnZS5k cml2ZXJfcHJpdmF0ZSA9IG11eF9pbnB1dDsKKwltdXhfaW5wdXQtPmJyaWRnZS5mdW5jcyA9ICZt dXhfaW5wdXRfYnJpZGdlX2Z1bmNzOworCW11eF9pbnB1dC0+YnJpZGdlLm9mX25vZGUgPSBkZXYt Pm9mX25vZGU7CisKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBtdXhfaW5wdXQpOworCXBtX3J1bnRp bWVfZW5hYmxlKGRldik7CisKKwlyZXQgPSBtdXhfaW5wdXRfc2VsZWN0X2lucHV0KG11eF9pbnB1 dCk7CisJaWYgKHJldCA8IDApIHsKKwkJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwor CQlyZXR1cm4gcmV0OworCX0KKworCWRybV9icmlkZ2VfYWRkKCZtdXhfaW5wdXQtPmJyaWRnZSk7 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbXV4X2lucHV0X3JlbW92ZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCBtdXhfaW5wdXQgKm11eF9pbnB1dCA9IHBs YXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOworCisJbXV4X2lucHV0X2Rlc2VsZWN0X2lucHV0KG11 eF9pbnB1dCk7CisJZHJtX2JyaWRnZV9yZW1vdmUoJm11eF9pbnB1dC0+YnJpZGdlKTsKKwlwbV9y dW50aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgcGxhdGZvcm1fZHJpdmVyIG11eF9pbnB1dF9kcml2ZXIgPSB7CisJLnByb2JlCQk9IG11eF9p bnB1dF9wcm9iZSwKKwkucmVtb3ZlCQk9IG11eF9pbnB1dF9yZW1vdmUsCisJLmRyaXZlcgkJPSB7 CisJCS5vZl9tYXRjaF90YWJsZSA9IG11eF9pbnB1dF9kdF9pZHMsCisJCS5uYW1lCT0gRFJWX05B TUUsCisJfSwKK307CisKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXV4X2lucHV0X2RyaXZlcik7 CisKK01PRFVMRV9BVVRIT1IoIlB1cmlzbSBTUEMiKTsKK01PRFVMRV9ERVNDUklQVElPTigiTXV4 IGlucHV0IGJyaWRnZSIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotLSAKMi4yNi4xCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtl cm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5l bAo=