From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH v3 10/10] drm/msm/dpu: Clean up dpu_media_info.h static inline functions Date: Mon, 3 Dec 2018 15:47:23 -0700 Message-ID: <20181203224723.10450-11-jcrouse@codeaurora.org> References: <20181203224723.10450-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181203224723.10450-1-jcrouse@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: freedreno@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, abhinavk@codeaurora.org, bzwang@chromium.org, seanpaul@chromium.org, dri-devel@lists.freedesktop.org, sam@ravnborg.org List-Id: linux-arm-msm@vger.kernel.org RG8gc29tZSBjbGVhbnVwIGluIHRoZSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBkZWZpbmVkIGlu CmRwdV9tZWRpYV9pbmZvLmggYnkgY2xlYW5pbmcgdXAgZ290b3MgYW5kIHVubmVlZGVkIGxvY2Fs CnZhcmlhYmxlcy4KCnYzOiBBZGRlZCBzcGFjZXMgYmV0d2VlbiBvcGVyYXRvcnMgcGVyIFNlYWwg UGF1bCBhbmQgU2FtIFJhdm5ib3JnCgpSZXZpZXdlZC1ieTogU2VhbiBQYXVsIDxzZWFuQHBvb3Js eS5ydW4+ClNpZ25lZC1vZmYtYnk6IEpvcmRhbiBDcm91c2UgPGpjcm91c2VAY29kZWF1cm9yYS5v cmc+Ci0tLQogLi4uL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9tc21fbWVkaWFfaW5mby5oICAgIHwg MTY0ICsrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyks IDEwNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9tc21fbWVkaWFfaW5mby5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvbXNt X21lZGlhX2luZm8uaAppbmRleCA3NTQ3MGVlNWIxOGYuLjlmYzlkYmRlOGEyNyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvbXNtX21lZGlhX2luZm8uaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9tc21fbWVkaWFfaW5mby5oCkBAIC04MjIsMzYg KzgyMiwzMCBAQCBlbnVtIGNvbG9yX2ZtdHMgewogICovCiBzdGF0aWMgdW5zaWduZWQgaW50IFZF TlVTX1lfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKIHsKLQl1bnNpZ25lZCBpbnQg YWxpZ25tZW50LCBzdHJpZGUgPSAwOworCXVuc2lnbmVkIGludCBzdHJpZGUgPSAwOwogCiAJaWYg KCF3aWR0aCkKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAogCXN3aXRjaCAo Y29sb3JfZm10KSB7CiAJY2FzZSBDT0xPUl9GTVRfTlYyMToKIAljYXNlIENPTE9SX0ZNVF9OVjEy OgogCWNhc2UgQ09MT1JfRk1UX05WMTJfTVZUQjoKIAljYXNlIENPTE9SX0ZNVF9OVjEyX1VCV0M6 Ci0JCWFsaWdubWVudCA9IDEyODsKLQkJc3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHdpZHRoLCBh bGlnbm1lbnQpOworCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGgsIDEyOCk7CiAJCWJy ZWFrOwogCWNhc2UgQ09MT1JfRk1UX05WMTJfQlBQMTBfVUJXQzoKLQkJYWxpZ25tZW50ID0gMjU2 OwogCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGgsIDE5Mik7Ci0JCXN0cmlkZSA9IE1T TV9NRURJQV9BTElHTihzdHJpZGUgKiA0LzMsIGFsaWdubWVudCk7CisJCXN0cmlkZSA9IE1TTV9N RURJQV9BTElHTihzdHJpZGUgKiA0IC8gMywgMjU2KTsKIAkJYnJlYWs7CiAJY2FzZSBDT0xPUl9G TVRfUDAxMF9VQldDOgotCQlhbGlnbm1lbnQgPSAyNTY7Ci0JCXN0cmlkZSA9IE1TTV9NRURJQV9B TElHTih3aWR0aCAqIDIsIGFsaWdubWVudCk7CisJCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3 aWR0aCAqIDIsIDI1Nik7CiAJCWJyZWFrOwogCWNhc2UgQ09MT1JfRk1UX1AwMTA6Ci0JCWFsaWdu bWVudCA9IDEyODsKLQkJc3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHdpZHRoKjIsIGFsaWdubWVu dCk7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6CisJCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3aWR0 aCAqIDIsIDEyOCk7CiAJCWJyZWFrOwogCX0KLWludmFsaWRfaW5wdXQ6CisKIAlyZXR1cm4gc3Ry aWRlOwogfQogCkBAIC04NjQsMzYgKzg1OCwzMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVT X1lfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKICAqLwogc3RhdGljIHVuc2lnbmVk IGludCBWRU5VU19VVl9TVFJJREUoaW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQogewotCXVuc2ln bmVkIGludCBhbGlnbm1lbnQsIHN0cmlkZSA9IDA7CisJdW5zaWduZWQgaW50IHN0cmlkZSA9IDA7 CiAKIAlpZiAoIXdpZHRoKQotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJCXJldHVybiAwOwogCiAJ c3dpdGNoIChjb2xvcl9mbXQpIHsKIAljYXNlIENPTE9SX0ZNVF9OVjIxOgogCWNhc2UgQ09MT1Jf Rk1UX05WMTI6CiAJY2FzZSBDT0xPUl9GTVRfTlYxMl9NVlRCOgogCWNhc2UgQ09MT1JfRk1UX05W MTJfVUJXQzoKLQkJYWxpZ25tZW50ID0gMTI4OwotCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04o d2lkdGgsIGFsaWdubWVudCk7CisJCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3aWR0aCwgMTI4 KTsKIAkJYnJlYWs7CiAJY2FzZSBDT0xPUl9GTVRfTlYxMl9CUFAxMF9VQldDOgotCQlhbGlnbm1l bnQgPSAyNTY7CiAJCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3aWR0aCwgMTkyKTsKLQkJc3Ry aWRlID0gTVNNX01FRElBX0FMSUdOKHN0cmlkZSAqIDQvMywgYWxpZ25tZW50KTsKKwkJc3RyaWRl ID0gTVNNX01FRElBX0FMSUdOKHN0cmlkZSAqIDQgLyAzLCAyNTYpOwogCQlicmVhazsKIAljYXNl IENPTE9SX0ZNVF9QMDEwX1VCV0M6Ci0JCWFsaWdubWVudCA9IDI1NjsKLQkJc3RyaWRlID0gTVNN X01FRElBX0FMSUdOKHdpZHRoICogMiwgYWxpZ25tZW50KTsKKwkJc3RyaWRlID0gTVNNX01FRElB X0FMSUdOKHdpZHRoICogMiwgMjU2KTsKIAkJYnJlYWs7CiAJY2FzZSBDT0xPUl9GTVRfUDAxMDoK LQkJYWxpZ25tZW50ID0gMTI4OwotCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGgqMiwg YWxpZ25tZW50KTsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKKwkJc3RyaWRlID0gTVNNX01FRElBX0FM SUdOKHdpZHRoICogMiwgMTI4KTsKIAkJYnJlYWs7CiAJfQotaW52YWxpZF9pbnB1dDoKKwogCXJl dHVybiBzdHJpZGU7CiB9CiAKQEAgLTkwNiwxMCArODk0LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgVkVOVVNfVVZfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKICAqLwogc3RhdGlj IHVuc2lnbmVkIGludCBWRU5VU19ZX1NDQU5MSU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0 KQogewotCXVuc2lnbmVkIGludCBhbGlnbm1lbnQsIHNjbGluZXMgPSAwOworCXVuc2lnbmVkIGlu dCBzY2xpbmVzID0gMDsKIAogCWlmICghaGVpZ2h0KQotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJ CXJldHVybiAwOwogCiAJc3dpdGNoIChjb2xvcl9mbXQpIHsKIAljYXNlIENPTE9SX0ZNVF9OVjIx OgpAQCAtOTE3LDE3ICs5MDUsMTQgQEAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19ZX1NDQU5M SU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQogCWNhc2UgQ09MT1JfRk1UX05WMTJfTVZU QjoKIAljYXNlIENPTE9SX0ZNVF9OVjEyX1VCV0M6CiAJY2FzZSBDT0xPUl9GTVRfUDAxMDoKLQkJ YWxpZ25tZW50ID0gMzI7CisJCXNjbGluZXMgPSBNU01fTUVESUFfQUxJR04oaGVpZ2h0LCAzMik7 CiAJCWJyZWFrOwogCWNhc2UgQ09MT1JfRk1UX05WMTJfQlBQMTBfVUJXQzoKIAljYXNlIENPTE9S X0ZNVF9QMDEwX1VCV0M6Ci0JCWFsaWdubWVudCA9IDE2OworCQlzY2xpbmVzID0gTVNNX01FRElB X0FMSUdOKGhlaWdodCwgMTYpOwogCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gMDsKIAl9 Ci0Jc2NsaW5lcyA9IE1TTV9NRURJQV9BTElHTihoZWlnaHQsIGFsaWdubWVudCk7Ci1pbnZhbGlk X2lucHV0OgorCiAJcmV0dXJuIHNjbGluZXM7CiB9CiAKQEAgLTk0MCwxMCArOTI1LDEwIEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfWV9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhl aWdodCkKICAqLwogc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19VVl9TQ0FOTElORVMoaW50IGNv bG9yX2ZtdCwgaW50IGhlaWdodCkKIHsKLQl1bnNpZ25lZCBpbnQgYWxpZ25tZW50LCBzY2xpbmVz ID0gMDsKKwl1bnNpZ25lZCBpbnQgc2NsaW5lcyA9IDA7CiAKIAlpZiAoIWhlaWdodCkKLQkJZ290 byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAogCXN3aXRjaCAoY29sb3JfZm10KSB7CiAJ Y2FzZSBDT0xPUl9GTVRfTlYyMToKQEAgLTk1MiwxOCArOTM3LDEzIEBAIHN0YXRpYyB1bnNpZ25l ZCBpbnQgVkVOVVNfVVZfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCiAJY2Fz ZSBDT0xPUl9GTVRfTlYxMl9CUFAxMF9VQldDOgogCWNhc2UgQ09MT1JfRk1UX1AwMTBfVUJXQzoK IAljYXNlIENPTE9SX0ZNVF9QMDEwOgotCQlhbGlnbm1lbnQgPSAxNjsKKwkJc2NsaW5lcyA9IE1T TV9NRURJQV9BTElHTigoaGVpZ2h0ICsgMSkgPj4gMSwgMTYpOwogCQlicmVhazsKIAljYXNlIENP TE9SX0ZNVF9OVjEyX1VCV0M6Ci0JCWFsaWdubWVudCA9IDMyOworCQlzY2xpbmVzID0gTVNNX01F RElBX0FMSUdOKChoZWlnaHQgKyAxKSA+PiAxLCAzMik7CiAJCWJyZWFrOwotCWRlZmF1bHQ6Ci0J CWdvdG8gaW52YWxpZF9pbnB1dDsKIAl9CiAKLQlzY2xpbmVzID0gTVNNX01FRElBX0FMSUdOKCho ZWlnaHQrMSk+PjEsIGFsaWdubWVudCk7Ci0KLWludmFsaWRfaW5wdXQ6CiAJcmV0dXJuIHNjbGlu ZXM7CiB9CiAKQEAgLTk3NiwxMCArOTU2LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNf VVZfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCiAgKi8KIHN0YXRpYyB1bnNp Z25lZCBpbnQgVkVOVVNfWV9NRVRBX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiB7 Ci0JaW50IHlfdGlsZV93aWR0aCA9IDAsIHlfbWV0YV9zdHJpZGUgPSAwOworCWludCB5X3RpbGVf d2lkdGggPSAwLCB5X21ldGFfc3RyaWRlOwogCiAJaWYgKCF3aWR0aCkKLQkJZ290byBpbnZhbGlk X2lucHV0OworCQlyZXR1cm4gMDsKIAogCXN3aXRjaCAoY29sb3JfZm10KSB7CiAJY2FzZSBDT0xP Ul9GTVRfTlYxMl9VQldDOgpAQCAtOTkwLDE0ICs5NzAsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGlu dCBWRU5VU19ZX01FVEFfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKIAkJeV90aWxl X3dpZHRoID0gNDg7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWdvdG8gaW52YWxpZF9pbnB1dDsK KwkJcmV0dXJuIDA7CiAJfQogCiAJeV9tZXRhX3N0cmlkZSA9IE1TTV9NRURJQV9ST1VORFVQKHdp ZHRoLCB5X3RpbGVfd2lkdGgpOwotCXlfbWV0YV9zdHJpZGUgPSBNU01fTUVESUFfQUxJR04oeV9t ZXRhX3N0cmlkZSwgNjQpOwotCi1pbnZhbGlkX2lucHV0OgotCXJldHVybiB5X21ldGFfc3RyaWRl OworCXJldHVybiBNU01fTUVESUFfQUxJR04oeV9tZXRhX3N0cmlkZSwgNjQpOwogfQogCiAvKgpA QCAtMTAwOSwxMCArOTg2LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfWV9NRVRBX1NU UklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQg VkVOVVNfWV9NRVRBX1NDQU5MSU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQogewotCWlu dCB5X3RpbGVfaGVpZ2h0ID0gMCwgeV9tZXRhX3NjYW5saW5lcyA9IDA7CisJaW50IHlfdGlsZV9o ZWlnaHQgPSAwLCB5X21ldGFfc2NhbmxpbmVzOwogCiAJaWYgKCFoZWlnaHQpCi0JCWdvdG8gaW52 YWxpZF9pbnB1dDsKKwkJcmV0dXJuIDA7CiAKIAlzd2l0Y2ggKGNvbG9yX2ZtdCkgewogCWNhc2Ug Q09MT1JfRk1UX05WMTJfVUJXQzoKQEAgLTEwMjMsMTQgKzEwMDAsMTEgQEAgc3RhdGljIHVuc2ln bmVkIGludCBWRU5VU19ZX01FVEFfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQp CiAJCXlfdGlsZV9oZWlnaHQgPSA0OwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlnb3RvIGludmFs aWRfaW5wdXQ7CisJCXJldHVybiAwOwogCX0KIAogCXlfbWV0YV9zY2FubGluZXMgPSBNU01fTUVE SUFfUk9VTkRVUChoZWlnaHQsIHlfdGlsZV9oZWlnaHQpOwotCXlfbWV0YV9zY2FubGluZXMgPSBN U01fTUVESUFfQUxJR04oeV9tZXRhX3NjYW5saW5lcywgMTYpOwotCi1pbnZhbGlkX2lucHV0Ogot CXJldHVybiB5X21ldGFfc2NhbmxpbmVzOworCXJldHVybiBNU01fTUVESUFfQUxJR04oeV9tZXRh X3NjYW5saW5lcywgMTYpOwogfQogCiAvKgpAQCAtMTA0MiwxMCArMTAxNiwxMCBAQCBzdGF0aWMg dW5zaWduZWQgaW50IFZFTlVTX1lfTUVUQV9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhl aWdodCkKICAqLwogc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19VVl9NRVRBX1NUUklERShpbnQg Y29sb3JfZm10LCBpbnQgd2lkdGgpCiB7Ci0JaW50IHV2X3RpbGVfd2lkdGggPSAwLCB1dl9tZXRh X3N0cmlkZSA9IDA7CisJaW50IHV2X3RpbGVfd2lkdGggPSAwLCB1dl9tZXRhX3N0cmlkZTsKIAog CWlmICghd2lkdGgpCi0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0dXJuIDA7CiAKIAlzd2l0 Y2ggKGNvbG9yX2ZtdCkgewogCWNhc2UgQ09MT1JfRk1UX05WMTJfVUJXQzoKQEAgLTEwNTYsMTQg KzEwMzAsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19VVl9NRVRBX1NUUklERShpbnQg Y29sb3JfZm10LCBpbnQgd2lkdGgpCiAJCXV2X3RpbGVfd2lkdGggPSAyNDsKIAkJYnJlYWs7CiAJ ZGVmYXVsdDoKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAl9CiAKIAl1dl9t ZXRhX3N0cmlkZSA9IE1TTV9NRURJQV9ST1VORFVQKCh3aWR0aCsxKT4+MSwgdXZfdGlsZV93aWR0 aCk7Ci0JdXZfbWV0YV9zdHJpZGUgPSBNU01fTUVESUFfQUxJR04odXZfbWV0YV9zdHJpZGUsIDY0 KTsKLQotaW52YWxpZF9pbnB1dDoKLQlyZXR1cm4gdXZfbWV0YV9zdHJpZGU7CisJcmV0dXJuIE1T TV9NRURJQV9BTElHTih1dl9tZXRhX3N0cmlkZSwgNjQpOwogfQogCiAvKgpAQCAtMTA3NSwxMCAr MTA0NiwxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1VWX01FVEFfU1RSSURFKGludCBj b2xvcl9mbXQsIGludCB3aWR0aCkKICAqLwogc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19VVl9N RVRBX1NDQU5MSU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQogewotCWludCB1dl90aWxl X2hlaWdodCA9IDAsIHV2X21ldGFfc2NhbmxpbmVzID0gMDsKKwlpbnQgdXZfdGlsZV9oZWlnaHQg PSAwLCB1dl9tZXRhX3NjYW5saW5lczsKIAogCWlmICghaGVpZ2h0KQotCQlnb3RvIGludmFsaWRf aW5wdXQ7CisJCXJldHVybiAwOwogCiAJc3dpdGNoIChjb2xvcl9mbXQpIHsKIAljYXNlIENPTE9S X0ZNVF9OVjEyX1VCV0M6CkBAIC0xMDg5LDIyICsxMDYwLDE5IEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgVkVOVVNfVVZfTUVUQV9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhlaWdodCkKIAkJ dXZfdGlsZV9oZWlnaHQgPSA0OwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlnb3RvIGludmFsaWRf aW5wdXQ7CisJCXJldHVybiAwOwogCX0KIAogCXV2X21ldGFfc2NhbmxpbmVzID0gTVNNX01FRElB X1JPVU5EVVAoKGhlaWdodCsxKT4+MSwgdXZfdGlsZV9oZWlnaHQpOwotCXV2X21ldGFfc2Nhbmxp bmVzID0gTVNNX01FRElBX0FMSUdOKHV2X21ldGFfc2NhbmxpbmVzLCAxNik7Ci0KLWludmFsaWRf aW5wdXQ6Ci0JcmV0dXJuIHV2X21ldGFfc2NhbmxpbmVzOworCXJldHVybiBNU01fTUVESUFfQUxJ R04odXZfbWV0YV9zY2FubGluZXMsIDE2KTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBWRU5V U19SR0JfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKIHsKLQl1bnNpZ25lZCBpbnQg YWxpZ25tZW50ID0gMCwgc3RyaWRlID0gMCwgYnBwID0gNDsKKwl1bnNpZ25lZCBpbnQgYWxpZ25t ZW50ID0gMCwgYnBwID0gNDsKIAogCWlmICghd2lkdGgpCi0JCWdvdG8gaW52YWxpZF9pbnB1dDsK KwkJcmV0dXJuIDA7CiAKIAlzd2l0Y2ggKGNvbG9yX2ZtdCkgewogCWNhc2UgQ09MT1JfRk1UX1JH QkE4ODg4OgpAQCAtMTExOSwyMSArMTA4NywxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVT X1JHQl9TVFJJREUoaW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQogCQlhbGlnbm1lbnQgPSAyNTY7 CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0dXJuIDA7 CiAJfQogCi0Jc3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHdpZHRoICogYnBwLCBhbGlnbm1lbnQp OwotCi1pbnZhbGlkX2lucHV0OgotCXJldHVybiBzdHJpZGU7CisJcmV0dXJuIE1TTV9NRURJQV9B TElHTih3aWR0aCAqIGJwcCwgYWxpZ25tZW50KTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBW RU5VU19SR0JfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCiB7Ci0JdW5zaWdu ZWQgaW50IGFsaWdubWVudCA9IDAsIHNjYW5saW5lcyA9IDA7CisJdW5zaWduZWQgaW50IGFsaWdu bWVudCA9IDA7CiAKIAlpZiAoIWhlaWdodCkKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1 cm4gMDsKIAogCXN3aXRjaCAoY29sb3JfZm10KSB7CiAJY2FzZSBDT0xPUl9GTVRfUkdCQTg4ODg6 CkBAIC0xMTQ1LDYxICsxMTEwLDQ2IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfUkdCX1ND QU5MSU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQogCQlhbGlnbm1lbnQgPSAxNjsKIAkJ YnJlYWs7CiAJZGVmYXVsdDoKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAl9 CiAKLQlzY2FubGluZXMgPSBNU01fTUVESUFfQUxJR04oaGVpZ2h0LCBhbGlnbm1lbnQpOwotCi1p bnZhbGlkX2lucHV0OgotCXJldHVybiBzY2FubGluZXM7CisJcmV0dXJuIE1TTV9NRURJQV9BTElH TihoZWlnaHQsIGFsaWdubWVudCk7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfUkdC X01FVEFfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKIHsKLQlpbnQgcmdiX3RpbGVf d2lkdGggPSAwLCByZ2JfbWV0YV9zdHJpZGUgPSAwOworCWludCByZ2JfbWV0YV9zdHJpZGU7CiAK IAlpZiAoIXdpZHRoKQotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJCXJldHVybiAwOwogCiAJc3dp dGNoIChjb2xvcl9mbXQpIHsKIAljYXNlIENPTE9SX0ZNVF9SR0JBODg4OF9VQldDOgogCWNhc2Ug Q09MT1JfRk1UX1JHQkExMDEwMTAyX1VCV0M6CiAJY2FzZSBDT0xPUl9GTVRfUkdCNTY1X1VCV0M6 Ci0JCXJnYl90aWxlX3dpZHRoID0gMTY7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCWdvdG8gaW52 YWxpZF9pbnB1dDsKKwkJcmdiX21ldGFfc3RyaWRlID0gTVNNX01FRElBX1JPVU5EVVAod2lkdGgs IDE2KTsKKwkJcmV0dXJuIE1TTV9NRURJQV9BTElHTihyZ2JfbWV0YV9zdHJpZGUsIDY0KTsKIAl9 CiAKLQlyZ2JfbWV0YV9zdHJpZGUgPSBNU01fTUVESUFfUk9VTkRVUCh3aWR0aCwgcmdiX3RpbGVf d2lkdGgpOwotCXJnYl9tZXRhX3N0cmlkZSA9IE1TTV9NRURJQV9BTElHTihyZ2JfbWV0YV9zdHJp ZGUsIDY0KTsKLQotaW52YWxpZF9pbnB1dDoKLQlyZXR1cm4gcmdiX21ldGFfc3RyaWRlOworCXJl dHVybiAwOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1JHQl9NRVRBX1NDQU5MSU5F UyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQogewotCWludCByZ2JfdGlsZV9oZWlnaHQgPSAw LCByZ2JfbWV0YV9zY2FubGluZXMgPSAwOworCWludCByZ2JfbWV0YV9zY2FubGluZXM7CiAKIAlp ZiAoIWhlaWdodCkKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAogCXN3aXRj aCAoY29sb3JfZm10KSB7CiAJY2FzZSBDT0xPUl9GTVRfUkdCQTg4ODhfVUJXQzoKIAljYXNlIENP TE9SX0ZNVF9SR0JBMTAxMDEwMl9VQldDOgogCWNhc2UgQ09MT1JfRk1UX1JHQjU2NV9VQldDOgot CQlyZ2JfdGlsZV9oZWlnaHQgPSA0OwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlnb3RvIGludmFs aWRfaW5wdXQ7CisJCXJnYl9tZXRhX3NjYW5saW5lcyA9IE1TTV9NRURJQV9ST1VORFVQKGhlaWdo dCwgNCk7CisJCXJldHVybiBNU01fTUVESUFfQUxJR04ocmdiX21ldGFfc2NhbmxpbmVzLCAxNik7 CiAJfQogCi0JcmdiX21ldGFfc2NhbmxpbmVzID0gTVNNX01FRElBX1JPVU5EVVAoaGVpZ2h0LCBy Z2JfdGlsZV9oZWlnaHQpOwotCXJnYl9tZXRhX3NjYW5saW5lcyA9IE1TTV9NRURJQV9BTElHTihy Z2JfbWV0YV9zY2FubGluZXMsIDE2KTsKLQotaW52YWxpZF9pbnB1dDoKLQlyZXR1cm4gcmdiX21l dGFfc2NhbmxpbmVzOworCXJldHVybiAwOwogfQogCiAjZW5kaWYKLS0gCjIuMTguMAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==