From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH v3 2/2] drm/msm/dpu: Clean up dpu_media_info.h static inline functions Date: Wed, 7 Nov 2018 12:55:03 -0700 Message-ID: <20181107195503.12204-2-jcrouse@codeaurora.org> References: <20181105233103.7657-1-jcrouse@codeaurora.org> <20181107195503.12204-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181107195503.12204-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, bzwang-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, sam-uyr5N9Q2VtJg9hUCZPvPmw@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org RG8gc29tZSBjbGVhbnVwIGluIHRoZSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBkZWZpbmVkIGlu CmRwdV9tZWRpYV9pbmZvLmggYnkgY2xlYW5pbmcgdXAgZ290b3MgYW5kIHVubmVlZGVkIGxvY2Fs CnZhcmlhYmxlcy4KCnYzOiBBZGRlZCBzcGFjZXMgYmV0d2VlbiBvcGVyYXRvcnMgcGVyIFNlYWwg UGF1bCBhbmQgU2FtIFJhdm5ib3JnCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxqY3Jv dXNlQGNvZGVhdXJvcmEub3JnPgotLS0KIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEvbXNtX21l ZGlhX2luZm8uaCAgICB8IDE2NCArKysrKystLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1 NyBpbnNlcnRpb25zKCspLCAxMDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvbXNtX21lZGlhX2luZm8uaCBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL21zbV9tZWRpYV9pbmZvLmgKaW5kZXggNzU0NzBlZTViMThmLi45ZmM5ZGJk ZThhMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL21zbV9tZWRp YV9pbmZvLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvbXNtX21lZGlhX2lu Zm8uaApAQCAtODIyLDM2ICs4MjIsMzAgQEAgZW51bSBjb2xvcl9mbXRzIHsKICAqLwogc3RhdGlj IHVuc2lnbmVkIGludCBWRU5VU19ZX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiB7 Ci0JdW5zaWduZWQgaW50IGFsaWdubWVudCwgc3RyaWRlID0gMDsKKwl1bnNpZ25lZCBpbnQgc3Ry aWRlID0gMDsKIAogCWlmICghd2lkdGgpCi0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0dXJu IDA7CiAKIAlzd2l0Y2ggKGNvbG9yX2ZtdCkgewogCWNhc2UgQ09MT1JfRk1UX05WMjE6CiAJY2Fz ZSBDT0xPUl9GTVRfTlYxMjoKIAljYXNlIENPTE9SX0ZNVF9OVjEyX01WVEI6CiAJY2FzZSBDT0xP Ul9GTVRfTlYxMl9VQldDOgotCQlhbGlnbm1lbnQgPSAxMjg7Ci0JCXN0cmlkZSA9IE1TTV9NRURJ QV9BTElHTih3aWR0aCwgYWxpZ25tZW50KTsKKwkJc3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHdp ZHRoLCAxMjgpOwogCQlicmVhazsKIAljYXNlIENPTE9SX0ZNVF9OVjEyX0JQUDEwX1VCV0M6Ci0J CWFsaWdubWVudCA9IDI1NjsKIAkJc3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHdpZHRoLCAxOTIp OwotCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04oc3RyaWRlICogNC8zLCBhbGlnbm1lbnQpOwor CQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04oc3RyaWRlICogNCAvIDMsIDI1Nik7CiAJCWJyZWFr OwogCWNhc2UgQ09MT1JfRk1UX1AwMTBfVUJXQzoKLQkJYWxpZ25tZW50ID0gMjU2OwotCQlzdHJp ZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGggKiAyLCBhbGlnbm1lbnQpOworCQlzdHJpZGUgPSBN U01fTUVESUFfQUxJR04od2lkdGggKiAyLCAyNTYpOwogCQlicmVhazsKIAljYXNlIENPTE9SX0ZN VF9QMDEwOgotCQlhbGlnbm1lbnQgPSAxMjg7Ci0JCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3 aWR0aCoyLCBhbGlnbm1lbnQpOwotCQlicmVhazsKLQlkZWZhdWx0OgorCQlzdHJpZGUgPSBNU01f TUVESUFfQUxJR04od2lkdGggKiAyLCAxMjgpOwogCQlicmVhazsKIAl9Ci1pbnZhbGlkX2lucHV0 OgorCiAJcmV0dXJuIHN0cmlkZTsKIH0KIApAQCAtODY0LDM2ICs4NTgsMzAgQEAgc3RhdGljIHVu c2lnbmVkIGludCBWRU5VU19ZX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiAgKi8K IHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfVVZfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3 aWR0aCkKIHsKLQl1bnNpZ25lZCBpbnQgYWxpZ25tZW50LCBzdHJpZGUgPSAwOworCXVuc2lnbmVk IGludCBzdHJpZGUgPSAwOwogCiAJaWYgKCF3aWR0aCkKLQkJZ290byBpbnZhbGlkX2lucHV0Owor CQlyZXR1cm4gMDsKIAogCXN3aXRjaCAoY29sb3JfZm10KSB7CiAJY2FzZSBDT0xPUl9GTVRfTlYy MToKIAljYXNlIENPTE9SX0ZNVF9OVjEyOgogCWNhc2UgQ09MT1JfRk1UX05WMTJfTVZUQjoKIAlj YXNlIENPTE9SX0ZNVF9OVjEyX1VCV0M6Ci0JCWFsaWdubWVudCA9IDEyODsKLQkJc3RyaWRlID0g TVNNX01FRElBX0FMSUdOKHdpZHRoLCBhbGlnbm1lbnQpOworCQlzdHJpZGUgPSBNU01fTUVESUFf QUxJR04od2lkdGgsIDEyOCk7CiAJCWJyZWFrOwogCWNhc2UgQ09MT1JfRk1UX05WMTJfQlBQMTBf VUJXQzoKLQkJYWxpZ25tZW50ID0gMjU2OwogCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lk dGgsIDE5Mik7Ci0JCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTihzdHJpZGUgKiA0LzMsIGFsaWdu bWVudCk7CisJCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTihzdHJpZGUgKiA0IC8gMywgMjU2KTsK IAkJYnJlYWs7CiAJY2FzZSBDT0xPUl9GTVRfUDAxMF9VQldDOgotCQlhbGlnbm1lbnQgPSAyNTY7 Ci0JCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3aWR0aCAqIDIsIGFsaWdubWVudCk7CisJCXN0 cmlkZSA9IE1TTV9NRURJQV9BTElHTih3aWR0aCAqIDIsIDI1Nik7CiAJCWJyZWFrOwogCWNhc2Ug Q09MT1JfRk1UX1AwMTA6Ci0JCWFsaWdubWVudCA9IDEyODsKLQkJc3RyaWRlID0gTVNNX01FRElB X0FMSUdOKHdpZHRoKjIsIGFsaWdubWVudCk7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6CisJCXN0cmlk ZSA9IE1TTV9NRURJQV9BTElHTih3aWR0aCAqIDIsIDEyOCk7CiAJCWJyZWFrOwogCX0KLWludmFs aWRfaW5wdXQ6CisKIAlyZXR1cm4gc3RyaWRlOwogfQogCkBAIC05MDYsMTAgKzg5NCwxMCBAQCBz dGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1VWX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQgd2lk dGgpCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfWV9TQ0FOTElORVMoaW50IGNvbG9y X2ZtdCwgaW50IGhlaWdodCkKIHsKLQl1bnNpZ25lZCBpbnQgYWxpZ25tZW50LCBzY2xpbmVzID0g MDsKKwl1bnNpZ25lZCBpbnQgc2NsaW5lcyA9IDA7CiAKIAlpZiAoIWhlaWdodCkKLQkJZ290byBp bnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAogCXN3aXRjaCAoY29sb3JfZm10KSB7CiAJY2Fz ZSBDT0xPUl9GTVRfTlYyMToKQEAgLTkxNywxNyArOTA1LDE0IEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgVkVOVVNfWV9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhlaWdodCkKIAljYXNlIENP TE9SX0ZNVF9OVjEyX01WVEI6CiAJY2FzZSBDT0xPUl9GTVRfTlYxMl9VQldDOgogCWNhc2UgQ09M T1JfRk1UX1AwMTA6Ci0JCWFsaWdubWVudCA9IDMyOworCQlzY2xpbmVzID0gTVNNX01FRElBX0FM SUdOKGhlaWdodCwgMzIpOwogCQlicmVhazsKIAljYXNlIENPTE9SX0ZNVF9OVjEyX0JQUDEwX1VC V0M6CiAJY2FzZSBDT0xPUl9GTVRfUDAxMF9VQldDOgotCQlhbGlnbm1lbnQgPSAxNjsKKwkJc2Ns aW5lcyA9IE1TTV9NRURJQV9BTElHTihoZWlnaHQsIDE2KTsKIAkJYnJlYWs7Ci0JZGVmYXVsdDoK LQkJcmV0dXJuIDA7CiAJfQotCXNjbGluZXMgPSBNU01fTUVESUFfQUxJR04oaGVpZ2h0LCBhbGln bm1lbnQpOwotaW52YWxpZF9pbnB1dDoKKwogCXJldHVybiBzY2xpbmVzOwogfQogCkBAIC05NDAs MTAgKzkyNSwxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1lfU0NBTkxJTkVTKGludCBj b2xvcl9mbXQsIGludCBoZWlnaHQpCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfVVZf U0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCiB7Ci0JdW5zaWduZWQgaW50IGFs aWdubWVudCwgc2NsaW5lcyA9IDA7CisJdW5zaWduZWQgaW50IHNjbGluZXMgPSAwOwogCiAJaWYg KCFoZWlnaHQpCi0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0dXJuIDA7CiAKIAlzd2l0Y2gg KGNvbG9yX2ZtdCkgewogCWNhc2UgQ09MT1JfRk1UX05WMjE6CkBAIC05NTIsMTggKzkzNywxMyBA QCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1VWX1NDQU5MSU5FUyhpbnQgY29sb3JfZm10LCBp bnQgaGVpZ2h0KQogCWNhc2UgQ09MT1JfRk1UX05WMTJfQlBQMTBfVUJXQzoKIAljYXNlIENPTE9S X0ZNVF9QMDEwX1VCV0M6CiAJY2FzZSBDT0xPUl9GTVRfUDAxMDoKLQkJYWxpZ25tZW50ID0gMTY7 CisJCXNjbGluZXMgPSBNU01fTUVESUFfQUxJR04oKGhlaWdodCArIDEpID4+IDEsIDE2KTsKIAkJ YnJlYWs7CiAJY2FzZSBDT0xPUl9GTVRfTlYxMl9VQldDOgotCQlhbGlnbm1lbnQgPSAzMjsKKwkJ c2NsaW5lcyA9IE1TTV9NRURJQV9BTElHTigoaGVpZ2h0ICsgMSkgPj4gMSwgMzIpOwogCQlicmVh azsKLQlkZWZhdWx0OgotCQlnb3RvIGludmFsaWRfaW5wdXQ7CiAJfQogCi0Jc2NsaW5lcyA9IE1T TV9NRURJQV9BTElHTigoaGVpZ2h0KzEpPj4xLCBhbGlnbm1lbnQpOwotCi1pbnZhbGlkX2lucHV0 OgogCXJldHVybiBzY2xpbmVzOwogfQogCkBAIC05NzYsMTAgKzk1NiwxMCBAQCBzdGF0aWMgdW5z aWduZWQgaW50IFZFTlVTX1VWX1NDQU5MSU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQog ICovCiBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1lfTUVUQV9TVFJJREUoaW50IGNvbG9yX2Zt dCwgaW50IHdpZHRoKQogewotCWludCB5X3RpbGVfd2lkdGggPSAwLCB5X21ldGFfc3RyaWRlID0g MDsKKwlpbnQgeV90aWxlX3dpZHRoID0gMCwgeV9tZXRhX3N0cmlkZTsKIAogCWlmICghd2lkdGgp Ci0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0dXJuIDA7CiAKIAlzd2l0Y2ggKGNvbG9yX2Zt dCkgewogCWNhc2UgQ09MT1JfRk1UX05WMTJfVUJXQzoKQEAgLTk5MCwxNCArOTcwLDExIEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfWV9NRVRBX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQg d2lkdGgpCiAJCXlfdGlsZV93aWR0aCA9IDQ4OwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlnb3Rv IGludmFsaWRfaW5wdXQ7CisJCXJldHVybiAwOwogCX0KIAogCXlfbWV0YV9zdHJpZGUgPSBNU01f TUVESUFfUk9VTkRVUCh3aWR0aCwgeV90aWxlX3dpZHRoKTsKLQl5X21ldGFfc3RyaWRlID0gTVNN X01FRElBX0FMSUdOKHlfbWV0YV9zdHJpZGUsIDY0KTsKLQotaW52YWxpZF9pbnB1dDoKLQlyZXR1 cm4geV9tZXRhX3N0cmlkZTsKKwlyZXR1cm4gTVNNX01FRElBX0FMSUdOKHlfbWV0YV9zdHJpZGUs IDY0KTsKIH0KIAogLyoKQEAgLTEwMDksMTAgKzk4NiwxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50 IFZFTlVTX1lfTUVUQV9TVFJJREUoaW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQogICovCiBzdGF0 aWMgdW5zaWduZWQgaW50IFZFTlVTX1lfTUVUQV9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50 IGhlaWdodCkKIHsKLQlpbnQgeV90aWxlX2hlaWdodCA9IDAsIHlfbWV0YV9zY2FubGluZXMgPSAw OworCWludCB5X3RpbGVfaGVpZ2h0ID0gMCwgeV9tZXRhX3NjYW5saW5lczsKIAogCWlmICghaGVp Z2h0KQotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJCXJldHVybiAwOwogCiAJc3dpdGNoIChjb2xv cl9mbXQpIHsKIAljYXNlIENPTE9SX0ZNVF9OVjEyX1VCV0M6CkBAIC0xMDIzLDE0ICsxMDAwLDEx IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfWV9NRVRBX1NDQU5MSU5FUyhpbnQgY29sb3Jf Zm10LCBpbnQgaGVpZ2h0KQogCQl5X3RpbGVfaGVpZ2h0ID0gNDsKIAkJYnJlYWs7CiAJZGVmYXVs dDoKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAl9CiAKIAl5X21ldGFfc2Nh bmxpbmVzID0gTVNNX01FRElBX1JPVU5EVVAoaGVpZ2h0LCB5X3RpbGVfaGVpZ2h0KTsKLQl5X21l dGFfc2NhbmxpbmVzID0gTVNNX01FRElBX0FMSUdOKHlfbWV0YV9zY2FubGluZXMsIDE2KTsKLQot aW52YWxpZF9pbnB1dDoKLQlyZXR1cm4geV9tZXRhX3NjYW5saW5lczsKKwlyZXR1cm4gTVNNX01F RElBX0FMSUdOKHlfbWV0YV9zY2FubGluZXMsIDE2KTsKIH0KIAogLyoKQEAgLTEwNDIsMTAgKzEw MTYsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19ZX01FVEFfU0NBTkxJTkVTKGludCBj b2xvcl9mbXQsIGludCBoZWlnaHQpCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfVVZf TUVUQV9TVFJJREUoaW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQogewotCWludCB1dl90aWxlX3dp ZHRoID0gMCwgdXZfbWV0YV9zdHJpZGUgPSAwOworCWludCB1dl90aWxlX3dpZHRoID0gMCwgdXZf bWV0YV9zdHJpZGU7CiAKIAlpZiAoIXdpZHRoKQotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJCXJl dHVybiAwOwogCiAJc3dpdGNoIChjb2xvcl9mbXQpIHsKIAljYXNlIENPTE9SX0ZNVF9OVjEyX1VC V0M6CkBAIC0xMDU2LDE0ICsxMDMwLDExIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfVVZf TUVUQV9TVFJJREUoaW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQogCQl1dl90aWxlX3dpZHRoID0g MjQ7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0dXJu IDA7CiAJfQogCiAJdXZfbWV0YV9zdHJpZGUgPSBNU01fTUVESUFfUk9VTkRVUCgod2lkdGgrMSk+ PjEsIHV2X3RpbGVfd2lkdGgpOwotCXV2X21ldGFfc3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHV2 X21ldGFfc3RyaWRlLCA2NCk7Ci0KLWludmFsaWRfaW5wdXQ6Ci0JcmV0dXJuIHV2X21ldGFfc3Ry aWRlOworCXJldHVybiBNU01fTUVESUFfQUxJR04odXZfbWV0YV9zdHJpZGUsIDY0KTsKIH0KIAog LyoKQEAgLTEwNzUsMTAgKzEwNDYsMTAgQEAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19VVl9N RVRBX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiAgKi8KIHN0YXRpYyB1bnNpZ25l ZCBpbnQgVkVOVVNfVVZfTUVUQV9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhlaWdodCkK IHsKLQlpbnQgdXZfdGlsZV9oZWlnaHQgPSAwLCB1dl9tZXRhX3NjYW5saW5lcyA9IDA7CisJaW50 IHV2X3RpbGVfaGVpZ2h0ID0gMCwgdXZfbWV0YV9zY2FubGluZXM7CiAKIAlpZiAoIWhlaWdodCkK LQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAogCXN3aXRjaCAoY29sb3JfZm10 KSB7CiAJY2FzZSBDT0xPUl9GTVRfTlYxMl9VQldDOgpAQCAtMTA4OSwyMiArMTA2MCwxOSBAQCBz dGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1VWX01FVEFfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQs IGludCBoZWlnaHQpCiAJCXV2X3RpbGVfaGVpZ2h0ID0gNDsKIAkJYnJlYWs7CiAJZGVmYXVsdDoK LQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAl9CiAKIAl1dl9tZXRhX3NjYW5s aW5lcyA9IE1TTV9NRURJQV9ST1VORFVQKChoZWlnaHQrMSk+PjEsIHV2X3RpbGVfaGVpZ2h0KTsK LQl1dl9tZXRhX3NjYW5saW5lcyA9IE1TTV9NRURJQV9BTElHTih1dl9tZXRhX3NjYW5saW5lcywg MTYpOwotCi1pbnZhbGlkX2lucHV0OgotCXJldHVybiB1dl9tZXRhX3NjYW5saW5lczsKKwlyZXR1 cm4gTVNNX01FRElBX0FMSUdOKHV2X21ldGFfc2NhbmxpbmVzLCAxNik7CiB9CiAKIHN0YXRpYyB1 bnNpZ25lZCBpbnQgVkVOVVNfUkdCX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiB7 Ci0JdW5zaWduZWQgaW50IGFsaWdubWVudCA9IDAsIHN0cmlkZSA9IDAsIGJwcCA9IDQ7CisJdW5z aWduZWQgaW50IGFsaWdubWVudCA9IDAsIGJwcCA9IDQ7CiAKIAlpZiAoIXdpZHRoKQotCQlnb3Rv IGludmFsaWRfaW5wdXQ7CisJCXJldHVybiAwOwogCiAJc3dpdGNoIChjb2xvcl9mbXQpIHsKIAlj YXNlIENPTE9SX0ZNVF9SR0JBODg4ODoKQEAgLTExMTksMjEgKzEwODcsMTggQEAgc3RhdGljIHVu c2lnbmVkIGludCBWRU5VU19SR0JfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKIAkJ YWxpZ25tZW50ID0gMjU2OwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlnb3RvIGludmFsaWRfaW5w dXQ7CisJCXJldHVybiAwOwogCX0KIAotCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3aWR0aCAq IGJwcCwgYWxpZ25tZW50KTsKLQotaW52YWxpZF9pbnB1dDoKLQlyZXR1cm4gc3RyaWRlOworCXJl dHVybiBNU01fTUVESUFfQUxJR04od2lkdGggKiBicHAsIGFsaWdubWVudCk7CiB9CiAKIHN0YXRp YyB1bnNpZ25lZCBpbnQgVkVOVVNfUkdCX1NDQU5MSU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVp Z2h0KQogewotCXVuc2lnbmVkIGludCBhbGlnbm1lbnQgPSAwLCBzY2FubGluZXMgPSAwOworCXVu c2lnbmVkIGludCBhbGlnbm1lbnQgPSAwOwogCiAJaWYgKCFoZWlnaHQpCi0JCWdvdG8gaW52YWxp ZF9pbnB1dDsKKwkJcmV0dXJuIDA7CiAKIAlzd2l0Y2ggKGNvbG9yX2ZtdCkgewogCWNhc2UgQ09M T1JfRk1UX1JHQkE4ODg4OgpAQCAtMTE0NSw2MSArMTExMCw0NiBAQCBzdGF0aWMgdW5zaWduZWQg aW50IFZFTlVTX1JHQl9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhlaWdodCkKIAkJYWxp Z25tZW50ID0gMTY7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWdvdG8gaW52YWxpZF9pbnB1dDsK KwkJcmV0dXJuIDA7CiAJfQogCi0Jc2NhbmxpbmVzID0gTVNNX01FRElBX0FMSUdOKGhlaWdodCwg YWxpZ25tZW50KTsKLQotaW52YWxpZF9pbnB1dDoKLQlyZXR1cm4gc2NhbmxpbmVzOworCXJldHVy biBNU01fTUVESUFfQUxJR04oaGVpZ2h0LCBhbGlnbm1lbnQpOwogfQogCiBzdGF0aWMgdW5zaWdu ZWQgaW50IFZFTlVTX1JHQl9NRVRBX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiB7 Ci0JaW50IHJnYl90aWxlX3dpZHRoID0gMCwgcmdiX21ldGFfc3RyaWRlID0gMDsKKwlpbnQgcmdi X21ldGFfc3RyaWRlOwogCiAJaWYgKCF3aWR0aCkKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQly ZXR1cm4gMDsKIAogCXN3aXRjaCAoY29sb3JfZm10KSB7CiAJY2FzZSBDT0xPUl9GTVRfUkdCQTg4 ODhfVUJXQzoKIAljYXNlIENPTE9SX0ZNVF9SR0JBMTAxMDEwMl9VQldDOgogCWNhc2UgQ09MT1Jf Rk1UX1JHQjU2NV9VQldDOgotCQlyZ2JfdGlsZV93aWR0aCA9IDE2OwotCQlicmVhazsKLQlkZWZh dWx0OgotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJCXJnYl9tZXRhX3N0cmlkZSA9IE1TTV9NRURJ QV9ST1VORFVQKHdpZHRoLCAxNik7CisJCXJldHVybiBNU01fTUVESUFfQUxJR04ocmdiX21ldGFf c3RyaWRlLCA2NCk7CiAJfQogCi0JcmdiX21ldGFfc3RyaWRlID0gTVNNX01FRElBX1JPVU5EVVAo d2lkdGgsIHJnYl90aWxlX3dpZHRoKTsKLQlyZ2JfbWV0YV9zdHJpZGUgPSBNU01fTUVESUFfQUxJ R04ocmdiX21ldGFfc3RyaWRlLCA2NCk7Ci0KLWludmFsaWRfaW5wdXQ6Ci0JcmV0dXJuIHJnYl9t ZXRhX3N0cmlkZTsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19S R0JfTUVUQV9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhlaWdodCkKIHsKLQlpbnQgcmdi X3RpbGVfaGVpZ2h0ID0gMCwgcmdiX21ldGFfc2NhbmxpbmVzID0gMDsKKwlpbnQgcmdiX21ldGFf c2NhbmxpbmVzOwogCiAJaWYgKCFoZWlnaHQpCi0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0 dXJuIDA7CiAKIAlzd2l0Y2ggKGNvbG9yX2ZtdCkgewogCWNhc2UgQ09MT1JfRk1UX1JHQkE4ODg4 X1VCV0M6CiAJY2FzZSBDT0xPUl9GTVRfUkdCQTEwMTAxMDJfVUJXQzoKIAljYXNlIENPTE9SX0ZN VF9SR0I1NjVfVUJXQzoKLQkJcmdiX3RpbGVfaGVpZ2h0ID0gNDsKLQkJYnJlYWs7Ci0JZGVmYXVs dDoKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZ2JfbWV0YV9zY2FubGluZXMgPSBNU01fTUVE SUFfUk9VTkRVUChoZWlnaHQsIDQpOworCQlyZXR1cm4gTVNNX01FRElBX0FMSUdOKHJnYl9tZXRh X3NjYW5saW5lcywgMTYpOwogCX0KIAotCXJnYl9tZXRhX3NjYW5saW5lcyA9IE1TTV9NRURJQV9S T1VORFVQKGhlaWdodCwgcmdiX3RpbGVfaGVpZ2h0KTsKLQlyZ2JfbWV0YV9zY2FubGluZXMgPSBN U01fTUVESUFfQUxJR04ocmdiX21ldGFfc2NhbmxpbmVzLCAxNik7Ci0KLWludmFsaWRfaW5wdXQ6 Ci0JcmV0dXJuIHJnYl9tZXRhX3NjYW5saW5lczsKKwlyZXR1cm4gMDsKIH0KIAogI2VuZGlmCi0t IAoyLjE4LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=