From mboxrd@z Thu Jan 1 00:00:00 1970 From: Philipp Zabel Subject: [PATCH v2 4/5] [media] imx-ipu: Add ipu media common code Date: Wed, 18 Mar 2015 11:22:52 +0100 Message-ID: <1426674173-17088-5-git-send-email-p.zabel@pengutronix.de> References: <1426674173-17088-1-git-send-email-p.zabel@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [92.198.50.35]) by gabe.freedesktop.org (Postfix) with ESMTP id 0F4BD6E7F5 for ; Wed, 18 Mar 2015 03:23:01 -0700 (PDT) In-Reply-To: <1426674173-17088-1-git-send-email-p.zabel@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-media@vger.kernel.org Cc: Mauro Carvalho Chehab , dri-devel@lists.freedesktop.org, Hans Verkuil , kernel@pengutronix.de, Steve Longerbeam , Jean-Michel Hautbois List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgoKQWRkIHZpZGVvNGxp bnV4IEFQSSByb3V0aW5lcyBjb21tb24gdG8gZHJpdmVycyBmb3IgdW5pdHMgdGhhdAphY2NlcHQg b3IgcHJvdmlkZSB2aWRlbyBkYXRhIHZpYSB0aGUgaS5NWCBJUFUgSURNQUMgY2hhbm5lbHMsCnN1 Y2ggYXMgc2NhbGVyIG9yIGRlaW50ZXJsYWNlciBkcml2ZXJzLgoKU2lnbmVkLW9mZi1ieTogU2Fz Y2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgpTaWduZWQtb2ZmLWJ5OiBMdWNhcyBT dGFjaCA8bC5zdGFjaEBwZW5ndXRyb25peC5kZT4KU2lnbmVkLW9mZi1ieTogUGhpbGlwcCBaYWJl bCA8cC56YWJlbEBwZW5ndXRyb25peC5kZT4KLS0tCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL0tj b25maWcgICAgICAgfCAgIDIgKwogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZSAgICAg IHwgICAxICsKIGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L0tjb25maWcgICB8ICAgMiArCiBk cml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9NYWtlZmlsZSAgfCAgIDEgKwogZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9pbXgvaW14LWlwdS5jIHwgMzEzICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9pbXgtaXB1LmggfCAgMzUgKysr KwogNiBmaWxlcyBjaGFuZ2VkLCAzNTQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L0tjb25maWcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L2lteC1pcHUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L2lteC1pcHUuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWVkaWEvcGxhdGZvcm0vS2NvbmZpZyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vS2NvbmZpZwpp bmRleCBkOWI4NzJiLi42NTBhOWE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L0tjb25maWcKKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9LY29uZmlnCkBAIC0yOSw2ICsy OSw4IEBAIGNvbmZpZyBWSURFT19WSUFfQ0FNRVJBCiAKIHNvdXJjZSAiZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9kYXZpbmNpL0tjb25maWciCiAKK3NvdXJjZSAiZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9pbXgvS2NvbmZpZyIKKwogc291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL29tYXAvS2Nv bmZpZyIKIAogc291cmNlICJkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2JsYWNrZmluL0tjb25maWci CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL01ha2VmaWxlIGIvZHJpdmVycy9t ZWRpYS9wbGF0Zm9ybS9NYWtlZmlsZQppbmRleCAzZWMxNTQ3Li4yZTM1NTgxIDEwMDY0NAotLS0g YS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vTWFrZWZpbGUKQEAgLTQ0LDYgKzQ0LDcgQEAgb2JqLSQoQ09ORklHX1NPQ19DQU1FUkEp CQkrPSBzb2NfY2FtZXJhLwogCiBvYmotJChDT05GSUdfVklERU9fUkVORVNBU19WU1AxKQkrPSB2 c3AxLwogCitvYmoteQkrPSBpbXgvCiBvYmoteQkrPSBvbWFwLwogCiBvYmotJChDT05GSUdfVklE RU9fQU00MzdYX1ZQRkUpCQkrPSBhbTQzN3gvCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Bs YXRmb3JtL2lteC9LY29uZmlnIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvS2NvbmZpZwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTBjOTczCi0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvS2NvbmZpZwpAQCAtMCwwICsxLDIgQEAK K2NvbmZpZyBWSURFT19JTVhfSVBVX0NPTU1PTgorCXRyaXN0YXRlCmRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0v aW14L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZTExOWMK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL2lteC9NYWtlZmlsZQpA QCAtMCwwICsxIEBACitvYmotJChDT05GSUdfVklERU9fSU1YX0lQVV9DT01NT04pCSs9IGlteC1p cHUubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvaW14LWlwdS5jIGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9pbXgvaW14LWlwdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmMxYjg2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL21lZGlh L3BsYXRmb3JtL2lteC9pbXgtaXB1LmMKQEAgLTAsMCArMSwzMTMgQEAKKy8qCisgKiBpLk1YIElQ VXYzIGNvbW1vbiB2NGwyIHN1cHBvcnQKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2FzY2hh IEhhdWVyLCBQZW5ndXRyb25peAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMgorICogb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorICovCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVk ZSA8bWVkaWEvdjRsMi1jb21tb24uaD4KKyNpbmNsdWRlIDxtZWRpYS92NGwyLWRldi5oPgorI2lu Y2x1ZGUgPG1lZGlhL3Y0bDItaW9jdGwuaD4KKworI2luY2x1ZGUgImlteC1pcHUuaCIKKworc3Rh dGljIHN0cnVjdCBpcHVfZm10IGlwdV9mbXRfeXV2W10gPSB7CisJeworCQkuZm91cmNjID0gVjRM Ml9QSVhfRk1UX1lVVjQyMCwKKwkJLm5hbWUgPSAiWVVWIDQ6MjowIHBsYW5hciwgWUNiQ3IiLAor CQkuYnl0ZXNfcGVyX3BpeGVsID0gMSwKKwl9LCB7CisJCS5mb3VyY2MgPSBWNEwyX1BJWF9GTVRf WVZVNDIwLAorCQkubmFtZSA9ICJZVVYgNDoyOjAgcGxhbmFyLCBZQ3JDYiIsCisJCS5ieXRlc19w ZXJfcGl4ZWwgPSAxLAorCX0sIHsKKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9ZVVY0MjJQLAor CQkubmFtZSA9ICJZVVYgNDoyOjIgcGxhbmFyLCBZQ2JDciIsCisJCS5ieXRlc19wZXJfcGl4ZWwg PSAxLAorCX0sIHsKKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9OVjEyLAorCQkubmFtZSA9ICJZ VVYgNDoyOjAgcGFydGlhbCBpbnRlcmxlYXZlZCwgWUNiQ3IiLAorCQkuYnl0ZXNfcGVyX3BpeGVs ID0gMSwKKwl9LCB7CisJCS5mb3VyY2MgPSBWNEwyX1BJWF9GTVRfVVlWWSwKKwkJLm5hbWUgPSAi NDoyOjIsIHBhY2tlZCwgVVlWWSIsCisJCS5ieXRlc19wZXJfcGl4ZWwgPSAyLAorCX0sIHsKKwkJ LmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9ZVVlWLAorCQkubmFtZSA9ICI0OjI6MiwgcGFja2VkLCBZ VVlWIiwKKwkJLmJ5dGVzX3Blcl9waXhlbCA9IDIsCisJfSwKK307CisKK3N0YXRpYyBzdHJ1Y3Qg aXB1X2ZtdCBpcHVfZm10X3JnYltdID0geworCXsKKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9S R0IzMiwKKwkJLm5hbWUgPSAiUkdCODg4IiwKKwkJLmJ5dGVzX3Blcl9waXhlbCA9IDQsCisJfSwg eworCQkuZm91cmNjID0gVjRMMl9QSVhfRk1UX1JHQjI0LAorCQkubmFtZSA9ICJSR0IyNCIsCisJ CS5ieXRlc19wZXJfcGl4ZWwgPSAzLAorCX0sIHsKKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZNVF9C R1IyNCwKKwkJLm5hbWUgPSAiQkdSMjQiLAorCQkuYnl0ZXNfcGVyX3BpeGVsID0gMywKKwl9LCB7 CisJCS5mb3VyY2MgPSBWNEwyX1BJWF9GTVRfUkdCNTY1LAorCQkubmFtZSA9ICJSR0I1NjUiLAor CQkuYnl0ZXNfcGVyX3BpeGVsID0gMiwKKwl9LAorCXsKKwkJLmZvdXJjYyA9IFY0TDJfUElYX0ZN VF9CR1IzMiwKKwkJLm5hbWUgPSAiQkdSODg4IiwKKwkJLmJ5dGVzX3Blcl9waXhlbCA9IDQsCisJ fSwKK307CisKK3N0cnVjdCBpcHVfZm10ICppcHVfZmluZF9mbXRfeXV2KHVuc2lnbmVkIGludCBw aXhlbGZvcm1hdCkKK3sKKwlzdHJ1Y3QgaXB1X2ZtdCAqZm10OworCWludCBpOworCisJZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUoaXB1X2ZtdF95dXYpOyBpKyspIHsKKwkJZm10ID0gJmlwdV9m bXRfeXV2W2ldOworCQlpZiAoZm10LT5mb3VyY2MgPT0gcGl4ZWxmb3JtYXQpCisJCQlyZXR1cm4g Zm10OworCX0KKworCXJldHVybiBOVUxMOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2ZpbmRf Zm10X3l1dik7CisKK3N0cnVjdCBpcHVfZm10ICppcHVfZmluZF9mbXRfcmdiKHVuc2lnbmVkIGlu dCBwaXhlbGZvcm1hdCkKK3sKKwlzdHJ1Y3QgaXB1X2ZtdCAqZm10OworCWludCBpOworCisJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaXB1X2ZtdF9yZ2IpOyBpKyspIHsKKwkJZm10ID0gJmlw dV9mbXRfcmdiW2ldOworCQlpZiAoZm10LT5mb3VyY2MgPT0gcGl4ZWxmb3JtYXQpCisJCQlyZXR1 cm4gZm10OworCX0KKworCXJldHVybiBOVUxMOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2Zp bmRfZm10X3JnYik7CisKK3N0YXRpYyBzdHJ1Y3QgaXB1X2ZtdCAqaXB1X2ZpbmRfZm10KHVuc2ln bmVkIGxvbmcgcGl4ZWxmb3JtYXQpCit7CisJc3RydWN0IGlwdV9mbXQgKmZtdDsKKworCWZtdCA9 IGlwdV9maW5kX2ZtdF95dXYocGl4ZWxmb3JtYXQpOworCWlmIChmbXQpCisJCXJldHVybiBmbXQ7 CisJZm10ID0gaXB1X2ZpbmRfZm10X3JnYihwaXhlbGZvcm1hdCk7CisKKwlyZXR1cm4gZm10Owor fQorRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2ZpbmRfZm10KTsKKworaW50IGlwdV90cnlfZm10KHN0 cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmKQorewor CXN0cnVjdCBpcHVfZm10ICpmbXQ7CisKKwl2NGxfYm91bmRfYWxpZ25faW1hZ2UoJmYtPmZtdC5w aXgud2lkdGgsIDgsIDQwOTYsIDIsCisJCQkgICAgICAmZi0+Zm10LnBpeC5oZWlnaHQsIDIsIDQw OTYsIDEsIDApOworCisJZi0+Zm10LnBpeC5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsKKworCWZt dCA9IGlwdV9maW5kX2ZtdChmLT5mbXQucGl4LnBpeGVsZm9ybWF0KTsKKwlpZiAoIWZtdCkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlmLT5mbXQucGl4LmJ5dGVzcGVybGluZSA9IGYtPmZtdC5waXgu d2lkdGggKiBmbXQtPmJ5dGVzX3Blcl9waXhlbDsKKwlmLT5mbXQucGl4LnNpemVpbWFnZSA9IGYt PmZtdC5waXguYnl0ZXNwZXJsaW5lICogZi0+Zm10LnBpeC5oZWlnaHQ7CisJaWYgKGZtdC0+Zm91 cmNjID09IFY0TDJfUElYX0ZNVF9ZVVY0MjAgfHwKKwkgICAgZm10LT5mb3VyY2MgPT0gVjRMMl9Q SVhfRk1UX1lWVTQyMCB8fAorCSAgICBmbXQtPmZvdXJjYyA9PSBWNEwyX1BJWF9GTVRfTlYxMikK KwkJZi0+Zm10LnBpeC5zaXplaW1hZ2UgPSBmLT5mbXQucGl4LnNpemVpbWFnZSAqIDMgLyAyOwor CWVsc2UgaWYgKGZtdC0+Zm91cmNjID09IFY0TDJfUElYX0ZNVF9ZVVY0MjJQKQorCQlmLT5mbXQu cGl4LnNpemVpbWFnZSAqPSAyOworCisJZi0+Zm10LnBpeC5wcml2ID0gMDsKKworCXJldHVybiAw OworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXB1X3RyeV9mbXQpOworCitpbnQgaXB1X3RyeV9mbXRf cmdiKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpm KQoreworCXN0cnVjdCBpcHVfZm10ICpmbXQ7CisKKwlmbXQgPSBpcHVfZmluZF9mbXRfcmdiKGYt PmZtdC5waXgucGl4ZWxmb3JtYXQpOworCWlmICghZm10KQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CXJldHVybiBpcHVfdHJ5X2ZtdChmaWxlLCBmaCwgZik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChp cHVfdHJ5X2ZtdF9yZ2IpOworCitpbnQgaXB1X3RyeV9mbXRfeXV2KHN0cnVjdCBmaWxlICpmaWxl LCB2b2lkICpmaCwKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmKQoreworCXN0cnVjdCBpcHVfZm10 ICpmbXQ7CisKKwlmbXQgPSBpcHVfZmluZF9mbXRfeXV2KGYtPmZtdC5waXgucGl4ZWxmb3JtYXQp OworCWlmICghZm10KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVybiBpcHVfdHJ5X2ZtdChm aWxlLCBmaCwgZik7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpcHVfdHJ5X2ZtdF95dXYpOworCitp bnQgaXB1X2VudW1fZm10X3JnYihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisJCXN0cnVj dCB2NGwyX2ZtdGRlc2MgKmYpCit7CisJc3RydWN0IGlwdV9mbXQgKmZtdDsKKworCWlmIChmLT5p bmRleCA+PSBBUlJBWV9TSVpFKGlwdV9mbXRfcmdiKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlm bXQgPSAmaXB1X2ZtdF9yZ2JbZi0+aW5kZXhdOworCisJc3RybGNweShmLT5kZXNjcmlwdGlvbiwg Zm10LT5uYW1lLCBzaXplb2YoZi0+ZGVzY3JpcHRpb24pKTsKKwlmLT5waXhlbGZvcm1hdCA9IGZt dC0+Zm91cmNjOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpcHVfZW51bV9m bXRfcmdiKTsKKworaW50IGlwdV9lbnVtX2ZtdF95dXYoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQg KmZoLAorCQlzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQoreworCXN0cnVjdCBpcHVfZm10ICpmbXQ7 CisKKwlpZiAoZi0+aW5kZXggPj0gQVJSQVlfU0laRShpcHVfZm10X3l1dikpCisJCXJldHVybiAt RUlOVkFMOworCisJZm10ID0gJmlwdV9mbXRfeXV2W2YtPmluZGV4XTsKKworCXN0cmxjcHkoZi0+ ZGVzY3JpcHRpb24sIGZtdC0+bmFtZSwgc2l6ZW9mKGYtPmRlc2NyaXB0aW9uKSk7CisJZi0+cGl4 ZWxmb3JtYXQgPSBmbXQtPmZvdXJjYzsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTF9H UEwoaXB1X2VudW1fZm10X3l1dik7CisKK2ludCBpcHVfZW51bV9mbXQoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKmZoLAorCQlzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQoreworCXN0cnVjdCBpcHVf Zm10ICpmbXQ7CisJaW50IGluZGV4ID0gZi0+aW5kZXg7CisKKwlpZiAoaW5kZXggPj0gQVJSQVlf U0laRShpcHVfZm10X3l1dikpIHsKKwkJaW5kZXggLT0gQVJSQVlfU0laRShpcHVfZm10X3l1dik7 CisJCWlmIChpbmRleCA+PSBBUlJBWV9TSVpFKGlwdV9mbXRfcmdiKSkKKwkJCXJldHVybiAtRUlO VkFMOworCQlmbXQgPSAmaXB1X2ZtdF9yZ2JbaW5kZXhdOworCX0gZWxzZSB7CisJCWZtdCA9ICZp cHVfZm10X3l1dltpbmRleF07CisJfQorCisJc3RybGNweShmLT5kZXNjcmlwdGlvbiwgZm10LT5u YW1lLCBzaXplb2YoZi0+ZGVzY3JpcHRpb24pKTsKKwlmLT5waXhlbGZvcm1hdCA9IGZtdC0+Zm91 cmNjOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpcHVfZW51bV9mbXQpOwor CitpbnQgaXB1X3NfZm10KHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwKKwkJc3RydWN0IHY0 bDJfZm9ybWF0ICpmLCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXgpCit7CisJaW50IHJldDsK KworCXJldCA9IGlwdV90cnlfZm10KGZpbGUsIGZoLCBmKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJcGl4LT53aWR0aCA9IGYtPmZtdC5waXgud2lkdGg7CisJcGl4LT5oZWlnaHQgPSBm LT5mbXQucGl4LmhlaWdodDsKKwlwaXgtPnBpeGVsZm9ybWF0ID0gZi0+Zm10LnBpeC5waXhlbGZv cm1hdDsKKwlwaXgtPmJ5dGVzcGVybGluZSA9IGYtPmZtdC5waXguYnl0ZXNwZXJsaW5lOworCXBp eC0+c2l6ZWltYWdlID0gZi0+Zm10LnBpeC5zaXplaW1hZ2U7CisJcGl4LT5jb2xvcnNwYWNlID0g Zi0+Zm10LnBpeC5jb2xvcnNwYWNlOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQ TChpcHVfc19mbXQpOworCitpbnQgaXB1X3NfZm10X3JnYihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9p ZCAqZmgsCisJCXN0cnVjdCB2NGwyX2Zvcm1hdCAqZiwgc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAq cGl4KQoreworCXN0cnVjdCBpcHVfZm10ICpmbXQ7CisKKwlmbXQgPSBpcHVfZmluZF9mbXRfcmdi KGYtPmZtdC5waXgucGl4ZWxmb3JtYXQpOworCWlmICghZm10KQorCQlyZXR1cm4gLUVJTlZBTDsK KworCXJldHVybiBpcHVfc19mbXQoZmlsZSwgZmgsIGYsIHBpeCk7Cit9CitFWFBPUlRfU1lNQk9M X0dQTChpcHVfc19mbXRfcmdiKTsKKworaW50IGlwdV9zX2ZtdF95dXYoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKmZoLAorCQlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsIHN0cnVjdCB2NGwyX3BpeF9m b3JtYXQgKnBpeCkKK3sKKwlzdHJ1Y3QgaXB1X2ZtdCAqZm10OworCisJZm10ID0gaXB1X2ZpbmRf Zm10X3l1dihmLT5mbXQucGl4LnBpeGVsZm9ybWF0KTsKKwlpZiAoIWZtdCkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlyZXR1cm4gaXB1X3NfZm10KGZpbGUsIGZoLCBmLCBwaXgpOworfQorRVhQT1JU X1NZTUJPTF9HUEwoaXB1X3NfZm10X3l1dik7CisKK2ludCBpcHVfZ19mbXQoc3RydWN0IHY0bDJf Zm9ybWF0ICpmLCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXgpCit7CisJZi0+Zm10LnBpeC5m aWVsZCA9IFY0TDJfRklFTERfTk9ORTsKKwlmLT5mbXQucGl4LnBpeGVsZm9ybWF0ID0gcGl4LT5w aXhlbGZvcm1hdDsKKwlmLT5mbXQucGl4LmJ5dGVzcGVybGluZSA9IHBpeC0+Ynl0ZXNwZXJsaW5l OworCWYtPmZtdC5waXgud2lkdGggPSBwaXgtPndpZHRoOworCWYtPmZtdC5waXguaGVpZ2h0ID0g cGl4LT5oZWlnaHQ7CisJZi0+Zm10LnBpeC5zaXplaW1hZ2UgPSBwaXgtPnNpemVpbWFnZTsKKwlm LT5mbXQucGl4LmNvbG9yc3BhY2UgPSBwaXgtPmNvbG9yc3BhY2U7CisJZi0+Zm10LnBpeC5wcml2 ID0gMDsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXB1X2dfZm10KTsKKwor aW50IGlwdV9lbnVtX2ZyYW1lc2l6ZXMoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAorCQkJ c3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKQoreworCXN0cnVjdCBpcHVfZm10ICpmbXQ7 CisKKwlpZiAoZnNpemUtPmluZGV4ICE9IDApCisJCXJldHVybiAtRUlOVkFMOworCisJZm10ID0g aXB1X2ZpbmRfZm10KGZzaXplLT5waXhlbF9mb3JtYXQpOworCWlmICghZm10KQorCQlyZXR1cm4g LUVJTlZBTDsKKworCWZzaXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfQ09OVElOVU9VUzsK Kwlmc2l6ZS0+c3RlcHdpc2UubWluX3dpZHRoID0gMTsKKwlmc2l6ZS0+c3RlcHdpc2UubWluX2hl aWdodCA9IDE7CisJZnNpemUtPnN0ZXB3aXNlLm1heF93aWR0aCA9IDQwOTY7CisJZnNpemUtPnN0 ZXB3aXNlLm1heF9oZWlnaHQgPSA0MDk2OworCWZzaXplLT5zdGVwd2lzZS5zdGVwX3dpZHRoID0g ZnNpemUtPnN0ZXB3aXNlLnN0ZXBfaGVpZ2h0ID0gMTsKKworCXJldHVybiAwOworfQorRVhQT1JU X1NZTUJPTF9HUEwoaXB1X2VudW1fZnJhbWVzaXplcyk7CisKK01PRFVMRV9MSUNFTlNFKCJHUEwi KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L2lteC1pcHUuaCBiL2Ry aXZlcnMvbWVkaWEvcGxhdGZvcm0vaW14L2lteC1pcHUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi41MWMwOTgyCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS9pbXgvaW14LWlwdS5oCkBAIC0wLDAgKzEsMzUgQEAKKyNpZm5kZWYgX19NRURJQV9J TVhfSVBVX0gKKyNkZWZpbmUgX19NRURJQV9JTVhfSVBVX0gKKyNpbmNsdWRlIDxsaW51eC92aWRl b2RldjIuaD4KKworc3RydWN0IGlwdV9mbXQgeworCXUzMiBmb3VyY2M7CisJY29uc3QgY2hhciAq bmFtZTsKKwlpbnQgYnl0ZXNfcGVyX3BpeGVsOworfTsKKworaW50IGlwdV9lbnVtX2ZtdChzdHJ1 Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisJCXN0cnVjdCB2NGwyX2ZtdGRlc2MgKmYpOworaW50 IGlwdV9lbnVtX2ZtdF9yZ2Ioc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKmZoLAorCQlzdHJ1Y3Qg djRsMl9mbXRkZXNjICpmKTsKK2ludCBpcHVfZW51bV9mbXRfeXV2KHN0cnVjdCBmaWxlICpmaWxl LCB2b2lkICpmaCwKKwkJc3RydWN0IHY0bDJfZm10ZGVzYyAqZik7CitzdHJ1Y3QgaXB1X2ZtdCAq aXB1X2ZpbmRfZm10X3JnYih1bnNpZ25lZCBpbnQgcGl4ZWxmb3JtYXQpOworc3RydWN0IGlwdV9m bXQgKmlwdV9maW5kX2ZtdF95dXYodW5zaWduZWQgaW50IHBpeGVsZm9ybWF0KTsKK2ludCBpcHVf dHJ5X2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisJCXN0cnVjdCB2NGwyX2Zvcm1h dCAqZik7CitpbnQgaXB1X3RyeV9mbXRfcmdiKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwK KwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmKTsKK2ludCBpcHVfdHJ5X2ZtdF95dXYoc3RydWN0IGZp bGUgKmZpbGUsIHZvaWQgKmZoLAorCQlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYpOworaW50IGlwdV9z X2ZtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsCisJCXN0cnVjdCB2NGwyX2Zvcm1hdCAq Ziwgc3RydWN0IHY0bDJfcGl4X2Zvcm1hdCAqcGl4KTsKK2ludCBpcHVfc19mbXRfcmdiKHN0cnVj dCBmaWxlICpmaWxlLCB2b2lkICpmaCwKKwkJc3RydWN0IHY0bDJfZm9ybWF0ICpmLCBzdHJ1Y3Qg djRsMl9waXhfZm9ybWF0ICpwaXgpOworaW50IGlwdV9zX2ZtdF95dXYoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKmZoLAorCQlzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsIHN0cnVjdCB2NGwyX3BpeF9m b3JtYXQgKnBpeCk7CitpbnQgaXB1X2dfZm10KHN0cnVjdCB2NGwyX2Zvcm1hdCAqZiwgc3RydWN0 IHY0bDJfcGl4X2Zvcm1hdCAqcGl4KTsKK2ludCBpcHVfZW51bV9mcmFtZXNpemVzKHN0cnVjdCBm aWxlICpmaWxlLCB2b2lkICpmaCwKKwkJCXN0cnVjdCB2NGwyX2ZybXNpemVlbnVtICpmc2l6ZSk7 CisKKyNlbmRpZiAvKiBfX01FRElBX0lNWF9JUFVfSCAqLwotLSAKMi4xLjQKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==