From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 11/11] drm/msm/dpu: Clean up dpu_media_info.h static inline functions Date: Thu, 18 Oct 2018 13:58:36 -0600 Message-ID: <20181018195836.15885-12-jcrouse@codeaurora.org> References: <20181018195836.15885-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181018195836.15885-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, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org RG8gc29tZSBjbGVhbnVwIGluIHRoZSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBkZWZpbmVkIGlu CmRwdV9tZWRpYV9pbmZvLmggYnkgY2xlYW5pbmcgdXAgZ290b3MgYW5kIHVubmVlZGVkIGxvY2Fs CnZhcmlhYmxlcy4KClNpZ25lZC1vZmYtYnk6IEpvcmRhbiBDcm91c2UgPGpjcm91c2VAY29kZWF1 cm9yYS5vcmc+Ci0tLQogLi4uL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9tc21fbWVkaWFfaW5mby5o ICAgIHwgMTY0ICsrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDU3IGluc2VydGlv bnMoKyksIDEwNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9tc21fbWVkaWFfaW5mby5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvbXNtX21lZGlhX2luZm8uaAppbmRleCA3NTQ3MGVlNWIxOGYuLjhiODMwOWYyNWMxYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvbXNtX21lZGlhX2luZm8uaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9tc21fbWVkaWFfaW5mby5oCkBAIC04 MjIsMzYgKzgyMiwzMCBAQCBlbnVtIGNvbG9yX2ZtdHMgewogICovCiBzdGF0aWMgdW5zaWduZWQg aW50IFZFTlVTX1lfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKIHsKLQl1bnNpZ25l ZCBpbnQgYWxpZ25tZW50LCBzdHJpZGUgPSAwOworCXVuc2lnbmVkIGludCBzdHJpZGUgPSAwOwog CiAJaWYgKCF3aWR0aCkKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAogCXN3 aXRjaCAoY29sb3JfZm10KSB7CiAJY2FzZSBDT0xPUl9GTVRfTlYyMToKIAljYXNlIENPTE9SX0ZN VF9OVjEyOgogCWNhc2UgQ09MT1JfRk1UX05WMTJfTVZUQjoKIAljYXNlIENPTE9SX0ZNVF9OVjEy X1VCV0M6Ci0JCWFsaWdubWVudCA9IDEyODsKLQkJc3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHdp ZHRoLCBhbGlnbm1lbnQpOworCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGgsIDEyOCk7 CiAJCWJyZWFrOwogCWNhc2UgQ09MT1JfRk1UX05WMTJfQlBQMTBfVUJXQzoKLQkJYWxpZ25tZW50 ID0gMjU2OwogCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGgsIDE5Mik7Ci0JCXN0cmlk ZSA9IE1TTV9NRURJQV9BTElHTihzdHJpZGUgKiA0LzMsIGFsaWdubWVudCk7CisJCXN0cmlkZSA9 IE1TTV9NRURJQV9BTElHTihzdHJpZGUgKiA0LzMsIDI1Nik7CiAJCWJyZWFrOwogCWNhc2UgQ09M T1JfRk1UX1AwMTBfVUJXQzoKLQkJYWxpZ25tZW50ID0gMjU2OwotCQlzdHJpZGUgPSBNU01fTUVE SUFfQUxJR04od2lkdGggKiAyLCBhbGlnbm1lbnQpOworCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJ R04od2lkdGggKiAyLCAyNTYpOwogCQlicmVhazsKIAljYXNlIENPTE9SX0ZNVF9QMDEwOgotCQlh bGlnbm1lbnQgPSAxMjg7Ci0JCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3aWR0aCoyLCBhbGln bm1lbnQpOwotCQlicmVhazsKLQlkZWZhdWx0OgorCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04o d2lkdGggKiAyLCAxMjgpOwogCQlicmVhazsKIAl9Ci1pbnZhbGlkX2lucHV0OgorCiAJcmV0dXJu IHN0cmlkZTsKIH0KIApAQCAtODY0LDM2ICs4NTgsMzAgQEAgc3RhdGljIHVuc2lnbmVkIGludCBW RU5VU19ZX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiAgKi8KIHN0YXRpYyB1bnNp Z25lZCBpbnQgVkVOVVNfVVZfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKIHsKLQl1 bnNpZ25lZCBpbnQgYWxpZ25tZW50LCBzdHJpZGUgPSAwOworCXVuc2lnbmVkIGludCBzdHJpZGUg PSAwOwogCiAJaWYgKCF3aWR0aCkKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsK IAogCXN3aXRjaCAoY29sb3JfZm10KSB7CiAJY2FzZSBDT0xPUl9GTVRfTlYyMToKIAljYXNlIENP TE9SX0ZNVF9OVjEyOgogCWNhc2UgQ09MT1JfRk1UX05WMTJfTVZUQjoKIAljYXNlIENPTE9SX0ZN VF9OVjEyX1VCV0M6Ci0JCWFsaWdubWVudCA9IDEyODsKLQkJc3RyaWRlID0gTVNNX01FRElBX0FM SUdOKHdpZHRoLCBhbGlnbm1lbnQpOworCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGgs IDEyOCk7CiAJCWJyZWFrOwogCWNhc2UgQ09MT1JfRk1UX05WMTJfQlBQMTBfVUJXQzoKLQkJYWxp Z25tZW50ID0gMjU2OwogCQlzdHJpZGUgPSBNU01fTUVESUFfQUxJR04od2lkdGgsIDE5Mik7Ci0J CXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTihzdHJpZGUgKiA0LzMsIGFsaWdubWVudCk7CisJCXN0 cmlkZSA9IE1TTV9NRURJQV9BTElHTihzdHJpZGUgKiA0LzMsIDI1Nik7CiAJCWJyZWFrOwogCWNh c2UgQ09MT1JfRk1UX1AwMTBfVUJXQzoKLQkJYWxpZ25tZW50ID0gMjU2OwotCQlzdHJpZGUgPSBN U01fTUVESUFfQUxJR04od2lkdGggKiAyLCBhbGlnbm1lbnQpOworCQlzdHJpZGUgPSBNU01fTUVE SUFfQUxJR04od2lkdGggKiAyLCAyNTYpOwogCQlicmVhazsKIAljYXNlIENPTE9SX0ZNVF9QMDEw OgotCQlhbGlnbm1lbnQgPSAxMjg7Ci0JCXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3aWR0aCoy LCBhbGlnbm1lbnQpOwotCQlicmVhazsKLQlkZWZhdWx0OgorCQlzdHJpZGUgPSBNU01fTUVESUFf QUxJR04od2lkdGgqMiwgMTI4KTsKIAkJYnJlYWs7CiAJfQotaW52YWxpZF9pbnB1dDoKKwogCXJl dHVybiBzdHJpZGU7CiB9CiAKQEAgLTkwNiwxMCArODk0LDEwIEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgVkVOVVNfVVZfU1RSSURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKICAqLwogc3RhdGlj IHVuc2lnbmVkIGludCBWRU5VU19ZX1NDQU5MSU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0 KQogewotCXVuc2lnbmVkIGludCBhbGlnbm1lbnQsIHNjbGluZXMgPSAwOworCXVuc2lnbmVkIGlu dCBzY2xpbmVzID0gMDsKIAogCWlmICghaGVpZ2h0KQotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJ CXJldHVybiAwOwogCiAJc3dpdGNoIChjb2xvcl9mbXQpIHsKIAljYXNlIENPTE9SX0ZNVF9OVjIx OgpAQCAtOTE3LDE3ICs5MDUsMTQgQEAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19ZX1NDQU5M SU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQogCWNhc2UgQ09MT1JfRk1UX05WMTJfTVZU QjoKIAljYXNlIENPTE9SX0ZNVF9OVjEyX1VCV0M6CiAJY2FzZSBDT0xPUl9GTVRfUDAxMDoKLQkJ YWxpZ25tZW50ID0gMzI7CisJCXNjbGluZXMgPSBNU01fTUVESUFfQUxJR04oaGVpZ2h0LCAzMik7 CiAJCWJyZWFrOwogCWNhc2UgQ09MT1JfRk1UX05WMTJfQlBQMTBfVUJXQzoKIAljYXNlIENPTE9S X0ZNVF9QMDEwX1VCV0M6Ci0JCWFsaWdubWVudCA9IDE2OworCQlzY2xpbmVzID0gTVNNX01FRElB X0FMSUdOKGhlaWdodCwgMTYpOwogCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gMDsKIAl9 Ci0Jc2NsaW5lcyA9IE1TTV9NRURJQV9BTElHTihoZWlnaHQsIGFsaWdubWVudCk7Ci1pbnZhbGlk X2lucHV0OgorCiAJcmV0dXJuIHNjbGluZXM7CiB9CiAKQEAgLTk0MCwxMCArOTI1LDEwIEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfWV9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhl aWdodCkKICAqLwogc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19VVl9TQ0FOTElORVMoaW50IGNv bG9yX2ZtdCwgaW50IGhlaWdodCkKIHsKLQl1bnNpZ25lZCBpbnQgYWxpZ25tZW50LCBzY2xpbmVz ID0gMDsKKwl1bnNpZ25lZCBpbnQgc2NsaW5lcyA9IDA7CiAKIAlpZiAoIWhlaWdodCkKLQkJZ290 byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAogCXN3aXRjaCAoY29sb3JfZm10KSB7CiAJ Y2FzZSBDT0xPUl9GTVRfTlYyMToKQEAgLTk1MiwxOCArOTM3LDEzIEBAIHN0YXRpYyB1bnNpZ25l ZCBpbnQgVkVOVVNfVVZfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCiAJY2Fz ZSBDT0xPUl9GTVRfTlYxMl9CUFAxMF9VQldDOgogCWNhc2UgQ09MT1JfRk1UX1AwMTBfVUJXQzoK IAljYXNlIENPTE9SX0ZNVF9QMDEwOgotCQlhbGlnbm1lbnQgPSAxNjsKKwkJc2NsaW5lcyA9IE1T TV9NRURJQV9BTElHTigoaGVpZ2h0KzEpPj4xLCAxNik7CiAJCWJyZWFrOwogCWNhc2UgQ09MT1Jf Rk1UX05WMTJfVUJXQzoKLQkJYWxpZ25tZW50ID0gMzI7CisJCXNjbGluZXMgPSBNU01fTUVESUFf QUxJR04oKGhlaWdodCsxKT4+MSwgMzIpOwogCQlicmVhazsKLQlkZWZhdWx0OgotCQlnb3RvIGlu dmFsaWRfaW5wdXQ7CiAJfQogCi0Jc2NsaW5lcyA9IE1TTV9NRURJQV9BTElHTigoaGVpZ2h0KzEp Pj4xLCBhbGlnbm1lbnQpOwotCi1pbnZhbGlkX2lucHV0OgogCXJldHVybiBzY2xpbmVzOwogfQog CkBAIC05NzYsMTAgKzk1NiwxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1VWX1NDQU5M SU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQogICovCiBzdGF0aWMgdW5zaWduZWQgaW50 IFZFTlVTX1lfTUVUQV9TVFJJREUoaW50IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQogewotCWludCB5 X3RpbGVfd2lkdGggPSAwLCB5X21ldGFfc3RyaWRlID0gMDsKKwlpbnQgeV90aWxlX3dpZHRoID0g MCwgeV9tZXRhX3N0cmlkZTsKIAogCWlmICghd2lkdGgpCi0JCWdvdG8gaW52YWxpZF9pbnB1dDsK KwkJcmV0dXJuIDA7CiAKIAlzd2l0Y2ggKGNvbG9yX2ZtdCkgewogCWNhc2UgQ09MT1JfRk1UX05W MTJfVUJXQzoKQEAgLTk5MCwxNCArOTcwLDExIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNf WV9NRVRBX1NUUklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiAJCXlfdGlsZV93aWR0aCA9 IDQ4OwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJCXJldHVy biAwOwogCX0KIAogCXlfbWV0YV9zdHJpZGUgPSBNU01fTUVESUFfUk9VTkRVUCh3aWR0aCwgeV90 aWxlX3dpZHRoKTsKLQl5X21ldGFfc3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHlfbWV0YV9zdHJp ZGUsIDY0KTsKLQotaW52YWxpZF9pbnB1dDoKLQlyZXR1cm4geV9tZXRhX3N0cmlkZTsKKwlyZXR1 cm4gTVNNX01FRElBX0FMSUdOKHlfbWV0YV9zdHJpZGUsIDY0KTsKIH0KIAogLyoKQEAgLTEwMDks MTAgKzk4NiwxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1lfTUVUQV9TVFJJREUoaW50 IGNvbG9yX2ZtdCwgaW50IHdpZHRoKQogICovCiBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1lf TUVUQV9TQ0FOTElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhlaWdodCkKIHsKLQlpbnQgeV90aWxl X2hlaWdodCA9IDAsIHlfbWV0YV9zY2FubGluZXMgPSAwOworCWludCB5X3RpbGVfaGVpZ2h0ID0g MCwgeV9tZXRhX3NjYW5saW5lczsKIAogCWlmICghaGVpZ2h0KQotCQlnb3RvIGludmFsaWRfaW5w dXQ7CisJCXJldHVybiAwOwogCiAJc3dpdGNoIChjb2xvcl9mbXQpIHsKIAljYXNlIENPTE9SX0ZN VF9OVjEyX1VCV0M6CkBAIC0xMDIzLDE0ICsxMDAwLDExIEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQg VkVOVVNfWV9NRVRBX1NDQU5MSU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQogCQl5X3Rp bGVfaGVpZ2h0ID0gNDsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZ290byBpbnZhbGlkX2lucHV0 OworCQlyZXR1cm4gMDsKIAl9CiAKIAl5X21ldGFfc2NhbmxpbmVzID0gTVNNX01FRElBX1JPVU5E VVAoaGVpZ2h0LCB5X3RpbGVfaGVpZ2h0KTsKLQl5X21ldGFfc2NhbmxpbmVzID0gTVNNX01FRElB X0FMSUdOKHlfbWV0YV9zY2FubGluZXMsIDE2KTsKLQotaW52YWxpZF9pbnB1dDoKLQlyZXR1cm4g eV9tZXRhX3NjYW5saW5lczsKKwlyZXR1cm4gTVNNX01FRElBX0FMSUdOKHlfbWV0YV9zY2FubGlu ZXMsIDE2KTsKIH0KIAogLyoKQEAgLTEwNDIsMTAgKzEwMTYsMTAgQEAgc3RhdGljIHVuc2lnbmVk IGludCBWRU5VU19ZX01FVEFfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCiAg Ki8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfVVZfTUVUQV9TVFJJREUoaW50IGNvbG9yX2Zt dCwgaW50IHdpZHRoKQogewotCWludCB1dl90aWxlX3dpZHRoID0gMCwgdXZfbWV0YV9zdHJpZGUg PSAwOworCWludCB1dl90aWxlX3dpZHRoID0gMCwgdXZfbWV0YV9zdHJpZGU7CiAKIAlpZiAoIXdp ZHRoKQotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJCXJldHVybiAwOwogCiAJc3dpdGNoIChjb2xv cl9mbXQpIHsKIAljYXNlIENPTE9SX0ZNVF9OVjEyX1VCV0M6CkBAIC0xMDU2LDE0ICsxMDMwLDEx IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfVVZfTUVUQV9TVFJJREUoaW50IGNvbG9yX2Zt dCwgaW50IHdpZHRoKQogCQl1dl90aWxlX3dpZHRoID0gMjQ7CiAJCWJyZWFrOwogCWRlZmF1bHQ6 Ci0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0dXJuIDA7CiAJfQogCiAJdXZfbWV0YV9zdHJp ZGUgPSBNU01fTUVESUFfUk9VTkRVUCgod2lkdGgrMSk+PjEsIHV2X3RpbGVfd2lkdGgpOwotCXV2 X21ldGFfc3RyaWRlID0gTVNNX01FRElBX0FMSUdOKHV2X21ldGFfc3RyaWRlLCA2NCk7Ci0KLWlu dmFsaWRfaW5wdXQ6Ci0JcmV0dXJuIHV2X21ldGFfc3RyaWRlOworCXJldHVybiBNU01fTUVESUFf QUxJR04odXZfbWV0YV9zdHJpZGUsIDY0KTsKIH0KIAogLyoKQEAgLTEwNzUsMTAgKzEwNDYsMTAg QEAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19VVl9NRVRBX1NUUklERShpbnQgY29sb3JfZm10 LCBpbnQgd2lkdGgpCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfVVZfTUVUQV9TQ0FO TElORVMoaW50IGNvbG9yX2ZtdCwgaW50IGhlaWdodCkKIHsKLQlpbnQgdXZfdGlsZV9oZWlnaHQg PSAwLCB1dl9tZXRhX3NjYW5saW5lcyA9IDA7CisJaW50IHV2X3RpbGVfaGVpZ2h0ID0gMCwgdXZf bWV0YV9zY2FubGluZXM7CiAKIAlpZiAoIWhlaWdodCkKLQkJZ290byBpbnZhbGlkX2lucHV0Owor CQlyZXR1cm4gMDsKIAogCXN3aXRjaCAoY29sb3JfZm10KSB7CiAJY2FzZSBDT0xPUl9GTVRfTlYx Ml9VQldDOgpAQCAtMTA4OSwyMiArMTA2MCwxOSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVT X1VWX01FVEFfU0NBTkxJTkVTKGludCBjb2xvcl9mbXQsIGludCBoZWlnaHQpCiAJCXV2X3RpbGVf aGVpZ2h0ID0gNDsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZ290byBpbnZhbGlkX2lucHV0Owor CQlyZXR1cm4gMDsKIAl9CiAKIAl1dl9tZXRhX3NjYW5saW5lcyA9IE1TTV9NRURJQV9ST1VORFVQ KChoZWlnaHQrMSk+PjEsIHV2X3RpbGVfaGVpZ2h0KTsKLQl1dl9tZXRhX3NjYW5saW5lcyA9IE1T TV9NRURJQV9BTElHTih1dl9tZXRhX3NjYW5saW5lcywgMTYpOwotCi1pbnZhbGlkX2lucHV0Ogot CXJldHVybiB1dl9tZXRhX3NjYW5saW5lczsKKwlyZXR1cm4gTVNNX01FRElBX0FMSUdOKHV2X21l dGFfc2NhbmxpbmVzLCAxNik7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfUkdCX1NU UklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiB7Ci0JdW5zaWduZWQgaW50IGFsaWdubWVu dCA9IDAsIHN0cmlkZSA9IDAsIGJwcCA9IDQ7CisJdW5zaWduZWQgaW50IGFsaWdubWVudCA9IDAs IGJwcCA9IDQ7CiAKIAlpZiAoIXdpZHRoKQotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJCXJldHVy biAwOwogCiAJc3dpdGNoIChjb2xvcl9mbXQpIHsKIAljYXNlIENPTE9SX0ZNVF9SR0JBODg4ODoK QEAgLTExMTksMjEgKzEwODcsMTggQEAgc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19SR0JfU1RS SURFKGludCBjb2xvcl9mbXQsIGludCB3aWR0aCkKIAkJYWxpZ25tZW50ID0gMjU2OwogCQlicmVh azsKIAlkZWZhdWx0OgotCQlnb3RvIGludmFsaWRfaW5wdXQ7CisJCXJldHVybiAwOwogCX0KIAot CXN0cmlkZSA9IE1TTV9NRURJQV9BTElHTih3aWR0aCAqIGJwcCwgYWxpZ25tZW50KTsKLQotaW52 YWxpZF9pbnB1dDoKLQlyZXR1cm4gc3RyaWRlOworCXJldHVybiBNU01fTUVESUFfQUxJR04od2lk dGggKiBicHAsIGFsaWdubWVudCk7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgVkVOVVNfUkdC X1NDQU5MSU5FUyhpbnQgY29sb3JfZm10LCBpbnQgaGVpZ2h0KQogewotCXVuc2lnbmVkIGludCBh bGlnbm1lbnQgPSAwLCBzY2FubGluZXMgPSAwOworCXVuc2lnbmVkIGludCBhbGlnbm1lbnQgPSAw OwogCiAJaWYgKCFoZWlnaHQpCi0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0dXJuIDA7CiAK IAlzd2l0Y2ggKGNvbG9yX2ZtdCkgewogCWNhc2UgQ09MT1JfRk1UX1JHQkE4ODg4OgpAQCAtMTE0 NSw2MSArMTExMCw0NiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1JHQl9TQ0FOTElORVMo aW50IGNvbG9yX2ZtdCwgaW50IGhlaWdodCkKIAkJYWxpZ25tZW50ID0gMTY7CiAJCWJyZWFrOwog CWRlZmF1bHQ6Ci0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0dXJuIDA7CiAJfQogCi0Jc2Nh bmxpbmVzID0gTVNNX01FRElBX0FMSUdOKGhlaWdodCwgYWxpZ25tZW50KTsKLQotaW52YWxpZF9p bnB1dDoKLQlyZXR1cm4gc2NhbmxpbmVzOworCXJldHVybiBNU01fTUVESUFfQUxJR04oaGVpZ2h0 LCBhbGlnbm1lbnQpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IFZFTlVTX1JHQl9NRVRBX1NU UklERShpbnQgY29sb3JfZm10LCBpbnQgd2lkdGgpCiB7Ci0JaW50IHJnYl90aWxlX3dpZHRoID0g MCwgcmdiX21ldGFfc3RyaWRlID0gMDsKKwlpbnQgcmdiX21ldGFfc3RyaWRlOwogCiAJaWYgKCF3 aWR0aCkKLQkJZ290byBpbnZhbGlkX2lucHV0OworCQlyZXR1cm4gMDsKIAogCXN3aXRjaCAoY29s b3JfZm10KSB7CiAJY2FzZSBDT0xPUl9GTVRfUkdCQTg4ODhfVUJXQzoKIAljYXNlIENPTE9SX0ZN VF9SR0JBMTAxMDEwMl9VQldDOgogCWNhc2UgQ09MT1JfRk1UX1JHQjU2NV9VQldDOgotCQlyZ2Jf dGlsZV93aWR0aCA9IDE2OwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlnb3RvIGludmFsaWRfaW5w dXQ7CisJCXJnYl9tZXRhX3N0cmlkZSA9IE1TTV9NRURJQV9ST1VORFVQKHdpZHRoLCAxNik7CisJ CXJldHVybiBNU01fTUVESUFfQUxJR04ocmdiX21ldGFfc3RyaWRlLCA2NCk7CiAJfQogCi0Jcmdi X21ldGFfc3RyaWRlID0gTVNNX01FRElBX1JPVU5EVVAod2lkdGgsIHJnYl90aWxlX3dpZHRoKTsK LQlyZ2JfbWV0YV9zdHJpZGUgPSBNU01fTUVESUFfQUxJR04ocmdiX21ldGFfc3RyaWRlLCA2NCk7 Ci0KLWludmFsaWRfaW5wdXQ6Ci0JcmV0dXJuIHJnYl9tZXRhX3N0cmlkZTsKKwlyZXR1cm4gMDsK IH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBWRU5VU19SR0JfTUVUQV9TQ0FOTElORVMoaW50IGNv bG9yX2ZtdCwgaW50IGhlaWdodCkKIHsKLQlpbnQgcmdiX3RpbGVfaGVpZ2h0ID0gMCwgcmdiX21l dGFfc2NhbmxpbmVzID0gMDsKKwlpbnQgcmdiX21ldGFfc2NhbmxpbmVzOwogCiAJaWYgKCFoZWln aHQpCi0JCWdvdG8gaW52YWxpZF9pbnB1dDsKKwkJcmV0dXJuIDA7CiAKIAlzd2l0Y2ggKGNvbG9y X2ZtdCkgewogCWNhc2UgQ09MT1JfRk1UX1JHQkE4ODg4X1VCV0M6CiAJY2FzZSBDT0xPUl9GTVRf UkdCQTEwMTAxMDJfVUJXQzoKIAljYXNlIENPTE9SX0ZNVF9SR0I1NjVfVUJXQzoKLQkJcmdiX3Rp bGVfaGVpZ2h0ID0gNDsKLQkJYnJlYWs7Ci0JZGVmYXVsdDoKLQkJZ290byBpbnZhbGlkX2lucHV0 OworCQlyZ2JfbWV0YV9zY2FubGluZXMgPSBNU01fTUVESUFfUk9VTkRVUChoZWlnaHQsIDQpOwor CQlyZXR1cm4gTVNNX01FRElBX0FMSUdOKHJnYl9tZXRhX3NjYW5saW5lcywgMTYpOwogCX0KIAot CXJnYl9tZXRhX3NjYW5saW5lcyA9IE1TTV9NRURJQV9ST1VORFVQKGhlaWdodCwgcmdiX3RpbGVf aGVpZ2h0KTsKLQlyZ2JfbWV0YV9zY2FubGluZXMgPSBNU01fTUVESUFfQUxJR04ocmdiX21ldGFf c2NhbmxpbmVzLCAxNik7Ci0KLWludmFsaWRfaW5wdXQ6Ci0JcmV0dXJuIHJnYl9tZXRhX3NjYW5s aW5lczsKKwlyZXR1cm4gMDsKIH0KIAogI2VuZGlmCi0tIAoyLjE4LjAKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QK RnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=