From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nickey Yang Subject: [PATCH v2 2/8] drm/rockchip/dsi: add dual mipi channel support Date: Tue, 26 Sep 2017 15:55:17 +0800 Message-ID: <1506412523-1766-2-git-send-email-nickey.yang@rock-chips.com> References: <1506412523-1766-1-git-send-email-nickey.yang@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1506412523-1766-1-git-send-email-nickey.yang@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: mark.yao@rock-chips.com, robh+dt@kernel.org, heiko@sntech.de, mark.rutland@arm.com, airlied@linux.ie Cc: bivvy.bi@rock-chips.com, hl@rock-chips.com, briannorris@chromium.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, nickey.yang@rock-chips.com, zyw@rock-chips.com, xbl@rock-chips.com List-Id: linux-rockchip.vger.kernel.org VGhpcyBwYXRjaCBhZGQgZHVhbCBtaXBpIGNoYW5uZWwgc3VwcG9ydDoKMS5hZGQgZGVmaW5pdGlv biBvZiBkc2kxIHJlZ2lzdGVyIGFuZCBncmYgb3BlcmF0aW9uLgoyLmRzaTAgYW5kIGRzaTEgd2ls bCB3b3JrIGluIG1hc3RlciBhbmQgc2xhdmUgbW9kZQp3aGVuIGRyaXZpbmcgZHVhbCBtaXBpIHBh bmVsLgoKU2lnbmVkLW9mZi1ieTogTmlja2V5IFlhbmcgPG5pY2tleS55YW5nQHJvY2stY2hpcHMu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9kdy1taXBpLWRzaS5jICAgICAgfCAz OTAgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2RybV9kcnYuaCB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZHJtX3ZvcC5jIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9kcm1fdm9wLmggfCAgIDMgKwogNCBmaWxlcyBjaGFuZ2VkLCAyOTIgaW5zZXJ0aW9ucygrKSwg MTA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9k dy1taXBpLWRzaS5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1pcGktZHNpLmMKaW5k ZXggYzkzM2EzYS4uMTkxMDM3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L2R3LW1pcGktZHNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2R3LW1pcGktZHNp LmMKQEAgLTM5LDggKzM5LDU4IEBACiAjZGVmaW5lIFJLMzM5OV9EU0kxX1NFTF9WT1BfTElUCQlC SVQoNCkKIAogLyogZGlzYWJsZSB0dXJucmVxdWVzdCwgdHVybmRpc2FibGUsIGZvcmNldHhzdG9w bW9kZSwgZm9yY2VyeG1vZGUgKi8KLSNkZWZpbmUgUkszMzk5X0dSRl9TT0NfQ09OMjIJCTB4NjI1 OAotI2RlZmluZSBSSzMzOTlfR1JGX0RTSV9NT0RFCQkweGZmZmYwMDAwCisjZGVmaW5lIFJLMzM5 OV9HUkZfU09DX0NPTjIyCQkJMHg2MjU4CisjZGVmaW5lIERQSFlfVFgwX1RVUk5SRVFVRVNUX1NF VAkJKCgweGYgPDwgMTIpIDw8IDE2KQorI2RlZmluZSBEUEhZX1RYMF9UVVJOUkVRVUVTVF9ESVNB QkxFCQkoMHgwIDw8IDEyKQorI2RlZmluZSBEUEhZX1RYMF9UVVJOUkVRVUVTVF9FTkFCTEUJCSgw eGYgPDwgMTIpCisjZGVmaW5lIERQSFlfVFgwX1RVUk5ESVNBQkxFX1NFVAkJKCgweGYgPDwgOCkg PDwgMTYpCisjZGVmaW5lIERQSFlfVFgwX1RVUk5ESVNBQkxFX0RJU0FCTEUJCSgweDAgPDwgOCkK KyNkZWZpbmUgRFBIWV9UWDBfVFVSTkRJU0FCTEVfRU5BQkxFCQkoMHhmIDw8IDgpCisjZGVmaW5l IERQSFlfVFgwX0ZPUkNFVFhTVE9QTU9ERV9TRVQJCSgoMHhmIDw8IDQpIDw8IDE2KQorI2RlZmlu ZSBEUEhZX1RYMF9GT1JDRVRYU1RPUE1PREVfRElTQUJMRQkoMHgwIDw8IDQpCisjZGVmaW5lIERQ SFlfVFgwX0ZPUkNFVFhTVE9QTU9ERV9FTkFCTEUJCSgweGYgPDwgNCkKKyNkZWZpbmUgRFBIWV9U WDBfRk9SQ0VUUlhNT0RFX1NFVAkJKCgweGYgPDwgMCkgPDwgMTYpCisjZGVmaW5lIERQSFlfVFgw X0ZPUkNFVFJYTU9ERV9ESVNBQkxFCQkweDAKKyNkZWZpbmUgRFBIWV9UWDBfRk9SQ0VUUlhNT0RF X0VOQUJMRQkJMHhmCisjZGVmaW5lIFJLMzM5OV9HUkZfRFNJX01PREUJCQkoKERQSFlfVFgwX1RV Uk5SRVFVRVNUX1NFVCB8IFwKKwkJCQkJCSBEUEhZX1RYMF9UVVJORElTQUJMRV9TRVQgfCBcCisJ CQkJCQkgRFBIWV9UWDBfRk9SQ0VUWFNUT1BNT0RFX1NFVCB8IFwKKwkJCQkJCSBEUEhZX1RYMF9G T1JDRVRSWE1PREVfU0VUKSB8IFwKKwkJCQkJCSAoRFBIWV9UWDBfVFVSTlJFUVVFU1RfRElTQUJM RSB8IFwKKwkJCQkJCSBEUEhZX1RYMF9UVVJORElTQUJMRV9ESVNBQkxFIHwgXAorCQkJCQkJIERQ SFlfVFgwX0ZPUkNFVFhTVE9QTU9ERV9ESVNBQkxFIHwgXAorCQkJCQkJIERQSFlfVFgwX0ZPUkNF VFJYTU9ERV9ESVNBQkxFKSkKKworCisvKiBkaXNhYmxlIHR1cm5kaXNhYmxlLCBmb3JjZXR4c3Rv cG1vZGUsIGZvcmNlcnhtb2RlLCBlbmFibGUgKi8KKyNkZWZpbmUgUkszMzk5X0dSRl9TT0NfQ09O MjMJCQkweDYyNWMKKyNkZWZpbmUgRFBIWV9UWDFSWDFfVFVSTkRJU0FCTEVfU0VUCQkoKDB4ZiA8 PCAxMikgPDwgMTYpCisjZGVmaW5lIERQSFlfVFgxUlgxX1RVUk5ESVNBQkxFX0RJU0FCTEUJCSgw eDAgPDwgMTIpCisjZGVmaW5lIERQSFlfVFgxUlgxX1RVUk5ESVNBQkxFX0VOQUJMRQkJKDB4ZiA8 PCAxMikKKyNkZWZpbmUgRFBIWV9UWDFSWDFfRk9SQ0VUWFNUT1BNT0RFX1NFVAkJKCgweGYgPDwg OCkgPDwgMTYpCisjZGVmaW5lIERQSFlfVFgxUlgxX0ZPUkNFVFhTVE9QTU9ERV9ESVNBQkxFCSgw eDAgPDwgOCkKKyNkZWZpbmUgRFBIWV9UWDFSWDFfRk9SQ0VUWFNUT1BNT0RFX0VOQUJMRQkoMHhm IDw8IDgpCisjZGVmaW5lIERQSFlfVFgxUlgxX0ZPUkNFUlhNT0RFX1NFVAkJKCgweGYgPDwgNCkg PDwgMTYpCisjZGVmaW5lIERQSFlfVFgxUlgxX0ZPUkNFUlhNT0RFX0RJU0FCTEUJCSgweDAgPDwg NCkKKyNkZWZpbmUgRFBIWV9UWDFSWDFfRk9SQ0VSWE1PREVfRU5BQkxFCQkoMHhmIDw8IDQpCisj ZGVmaW5lIERQSFlfVFgxUlgxX0VOQUJMRV9TRVQJCQkoKDB4ZiA8PCAwKSA8PCAxNikKKyNkZWZp bmUgRFBIWV9UWDFSWDFfRU5BQkxFX0RJU0FCTEUJCTB4MAorI2RlZmluZSBEUEhZX1RYMVJYMV9F TkFCTEVfRU5BQkxFCQkweGYKKyNkZWZpbmUgUkszMzk5X0dSRl9EU0kxX01PREUJCQkoKERQSFlf VFgxUlgxX1RVUk5ESVNBQkxFX1NFVCB8IFwKKwkJCQkJCSBEUEhZX1RYMVJYMV9GT1JDRVRYU1RP UE1PREVfU0VUIHwgXAorCQkJCQkJIERQSFlfVFgxUlgxX0ZPUkNFUlhNT0RFX1NFVCB8IFwKKwkJ CQkJCSBEUEhZX1RYMVJYMV9FTkFCTEVfU0VUKSB8IFwKKwkJCQkJCSAoRFBIWV9UWDBfVFVSTlJF UVVFU1RfRElTQUJMRSB8IFwKKwkJCQkJCSBEUEhZX1RYMF9UVVJORElTQUJMRV9ESVNBQkxFIHwg XAorCQkJCQkJIERQSFlfVFgwX0ZPUkNFVFhTVE9QTU9ERV9ESVNBQkxFIHwgXAorCQkJCQkJIERQ SFlfVFgwX0ZPUkNFVFJYTU9ERV9ESVNBQkxFKSkKKyNkZWZpbmUgUkszMzk5X0dSRl9EU0kxX0VO QUJMRQkJCSgoRFBIWV9UWDFSWDFfRU5BQkxFX1NFVCB8IFwKKwkJCQkJCSAgRFBIWV9UWDFSWDFf RU5BQkxFX0VOQUJMRSkpCisKKyNkZWZpbmUgUkszMzk5X0dSRl9TT0NfQ09OMjQJCTB4NjI2MAor I2RlZmluZSBSSzMzOTlfVFhSWF9NQVNURVJTTEFWRVoJQklUKDcpCisjZGVmaW5lIFJLMzM5OV9U WFJYX0VOQUJMRUNMSwkJQklUKDYpCisjZGVmaW5lIFJLMzM5OV9UWFJYX0JBU0VESVIJCUJJVCg1 KQogCiAjZGVmaW5lIERTSV9WRVJTSU9OCQkJMHgwMAogI2RlZmluZSBEU0lfUFdSX1VQCQkJMHgw NApAQCAtMzA0LDYgKzM1NCwxMyBAQCBzdHJ1Y3QgZHdfbWlwaV9kc2lfcGxhdF9kYXRhIHsKIAl1 MzIgZ3JmX3N3aXRjaF9yZWc7CiAJdTMyIGdyZl9kc2kwX21vZGU7CiAJdTMyIGdyZl9kc2kwX21v ZGVfcmVnOworCXUzMiBncmZfZHNpMV9tb2RlOworCXUzMiBncmZfZHNpMV9lbmFibGU7CisJdTMy IGdyZl9kc2kxX21vZGVfcmVnMTsKKwl1MzIgZHNpMV9iYXNlZGlyOworCXUzMiBkc2kxX21hc3Rl cnNsYXZlejsKKwl1MzIgZHNpMV9lbmFibGVjbGs7CisJdTMyIGdyZl9kc2kxX21vZGVfcmVnMjsK IAl1bnNpZ25lZCBpbnQgZmxhZ3M7CiAJdW5zaWduZWQgaW50IG1heF9kYXRhX2xhbmVzOwogfTsK QEAgLTMyMiw2ICszNzksMTAgQEAgc3RydWN0IGR3X21pcGlfZHNpIHsKIAlzdHJ1Y3QgY2xrICpw Y2xrOwogCXN0cnVjdCBjbGsgKnBoeV9jZmdfY2xrOwogCisJLyogZHVhbC1jaGFubmVsICovCisJ c3RydWN0IGR3X21pcGlfZHNpICptYXN0ZXI7CisJc3RydWN0IGR3X21pcGlfZHNpICpzbGF2ZTsK KwogCWludCBkcG1zX21vZGU7CiAJdW5zaWduZWQgaW50IGxhbmVfbWJwczsgLyogcGVyIGxhbmUg Ki8KIAl1MzIgY2hhbm5lbDsKQEAgLTU3NCw2ICs2MzUsNyBAQCBzdGF0aWMgaW50IGR3X21pcGlf ZHNpX2dldF9sYW5lX2JwcyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwKIAl1bnNpZ25lZCBpbnQg bWF4X21icHMgPSBkcHRkaW5fbWFwW0FSUkFZX1NJWkUoZHB0ZGluX21hcCkgLSAxXS5tYXhfbWJw czsKIAlpbnQgYnBwOwogCXVuc2lnbmVkIGxvbmcgYmVzdF9mcmVxID0gMDsKKwlpbnQgbGFuZXMg PSBkc2ktPmxhbmVzOwogCXVuc2lnbmVkIGxvbmcgZnZjb19taW4sIGZ2Y29fbWF4LCBmaW4sIGZv dXQ7CiAJdW5zaWduZWQgaW50IG1pbl9wcmVkaXYsIG1heF9wcmVkaXY7CiAJdW5zaWduZWQgaW50 IF9wcmVkaXYsIHVuaW5pdGlhbGl6ZWRfdmFyKGJlc3RfcHJlZGl2KTsKQEAgLTU4NywxMCArNjQ5 LDEzIEBAIHN0YXRpYyBpbnQgZHdfbWlwaV9kc2lfZ2V0X2xhbmVfYnBzKHN0cnVjdCBkd19taXBp X2RzaSAqZHNpLAogCQlyZXR1cm4gYnBwOwogCX0KIAorCWlmIChkc2ktPnNsYXZlIHx8IGRzaS0+ bWFzdGVyKQorCQlsYW5lcyA9IGRzaS0+bGFuZXMgKiAyOworCiAJbXBjbGsgPSBESVZfUk9VTkRf VVAobW9kZS0+Y2xvY2ssIE1TRUNfUEVSX1NFQyk7CiAJaWYgKG1wY2xrKSB7CiAJCS8qIHRha2Ug MSAvIDAuOCwgc2luY2UgbWJwcyBtdXN0IGJpZyB0aGFuIGJhbmR3aWR0aCBvZiBSR0IgKi8KLQkJ dG1wID0gbXBjbGsgKiAoYnBwIC8gZHNpLT5sYW5lcykgKiAxMCAvIDg7CisJCXRtcCA9IG1wY2xr ICogKGJwcCAvIGxhbmVzKSAqIDEwIC8gODsKIAkJaWYgKHRtcCA8IG1heF9tYnBzKQogCQkJdGFy Z2V0X21icHMgPSB0bXA7CiAJCWVsc2UKQEAgLTY1MywxNyArNzE4LDI2IEBAIHN0YXRpYyBpbnQg ZHdfbWlwaV9kc2lfaG9zdF9hdHRhY2goc3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCiAJCQkJ ICAgc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZGV2aWNlKQogewogCXN0cnVjdCBkd19taXBpX2Rz aSAqZHNpID0gaG9zdF90b19kc2koaG9zdCk7CisJaW50IGxhbmVzID0gZHNpLT5zbGF2ZSA/IGRl dmljZS0+bGFuZXMgLyAyIDogZGV2aWNlLT5sYW5lczsKIAotCWlmIChkZXZpY2UtPmxhbmVzID4g ZHNpLT5wZGF0YS0+bWF4X2RhdGFfbGFuZXMpIHsKKwlpZiAobGFuZXMgPiBkc2ktPnBkYXRhLT5t YXhfZGF0YV9sYW5lcykgewogCQlkZXZfZXJyKGRzaS0+ZGV2LCAidGhlIG51bWJlciBvZiBkYXRh IGxhbmVzKCV1KSBpcyB0b28gbWFueVxuIiwKLQkJCWRldmljZS0+bGFuZXMpOworCQkJbGFuZXMp OwogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlkc2ktPmxhbmVzID0gZGV2aWNlLT5sYW5lczsK Kwlkc2ktPmxhbmVzID0gbGFuZXM7CiAJZHNpLT5jaGFubmVsID0gZGV2aWNlLT5jaGFubmVsOwog CWRzaS0+Zm9ybWF0ID0gZGV2aWNlLT5mb3JtYXQ7CiAJZHNpLT5tb2RlX2ZsYWdzID0gZGV2aWNl LT5tb2RlX2ZsYWdzOworCisJaWYgKGRzaS0+c2xhdmUpIHsKKwkJZHNpLT5zbGF2ZS0+bGFuZXMg PSBsYW5lczsKKwkJZHNpLT5zbGF2ZS0+Y2hhbm5lbCA9IGRldmljZS0+Y2hhbm5lbDsKKwkJZHNp LT5zbGF2ZS0+Zm9ybWF0ID0gZGV2aWNlLT5mb3JtYXQ7CisJCWRzaS0+c2xhdmUtPm1vZGVfZmxh Z3MgPSBkZXZpY2UtPm1vZGVfZmxhZ3M7CisJfQorCiAJZHNpLT5wYW5lbCA9IG9mX2RybV9maW5k X3BhbmVsKGRldmljZS0+ZGV2Lm9mX25vZGUpOwogCWlmIChkc2ktPnBhbmVsKQogCQlyZXR1cm4g ZHJtX3BhbmVsX2F0dGFjaChkc2ktPnBhbmVsLCAmZHNpLT5jb25uZWN0b3IpOwpAQCAtNzkzLDE1 ICs4NjcsMjIgQEAgc3RhdGljIHNzaXplX3QgZHdfbWlwaV9kc2lfaG9zdF90cmFuc2ZlcihzdHJ1 Y3QgbWlwaV9kc2lfaG9zdCAqaG9zdCwKIAlpbnQgcmV0OwogCiAJZHdfbWlwaV9tZXNzYWdlX2Nv bmZpZyhkc2ksIG1zZyk7CisJaWYgKGRzaS0+c2xhdmUpCisJCWR3X21pcGlfbWVzc2FnZV9jb25m aWcoZHNpLT5zbGF2ZSwgbXNnKTsKIAogCXN3aXRjaCAobXNnLT50eXBlKSB7CiAJY2FzZSBNSVBJ X0RTSV9EQ1NfU0hPUlRfV1JJVEU6CiAJY2FzZSBNSVBJX0RTSV9EQ1NfU0hPUlRfV1JJVEVfUEFS QU06CiAJY2FzZSBNSVBJX0RTSV9TRVRfTUFYSU1VTV9SRVRVUk5fUEFDS0VUX1NJWkU6CisJY2Fz ZSBNSVBJX0RTSV9HRU5FUklDX1NIT1JUX1dSSVRFXzJfUEFSQU06CiAJCXJldCA9IGR3X21pcGlf ZHNpX2Rjc19zaG9ydF93cml0ZShkc2ksIG1zZyk7CisJCWlmIChkc2ktPnNsYXZlKQorCQkJcmV0 ID0gZHdfbWlwaV9kc2lfZGNzX3Nob3J0X3dyaXRlKGRzaS0+c2xhdmUsIG1zZyk7CiAJCWJyZWFr OwogCWNhc2UgTUlQSV9EU0lfRENTX0xPTkdfV1JJVEU6CiAJCXJldCA9IGR3X21pcGlfZHNpX2Rj c19sb25nX3dyaXRlKGRzaSwgbXNnKTsKKwkJaWYgKGRzaS0+c2xhdmUpCisJCQlyZXQgPSBkd19t aXBpX2RzaV9kY3NfbG9uZ193cml0ZShkc2ktPnNsYXZlLCBtc2cpOwogCQlicmVhazsKIAlkZWZh dWx0OgogCQlkZXZfZXJyKGRzaS0+ZGV2LCAidW5zdXBwb3J0ZWQgbWVzc2FnZSB0eXBlIDB4JTAy eFxuIiwKQEAgLTg3NSw2ICs5NTYsNTUgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfaW5pdChz dHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKIAkJICBUWF9FU0NfQ0xLX0RJVklEU0lPTihlc2NfY2xr X2RpdmlzaW9uKSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJvY2tjaGlwX2RzaV9ncmZfY29uZmlnKHN0 cnVjdCBkd19taXBpX2RzaSAqZHNpLCBpbnQgdm9wX2lkKQoreworCWNvbnN0IHN0cnVjdCBkd19t aXBpX2RzaV9wbGF0X2RhdGEgKnBkYXRhID0gZHNpLT5wZGF0YTsKKwlpbnQgdmFsID0gMDsKKwlp bnQgcmV0OworCisJLyoKKwkgKiBGb3IgdGhlIFJLMzM5OSwgdGhlIGNsayBvZiBncmYgbXVzdCBi ZSBlbmFibGVkIGJlZm9yZSB3cml0aW5nIGdyZgorCSAqIHJlZ2lzdGVyLiBBbmQgZm9yIFJLMzI4 OCBvciBvdGhlciBzb2MsIHRoaXMgZ3JmX2NsayBtdXN0IGJlIE5VTEwsCisJICogdGhlIGNsa19w cmVwYXJlX2VuYWJsZSByZXR1cm4gdHJ1ZSBkaXJlY3RseS4KKwkgKi8KKwlyZXQgPSBjbGtfcHJl cGFyZV9lbmFibGUoZHNpLT5ncmZfY2xrKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZHNpLT5k ZXYsICJGYWlsZWQgdG8gZW5hYmxlIGdyZl9jbGs6ICVkXG4iLCByZXQpOworCQlyZXR1cm47CisJ fQorCisJdmFsID0gcGRhdGEtPmRzaTBfZW5fYml0IDw8IDE2OworCWlmIChkc2ktPnNsYXZlKQor CQl2YWwgfD0gcGRhdGEtPmRzaTFfZW5fYml0IDw8IDE2OworCWlmICh2b3BfaWQpIHsKKwkJdmFs IHw9IHBkYXRhLT5kc2kwX2VuX2JpdDsKKwkJaWYgKGRzaS0+c2xhdmUpCisJCQl2YWwgfD0gcGRh dGEtPmRzaTFfZW5fYml0OworCX0KKwlyZWdtYXBfd3JpdGUoZHNpLT5ncmZfcmVnbWFwLCBwZGF0 YS0+Z3JmX3N3aXRjaF9yZWcsIHZhbCk7CisKKwlpZiAocGRhdGEtPmdyZl9kc2kwX21vZGVfcmVn KQorCQlyZWdtYXBfd3JpdGUoZHNpLT5ncmZfcmVnbWFwLCBwZGF0YS0+Z3JmX2RzaTBfbW9kZV9y ZWcsCisJCQkgICAgIHBkYXRhLT5ncmZfZHNpMF9tb2RlKTsKKworCWlmIChkc2ktPnNsYXZlKSB7 CisJCWlmIChwZGF0YS0+Z3JmX2RzaTFfbW9kZV9yZWcxKQorCQkJcmVnbWFwX3dyaXRlKGRzaS0+ Z3JmX3JlZ21hcCwgcGRhdGEtPmdyZl9kc2kxX21vZGVfcmVnMSwKKwkJCQkgICAgIHBkYXRhLT5n cmZfZHNpMV9tb2RlKTsKKwkJdmFsID0gcGRhdGEtPmRzaTFfbWFzdGVyc2xhdmV6IHwKKwkJICAg ICAgKHBkYXRhLT5kc2kxX21hc3RlcnNsYXZleiA8PCAxNikgfAorCQkgICAgICAocGRhdGEtPmRz aTFfYmFzZWRpciA8PCAxNik7CisJCWlmIChwZGF0YS0+Z3JmX2RzaTFfbW9kZV9yZWcyKQorCQkJ cmVnbWFwX3dyaXRlKGRzaS0+Z3JmX3JlZ21hcCwgcGRhdGEtPmdyZl9kc2kxX21vZGVfcmVnMiwK KwkJCQkgICAgIHZhbCk7CisJCWlmIChwZGF0YS0+Z3JmX2RzaTFfbW9kZV9yZWcxKQorCQkJcmVn bWFwX3dyaXRlKGRzaS0+Z3JmX3JlZ21hcCwgcGRhdGEtPmdyZl9kc2kxX21vZGVfcmVnMSwKKwkJ CQkgICAgIHBkYXRhLT5ncmZfZHNpMV9lbmFibGUpOworCX0KKworCWNsa19kaXNhYmxlX3VucHJl cGFyZShkc2ktPmdyZl9jbGspOworfQorCiBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9kcGlfY29u ZmlnKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLAogCQkJCSAgIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlKQogewpAQCAtOTE1LDcgKzEwNDUsMTQgQEAgc3RhdGljIHZvaWQgZHdfbWlwaV9k c2lfcGFja2V0X2hhbmRsZXJfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQogc3RhdGlj IHZvaWQgZHdfbWlwaV9kc2lfdmlkZW9fcGFja2V0X2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kg KmRzaSwKIAkJCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQogewotCWRzaV93 cml0ZShkc2ksIERTSV9WSURfUEtUX1NJWkUsIFZJRF9QS1RfU0laRShtb2RlLT5oZGlzcGxheSkp OworCWludCBwa3Rfc2l6ZTsKKworCWlmIChkc2ktPnNsYXZlIHx8IGRzaS0+bWFzdGVyKQorCQlw a3Rfc2l6ZSA9IFZJRF9QS1RfU0laRShtb2RlLT5oZGlzcGxheSAvIDIpOworCWVsc2UKKwkJcGt0 X3NpemUgPSBWSURfUEtUX1NJWkUobW9kZS0+aGRpc3BsYXkpOworCisJZHNpX3dyaXRlKGRzaSwg RFNJX1ZJRF9QS1RfU0laRSwgcGt0X3NpemUpOwogfQogCiBzdGF0aWMgdm9pZCBkd19taXBpX2Rz aV9jb21tYW5kX21vZGVfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQpAQCAtMTAyMCwy NCArMTE1NywyNiBAQCBzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9lbmNvZGVyX2Rpc2FibGUoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCWR3X21pcGlfZHNpX2Rpc2FibGUoZHNpKTsKIAlw bV9ydW50aW1lX3B1dChkc2ktPmRldik7CiAJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+cGNs ayk7CisKKwlpZiAoZHNpLT5zbGF2ZSkgeworCQlpZiAoY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+ c2xhdmUtPnBjbGspKSB7CisJCQlkZXZfZXJyKGRzaS0+c2xhdmUtPmRldiwgIiVzOiBGYWlsZWQg dG8gZW5hYmxlIHBjbGtcbiIsIF9fZnVuY19fKTsKKwkJCXJldHVybjsKKwkJfQorCQlkd19taXBp X2RzaV9kaXNhYmxlKGRzaS0+c2xhdmUpOworCQlwbV9ydW50aW1lX3B1dChkc2ktPnNsYXZlLT5k ZXYpOworCQljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5zbGF2ZS0+cGNsayk7CisJfQorCiAJ ZHNpLT5kcG1zX21vZGUgPSBEUk1fTU9ERV9EUE1TX09GRjsKIH0KIAotc3RhdGljIHZvaWQgZHdf bWlwaV9kc2lfZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQorc3Rh dGljIHZvaWQgZHdfbWlwaV9kc2lfZW5hYmxlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKIHsKLQlzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSA9 IGVuY29kZXJfdG9fZHNpKGVuY29kZXIpOwotCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl ID0gJmVuY29kZXItPmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlOwotCWNvbnN0IHN0cnVjdCBk d19taXBpX2RzaV9wbGF0X2RhdGEgKnBkYXRhID0gZHNpLT5wZGF0YTsKLQlpbnQgbXV4ID0gZHJt X29mX2VuY29kZXJfYWN0aXZlX2VuZHBvaW50X2lkKGRzaS0+ZGV2LT5vZl9ub2RlLCBlbmNvZGVy KTsKLQl1MzIgdmFsOwotCWludCByZXQ7Ci0KLQlyZXQgPSBkd19taXBpX2RzaV9nZXRfbGFuZV9i cHMoZHNpLCBtb2RlKTsKLQlpZiAocmV0IDwgMCkKLQkJcmV0dXJuOwotCi0JaWYgKGRzaS0+ZHBt c19tb2RlID09IERSTV9NT0RFX0RQTVNfT04pCisJaWYgKGR3X21pcGlfZHNpX2dldF9sYW5lX2Jw cyhkc2ksIG1vZGUpIDwgMCkgeworCQlkZXZfZXJyKGRzaS0+ZGV2LCAiJXM6IEZhaWxlZCB0byBn ZXQgbGFuZSBicHNcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuOworCX0KIAogCWlmIChjbGtfcHJl cGFyZV9lbmFibGUoZHNpLT5wY2xrKSkgewogCQlkZXZfZXJyKGRzaS0+ZGV2LCAiJXM6IEZhaWxl ZCB0byBlbmFibGUgcGNsa1xuIiwgX19mdW5jX18pOwpAQCAtMTA1Nyw0MyArMTE5Niw0MiBAQCBz dGF0aWMgdm9pZCBkd19taXBpX2RzaV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIpCiAJZHdfbWlwaV9kc2lfZHBoeV9pbnRlcmZhY2VfY29uZmlnKGRzaSk7CiAJZHdf bWlwaV9kc2lfY2xlYXJfZXJyKGRzaSk7CiAKLQkvKgotCSAqIEZvciB0aGUgUkszMzk5LCB0aGUg Y2xrIG9mIGdyZiBtdXN0IGJlIGVuYWJsZWQgYmVmb3JlIHdyaXRpbmcgZ3JmCi0JICogcmVnaXN0 ZXIuIEFuZCBmb3IgUkszMjg4IG9yIG90aGVyIHNvYywgdGhpcyBncmZfY2xrIG11c3QgYmUgTlVM TCwKLQkgKiB0aGUgY2xrX3ByZXBhcmVfZW5hYmxlIHJldHVybiB0cnVlIGRpcmVjdGx5LgotCSAq LwotCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkc2ktPmdyZl9jbGspOwotCWlmIChyZXQpIHsK LQkJZGV2X2Vycihkc2ktPmRldiwgIkZhaWxlZCB0byBlbmFibGUgZ3JmX2NsazogJWRcbiIsIHJl dCk7Ci0JCXJldHVybjsKLQl9Ci0KLQlpZiAocGRhdGEtPmdyZl9kc2kwX21vZGVfcmVnKQotCQly ZWdtYXBfd3JpdGUoZHNpLT5ncmZfcmVnbWFwLCBwZGF0YS0+Z3JmX2RzaTBfbW9kZV9yZWcsCi0J CQkgICAgIHBkYXRhLT5ncmZfZHNpMF9tb2RlKTsKLQogCWR3X21pcGlfZHNpX3BoeV9pbml0KGRz aSk7CiAJZHdfbWlwaV9kc2lfd2FpdF9mb3JfdHdvX2ZyYW1lcyhtb2RlKTsKIAogCWR3X21pcGlf ZHNpX3NldF9tb2RlKGRzaSwgRFdfTUlQSV9EU0lfQ01EX01PREUpOworfQorCitzdGF0aWMgdm9p ZCBkd19taXBpX2RzaV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIp Cit7CisJc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBlbmNvZGVyX3RvX2RzaShlbmNvZGVyKTsK KwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZlbmNvZGVyLT5jcnRjLT5zdGF0ZS0+ YWRqdXN0ZWRfbW9kZTsKKwlpbnQgbXV4ID0gZHJtX29mX2VuY29kZXJfYWN0aXZlX2VuZHBvaW50 X2lkKGRzaS0+ZGV2LT5vZl9ub2RlLCBlbmNvZGVyKTsKKworCWlmIChkc2ktPmRwbXNfbW9kZSA9 PSBEUk1fTU9ERV9EUE1TX09OKQorCQlyZXR1cm47CisKKwlyb2NrY2hpcF9kc2lfZ3JmX2NvbmZp Zyhkc2ksIG11eCk7CisJZGV2X2RiZyhkc2ktPmRldiwgInZvcCAlcyBvdXRwdXQgdG8gZHNpMFxu IiwgKG11eCkgPyAiTElUIiA6ICJCSUciKTsKKworCWR3X21pcGlfZHNpX2VuYWJsZShkc2ksIG1v ZGUpOworCWlmIChkc2ktPnNsYXZlKQorCQlkd19taXBpX2RzaV9lbmFibGUoZHNpLT5zbGF2ZSwg bW9kZSk7CisKIAlpZiAoZHJtX3BhbmVsX3ByZXBhcmUoZHNpLT5wYW5lbCkpCiAJCWRldl9lcnIo ZHNpLT5kZXYsICJmYWlsZWQgdG8gcHJlcGFyZSBwYW5lbFxuIik7CiAKIAlkd19taXBpX2RzaV9z ZXRfbW9kZShkc2ksIERXX01JUElfRFNJX1ZJRF9NT0RFKTsKKwlpZiAoZHNpLT5zbGF2ZSkKKwkJ ZHdfbWlwaV9kc2lfc2V0X21vZGUoZHNpLT5zbGF2ZSwgRFdfTUlQSV9EU0lfVklEX01PREUpOwor CiAJZHJtX3BhbmVsX2VuYWJsZShkc2ktPnBhbmVsKTsKIAogCWNsa19kaXNhYmxlX3VucHJlcGFy ZShkc2ktPnBjbGspOworCWlmIChkc2ktPnNsYXZlKQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUo ZHNpLT5zbGF2ZS0+cGNsayk7CiAKLQlpZiAobXV4KQotCQl2YWwgPSBwZGF0YS0+ZHNpMF9lbl9i aXQgfCAocGRhdGEtPmRzaTBfZW5fYml0IDw8IDE2KTsKLQllbHNlCi0JCXZhbCA9IHBkYXRhLT5k c2kwX2VuX2JpdCA8PCAxNjsKLQotCXJlZ21hcF93cml0ZShkc2ktPmdyZl9yZWdtYXAsIHBkYXRh LT5ncmZfc3dpdGNoX3JlZywgdmFsKTsKLQlkZXZfZGJnKGRzaS0+ZGV2LCAidm9wICVzIG91dHB1 dCB0byBkc2kwXG4iLCAobXV4KSA/ICJMSVQiIDogIkJJRyIpOwogCWRzaS0+ZHBtc19tb2RlID0g RFJNX01PREVfRFBNU19PTjsKLQotCWNsa19kaXNhYmxlX3VucHJlcGFyZShkc2ktPmdyZl9jbGsp OwogfQogCiBzdGF0aWMgaW50CkBAIC0xMTIxLDYgKzEyNTksOSBAQCBzdGF0aWMgdm9pZCBkd19t aXBpX2RzaV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAKIAlz LT5vdXRwdXRfdHlwZSA9IERSTV9NT0RFX0NPTk5FQ1RPUl9EU0k7CiAKKwlpZiAoZHNpLT5zbGF2 ZSkKKwkJcy0+b3V0cHV0X2ZsYWdzID0gUk9DS0NISVBfT1VUUFVUX0RTSV9EVUFMX0NIQU5ORUw7 CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTIyNiw2ICsxMzY3LDEzIEBAIHN0YXRpYyBpbnQgcm9j a2NoaXBfbWlwaV9wYXJzZV9kdChzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKIAkuZ3JmX3N3aXRj aF9yZWcgPSBSSzMzOTlfR1JGX1NPQ19DT04yMCwKIAkuZ3JmX2RzaTBfbW9kZSA9IFJLMzM5OV9H UkZfRFNJX01PREUsCiAJLmdyZl9kc2kwX21vZGVfcmVnID0gUkszMzk5X0dSRl9TT0NfQ09OMjIs CisJLmdyZl9kc2kxX21vZGUgPSBSSzMzOTlfR1JGX0RTSTFfTU9ERSwKKwkuZ3JmX2RzaTFfZW5h YmxlID0gUkszMzk5X0dSRl9EU0kxX0VOQUJMRSwKKwkuZ3JmX2RzaTFfbW9kZV9yZWcxID0gUksz Mzk5X0dSRl9TT0NfQ09OMjMsCisJLmRzaTFfYmFzZWRpciA9IFJLMzM5OV9UWFJYX0JBU0VESVIs CisJLmRzaTFfbWFzdGVyc2xhdmV6ID0gUkszMzk5X1RYUlhfTUFTVEVSU0xBVkVaLAorCS5kc2kx X2VuYWJsZWNsayA9IFJLMzM5OV9UWFJYX0VOQUJMRUNMSywKKwkuZ3JmX2RzaTFfbW9kZV9yZWcy ID0gUkszMzk5X0dSRl9TT0NfQ09OMjQsCiAJLmZsYWdzID0gRFdfTUlQSV9ORUVEU19QSFlfQ0ZH X0NMSyB8IERXX01JUElfTkVFRFNfR1JGX0NMSywKIAkubWF4X2RhdGFfbGFuZXMgPSA0LAogfTsK QEAgLTEyNDIsMTcgKzEzOTAsMTA3IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfbWlwaV9wYXJzZV9k dChzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKIH07CiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBk d19taXBpX2RzaV9kdF9pZHMpOwogCisKK3N0YXRpYyBpbnQgcm9ja2NoaXBfZHNpX2R1YWxfY2hh bm5lbF9wcm9iZShzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKK3sKKwlzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wOworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnNlY29uZGFyeTsKKworCW5wID0gb2Zf cGFyc2VfcGhhbmRsZShkc2ktPmRldi0+b2Zfbm9kZSwgInJvY2tjaGlwLGR1YWwtY2hhbm5lbCIs IDApOworCWlmIChucCkgeworCQlzZWNvbmRhcnkgPSBvZl9maW5kX2RldmljZV9ieV9ub2RlKG5w KTsKKwkJZHNpLT5zbGF2ZSA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHNlY29uZGFyeSk7CisJCW9m X25vZGVfcHV0KG5wKTsKKworCQlpZiAoIWRzaS0+c2xhdmUpCisJCQlyZXR1cm4gLUVQUk9CRV9E RUZFUjsKKworCQlkc2ktPnNsYXZlLT5tYXN0ZXIgPSBkc2k7CisJfQorCisJcmV0dXJuIDA7Cit9 CisKIHN0YXRpYyBpbnQgZHdfbWlwaV9kc2lfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBkZXZpY2UgKm1hc3RlciwKIAkJCSAgICB2b2lkICpkYXRhKQogeworCXN0cnVjdCBkcm1fZGV2 aWNlICpkcm0gPSBkYXRhOworCXN0cnVjdCBkd19taXBpX2RzaSAqZHNpID0gZGV2X2dldF9kcnZk YXRhKGRldik7CisJaW50IHJldDsKKworCXJldCA9IHJvY2tjaGlwX2RzaV9kdWFsX2NoYW5uZWxf cHJvYmUoZHNpKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0ID0gY2xrX3ByZXBh cmVfZW5hYmxlKGRzaS0+cGxscmVmX2Nsayk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldiwg IiVzOiBGYWlsZWQgdG8gZW5hYmxlIHBsbHJlZl9jbGtcbiIsIF9fZnVuY19fKTsKKwkJcmV0dXJu IHJldDsKKwl9CisKKwlwbV9ydW50aW1lX2VuYWJsZShkZXYpOworCisJaWYgKGRzaS0+bWFzdGVy KQorCQlyZXR1cm4gMDsKKworCXJldCA9IGR3X21pcGlfZHNpX3JlZ2lzdGVyKGRybSwgZHNpKTsK KwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIG1pcGlfZHNp OiAlZFxuIiwgcmV0KTsKKwkJZ290byBlcnJfcGxscmVmOworCX0KKworCWRzaS0+ZHNpX2hvc3Qu b3BzID0gJmR3X21pcGlfZHNpX2hvc3Rfb3BzOworCWRzaS0+ZHNpX2hvc3QuZGV2ID0gZGV2Owor CXJldCA9IG1pcGlfZHNpX2hvc3RfcmVnaXN0ZXIoJmRzaS0+ZHNpX2hvc3QpOworCWlmIChyZXQp IHsKKwkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgTUlQSSBob3N0OiAlZFxuIiwg cmV0KTsKKwkJZ290byBlcnJfY2xlYW51cDsKKwl9CisKKwlpZiAoIWRzaS0+cGFuZWwpIHsKKwkJ cmV0ID0gLUVQUk9CRV9ERUZFUjsKKwkJZ290byBlcnJfbWlwaV9kc2lfaG9zdDsKKwl9CisKKwly ZXR1cm4gMDsKKworZXJyX21pcGlfZHNpX2hvc3Q6CisJbWlwaV9kc2lfaG9zdF91bnJlZ2lzdGVy KCZkc2ktPmRzaV9ob3N0KTsKK2Vycl9jbGVhbnVwOgorCWRybV9lbmNvZGVyX2NsZWFudXAoJmRz aS0+ZW5jb2Rlcik7CisJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKCZkc2ktPmNvbm5lY3Rvcik7Citl cnJfcGxscmVmOgorCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOworCWNsa19kaXNhYmxlX3VucHJl cGFyZShkc2ktPnBsbHJlZl9jbGspOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGR3 X21pcGlfZHNpX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rl ciwKKwkJCSAgICAgICB2b2lkICpkYXRhKQoreworCXN0cnVjdCBkd19taXBpX2RzaSAqZHNpID0g ZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwltaXBpX2RzaV9ob3N0X3VucmVnaXN0ZXIoJmRzaS0+ ZHNpX2hvc3QpOworCXBtX3J1bnRpbWVfZGlzYWJsZShkZXYpOworCWlmIChkc2ktPnNsYXZlKQor CQlwbV9ydW50aW1lX2Rpc2FibGUoZHNpLT5zbGF2ZS0+ZGV2KTsKKwljbGtfZGlzYWJsZV91bnBy ZXBhcmUoZHNpLT5wbGxyZWZfY2xrKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25l bnRfb3BzIGR3X21pcGlfZHNpX29wcyA9IHsKKwkuYmluZAk9IGR3X21pcGlfZHNpX2JpbmQsCisJ LnVuYmluZAk9IGR3X21pcGlfZHNpX3VuYmluZCwKK307CisKK3N0YXRpYyBpbnQgZHdfbWlwaV9k c2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmcGRldi0+ZGV2OwogCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm9mX2lkID0K IAkJCW9mX21hdGNoX2RldmljZShkd19taXBpX2RzaV9kdF9pZHMsIGRldik7CiAJY29uc3Qgc3Ry dWN0IGR3X21pcGlfZHNpX3BsYXRfZGF0YSAqcGRhdGEgPSBvZl9pZC0+ZGF0YTsKLQlzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Ci0Jc3RydWN0 IHJlc2V0X2NvbnRyb2wgKmFwYl9yc3Q7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRhdGE7 CiAJc3RydWN0IGR3X21pcGlfZHNpICpkc2k7CiAJc3RydWN0IHJlc291cmNlICpyZXM7CisJc3Ry dWN0IHJlc2V0X2NvbnRyb2wgKmFwYl9yc3Q7CiAJaW50IHJldDsKIAogCWRzaSA9IGRldm1fa3ph bGxvYyhkZXYsIHNpemVvZigqZHNpKSwgR0ZQX0tFUk5FTCk7CkBAIC0xMjYyLDYgKzE1MDAsNyBA QCBzdGF0aWMgaW50IGR3X21pcGlfZHNpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qg ZGV2aWNlICptYXN0ZXIsCiAJZHNpLT5kZXYgPSBkZXY7CiAJZHNpLT5wZGF0YSA9IHBkYXRhOwog CWRzaS0+ZHBtc19tb2RlID0gRFJNX01PREVfRFBNU19PRkY7CisJZGV2X3NldF9kcnZkYXRhKGRl diwgZHNpKTsKIAogCXJldCA9IHJvY2tjaGlwX21pcGlfcGFyc2VfZHQoZHNpKTsKIAlpZiAocmV0 KQpAQCAtMTMzNiw2MyArMTU3NSw2IEBAIHN0YXRpYyBpbnQgZHdfbWlwaV9kc2lfYmluZChzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKIAkJfQogCX0KIAotCXJldCA9 IGNsa19wcmVwYXJlX2VuYWJsZShkc2ktPnBsbHJlZl9jbGspOwotCWlmIChyZXQpIHsKLQkJZGV2 X2VycihkZXYsICIlczogRmFpbGVkIHRvIGVuYWJsZSBwbGxyZWZfY2xrXG4iLCBfX2Z1bmNfXyk7 Ci0JCXJldHVybiByZXQ7Ci0JfQotCi0JcmV0ID0gZHdfbWlwaV9kc2lfcmVnaXN0ZXIoZHJtLCBk c2kpOwotCWlmIChyZXQpIHsKLQkJZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgbWlw aV9kc2k6ICVkXG4iLCByZXQpOwotCQlnb3RvIGVycl9wbGxyZWY7Ci0JfQotCi0JcG1fcnVudGlt ZV9lbmFibGUoZGV2KTsKLQotCWRzaS0+ZHNpX2hvc3Qub3BzID0gJmR3X21pcGlfZHNpX2hvc3Rf b3BzOwotCWRzaS0+ZHNpX2hvc3QuZGV2ID0gZGV2OwotCXJldCA9IG1pcGlfZHNpX2hvc3RfcmVn aXN0ZXIoJmRzaS0+ZHNpX2hvc3QpOwotCWlmIChyZXQpIHsKLQkJZGV2X2VycihkZXYsICJGYWls ZWQgdG8gcmVnaXN0ZXIgTUlQSSBob3N0OiAlZFxuIiwgcmV0KTsKLQkJZ290byBlcnJfY2xlYW51 cDsKLQl9Ci0KLQlpZiAoIWRzaS0+cGFuZWwpIHsKLQkJcmV0ID0gLUVQUk9CRV9ERUZFUjsKLQkJ Z290byBlcnJfbWlwaV9kc2lfaG9zdDsKLQl9Ci0KLQlkZXZfc2V0X2RydmRhdGEoZGV2LCBkc2kp OwotCXJldHVybiAwOwotCi1lcnJfbWlwaV9kc2lfaG9zdDoKLQltaXBpX2RzaV9ob3N0X3VucmVn aXN0ZXIoJmRzaS0+ZHNpX2hvc3QpOwotZXJyX2NsZWFudXA6Ci0JZHJtX2VuY29kZXJfY2xlYW51 cCgmZHNpLT5lbmNvZGVyKTsKLQlkcm1fY29ubmVjdG9yX2NsZWFudXAoJmRzaS0+Y29ubmVjdG9y KTsKLWVycl9wbGxyZWY6Ci0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+cGxscmVmX2Nsayk7 Ci0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfdW5iaW5kKHN0cnVj dCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAotCQkJICAgICAgIHZvaWQgKmRh dGEpCi17Ci0Jc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsK LQotCW1pcGlfZHNpX2hvc3RfdW5yZWdpc3RlcigmZHNpLT5kc2lfaG9zdCk7Ci0JcG1fcnVudGlt ZV9kaXNhYmxlKGRldik7Ci0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+cGxscmVmX2Nsayk7 Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBkd19taXBpX2RzaV9vcHMg PSB7Ci0JLmJpbmQJPSBkd19taXBpX2RzaV9iaW5kLAotCS51bmJpbmQJPSBkd19taXBpX2RzaV91 bmJpbmQsCi19OwotCi1zdGF0aWMgaW50IGR3X21pcGlfZHNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpCi17CiAJcmV0dXJuIGNvbXBvbmVudF9hZGQoJnBkZXYtPmRldiwgJmR3 X21pcGlfZHNpX29wcyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBf ZHJtX2Rydi5oCmluZGV4IGM3ZTk2YjguLjUxYWQxYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL3JvY2tjaGlwX2RybV9kcnYuaApAQCAtMzYsNiArMzYsNyBAQCBzdHJ1Y3Qgcm9ja2No aXBfY3J0Y19zdGF0ZSB7CiAJc3RydWN0IGRybV9jcnRjX3N0YXRlIGJhc2U7CiAJaW50IG91dHB1 dF90eXBlOwogCWludCBvdXRwdXRfbW9kZTsKKwlpbnQgb3V0cHV0X2ZsYWdzOwogfTsKICNkZWZp bmUgdG9fcm9ja2NoaXBfY3J0Y19zdGF0ZShzKSBcCiAJCWNvbnRhaW5lcl9vZihzLCBzdHJ1Y3Qg cm9ja2NoaXBfY3J0Y19zdGF0ZSwgYmFzZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZHJtX3ZvcC5jCmluZGV4IGJmOWVkMGUuLmNiNDBjZGQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwpAQCAtOTE3LDYgKzkxNyw4IEBAIHN0YXRp YyB2b2lkIHZvcF9jcnRjX2F0b21pY19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWNh c2UgRFJNX01PREVfQ09OTkVDVE9SX0RTSToKIAkJVk9QX1JFR19TRVQodm9wLCBvdXRwdXQsIG1p cGlfcGluX3BvbCwgcGluX3BvbCk7CiAJCVZPUF9SRUdfU0VUKHZvcCwgb3V0cHV0LCBtaXBpX2Vu LCAxKTsKKwkJVk9QX1JFR19TRVQodm9wLCBvdXRwdXQsIG1pcGlfZHVhbF9jaGFubmVsX2VuLAor CQkJISEocy0+b3V0cHV0X2ZsYWdzICYgUk9DS0NISVBfT1VUUFVUX0RTSV9EVUFMX0NIQU5ORUwp KTsKIAkJYnJlYWs7CiAJY2FzZSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQ6CiAJCXBp bl9wb2wgJj0gfkJJVChEQ0xLX0lOVkVSVCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5oIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX2RybV92b3AuaAppbmRleCA1NmJiZDJlLi5kMTg0NTMxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmgKQEAgLTYwLDYgKzYwLDcgQEAgc3RydWN0 IHZvcF9vdXRwdXQgewogCXN0cnVjdCB2b3BfcmVnIGVkcF9lbjsKIAlzdHJ1Y3Qgdm9wX3JlZyBo ZG1pX2VuOwogCXN0cnVjdCB2b3BfcmVnIG1pcGlfZW47CisJc3RydWN0IHZvcF9yZWcgbWlwaV9k dWFsX2NoYW5uZWxfZW47CiAJc3RydWN0IHZvcF9yZWcgcmdiX2VuOwogfTsKIApAQCAtMjEyLDYg KzIxMyw4IEBAIHN0cnVjdCB2b3BfZGF0YSB7CiAvKiBmb3IgdXNlIHNwZWNpYWwgb3V0ZmFjZSAq LwogI2RlZmluZSBST0NLQ0hJUF9PVVRfTU9ERV9BQUFBCTE1CiAKKyNkZWZpbmUgUk9DS0NISVBf T1VUUFVUX0RTSV9EVUFMX0NIQU5ORUwJQklUKDApCisKIGVudW0gYWxwaGFfbW9kZSB7CiAJQUxQ SEFfU1RSQUlHSFQsCiAJQUxQSEFfSU5WRVJTRSwKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK