From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhao Qiang Subject: [PATCH v2 2/5] fsl/qe: setup clock source for TDM mode Date: Thu, 2 Jun 2016 09:44:58 +0800 Message-ID: <1464831901-15913-2-git-send-email-qiang.zhao@nxp.com> References: <1464831901-15913-1-git-send-email-qiang.zhao@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: netdev@vger.kernel.org, Zhao Qiang , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, xiaobo.xie@nxp.com To: Return-path: In-Reply-To: <1464831901-15913-1-git-send-email-qiang.zhao@nxp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linuxppc-dev-bounces+glppe-linuxppc-embedded-2=m.gmane.org@lists.ozlabs.org Sender: "Linuxppc-dev" List-Id: netdev.vger.kernel.org QWRkIHRkbSBjbG9jayBjb25maWd1cmF0aW9uIGluIGJvdGggcWUgY2xvY2sgc3lzdGVtIGFuZCB1 Y2MKZmFzdCBjb250cm9sbGVyLgoKU2lnbmVkLW9mZi1ieTogWmhhbyBRaWFuZyA8cWlhbmcuemhh b0BueHAuY29tPgotLS0KQ2hhbmdlcyBmb3IgdjI6CgktIGJyZWFrIGNvZGVzIGdldHRpbmcgY2xv Y2tfYml0cyBhbmQgc291cmNlIHRvIHNtYWxsZXIgZnVuY3Rpb25zLgoJLSBhZGQgX19pb21lbSB0 byBxZV9tdXhfcmVnCgktIGFkZCBiaXRzIG9wZXJhdGlvbiBmdW5jdGlvbnMgZm9yIHFlIGFuZCB1 c2UgaXQKCS0gcmV0cnVuIC1FSU5WQUwgd2hlbiBjbG9ja19iaXRzIGlzIGludmFsaWQKCiBkcml2 ZXJzL3NvYy9mc2wvcWUvdWNjLmMgICAgICB8IDQ1MCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIGRyaXZlcnMvc29jL2ZzbC9xZS91Y2NfZmFzdC5jIHwgIDM2ICsr KysKIGluY2x1ZGUvc29jL2ZzbC9xZS9xZS5oICAgICAgIHwgIDE2ICsrCiBpbmNsdWRlL3NvYy9m c2wvcWUvdWNjLmggICAgICB8ICAgNCArCiBpbmNsdWRlL3NvYy9mc2wvcWUvdWNjX2Zhc3QuaCB8 ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDUwNyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9zb2MvZnNsL3FlL3VjYy5jIGIvZHJpdmVycy9zb2MvZnNsL3FlL3VjYy5jCmluZGV4 IGI1OWQzMzUuLjVlMWE4NTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc29jL2ZzbC9xZS91Y2MuYwor KysgYi9kcml2ZXJzL3NvYy9mc2wvcWUvdWNjLmMKQEAgLTI1LDYgKzI1LDEyIEBACiAjaW5jbHVk ZSA8c29jL2ZzbC9xZS9xZS5oPgogI2luY2x1ZGUgPHNvYy9mc2wvcWUvdWNjLmg+CiAKKyNkZWZp bmUgVUNDX1RETV9OVU0gOAorI2RlZmluZSBSWF9TWU5DX1NISUZUX0JBU0UgMzAKKyNkZWZpbmUg VFhfU1lOQ19TSElGVF9CQVNFIDE0CisjZGVmaW5lIFJYX0NMS19TSElGVF9CQVNFIDI4CisjZGVm aW5lIFRYX0NMS19TSElGVF9CQVNFIDEyCisKIGludCB1Y2Nfc2V0X3FlX211eF9taWlfbW5nKHVu c2lnbmVkIGludCB1Y2NfbnVtKQogewogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0yMTAsMyAr MjE2LDQ0NyBAQCBpbnQgdWNjX3NldF9xZV9tdXhfcnh0eCh1bnNpZ25lZCBpbnQgdWNjX251bSwg ZW51bSBxZV9jbG9jayBjbG9jaywKIAogCXJldHVybiAwOwogfQorCitzdGF0aWMgaW50IHVjY19n ZXRfdGRtX2NvbW1vbl9jbGsodTMyIHRkbV9udW0sIGVudW0gcWVfY2xvY2sgY2xvY2spCit7CisJ aW50IGNsb2NrX2JpdHMgPSAtRUlOVkFMOworCisJLyoKKwkgKiBmb3IgVERNWzAsIDEsIDIsIDNd LCBUWCBhbmQgUlggdXNlICBjb21tb24KKwkgKiBjbG9jayBzb3VyY2UgQlJHMyw0IGFuZCBDTEsx LDIKKwkgKiBmb3IgVERNWzQsIDUsIDYsIDddLCBUWCBhbmQgUlggdXNlICBjb21tb24KKwkgKiBj bG9jayBzb3VyY2UgQlJHMTIsMTMgYW5kIENMSzIzLDI0CisJICovCisJc3dpdGNoICh0ZG1fbnVt KSB7CisJY2FzZSAwOgorCWNhc2UgMToKKwljYXNlIDI6CisJY2FzZSAzOgorCQlzd2l0Y2ggKGNs b2NrKSB7CisJCWNhc2UgUUVfQlJHMzoKKwkJCWNsb2NrX2JpdHMgPSAxOworCQkJYnJlYWs7CisJ CWNhc2UgUUVfQlJHNDoKKwkJCWNsb2NrX2JpdHMgPSAyOworCQkJYnJlYWs7CisJCWNhc2UgUUVf Q0xLMToKKwkJCWNsb2NrX2JpdHMgPSA0OworCQkJYnJlYWs7CisJCWNhc2UgUUVfQ0xLMjoKKwkJ CWNsb2NrX2JpdHMgPSA1OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQor CQlicmVhazsKKwljYXNlIDQ6CisJY2FzZSA1OgorCWNhc2UgNjoKKwljYXNlIDc6CisJCXN3aXRj aCAoY2xvY2spIHsKKwkJY2FzZSBRRV9CUkcxMjoKKwkJCWNsb2NrX2JpdHMgPSAxOworCQkJYnJl YWs7CisJCWNhc2UgUUVfQlJHMTM6CisJCQljbG9ja19iaXRzID0gMjsKKwkJCWJyZWFrOworCQlj YXNlIFFFX0NMSzIzOgorCQkJY2xvY2tfYml0cyA9IDQ7CisJCQlicmVhazsKKwkJY2FzZSBRRV9D TEsyNDoKKwkJCWNsb2NrX2JpdHMgPSA1OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVh azsKKwkJfQorCQlicmVhazsKKwlkZWZhdWx0OgorCQlicmVhazsKKwl9CisKKwlyZXR1cm4gY2xv Y2tfYml0czsKK30KKworc3RhdGljIGludCB1Y2NfZ2V0X3RkbV9yeF9jbGsodTMyIHRkbV9udW0s IGVudW0gcWVfY2xvY2sgY2xvY2spCit7CisJaW50IGNsb2NrX2JpdHMgPSAtRUlOVkFMOworCisJ c3dpdGNoICh0ZG1fbnVtKSB7CisJY2FzZSAwOgorCQlzd2l0Y2ggKGNsb2NrKSB7CisJCWNhc2Ug UUVfQ0xLMzoKKwkJCWNsb2NrX2JpdHMgPSA2OworCQkJYnJlYWs7CisJCWNhc2UgUUVfQ0xLODoK KwkJCWNsb2NrX2JpdHMgPSA3OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJ fQorCQlicmVhazsKKwljYXNlIDE6CisJCXN3aXRjaCAoY2xvY2spIHsKKwkJY2FzZSBRRV9DTEs1 OgorCQkJY2xvY2tfYml0cyA9IDY7CisJCQlicmVhazsKKwkJY2FzZSBRRV9DTEsxMDoKKwkJCWNs b2NrX2JpdHMgPSA3OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCQli cmVhazsKKwljYXNlIDI6CisJCXN3aXRjaCAoY2xvY2spIHsKKwkJY2FzZSBRRV9DTEs3OgorCQkJ Y2xvY2tfYml0cyA9IDY7CisJCQlicmVhazsKKwkJY2FzZSBRRV9DTEsxMjoKKwkJCWNsb2NrX2Jp dHMgPSA3OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCQlicmVhazsK KwljYXNlIDM6CisJCXN3aXRjaCAoY2xvY2spIHsKKwkJY2FzZSBRRV9DTEs5OgorCQkJY2xvY2tf Yml0cyA9IDY7CisJCQlicmVhazsKKwkJY2FzZSBRRV9DTEsxNDoKKwkJCWNsb2NrX2JpdHMgPSA3 OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwljYXNl IDQ6CisJCXN3aXRjaCAoY2xvY2spIHsKKwkJY2FzZSBRRV9DTEsxMToKKwkJCWNsb2NrX2JpdHMg PSA2OworCQkJYnJlYWs7CisJCWNhc2UgUUVfQ0xLMTY6CisJCQljbG9ja19iaXRzID0gNzsKKwkJ CWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJY2FzZSA1Ogor CQlzd2l0Y2ggKGNsb2NrKSB7CisJCWNhc2UgUUVfQ0xLMTM6CisJCQljbG9ja19iaXRzID0gNjsK KwkJCWJyZWFrOworCQljYXNlIFFFX0NMSzE4OgorCQkJY2xvY2tfYml0cyA9IDc7CisJCQlicmVh azsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCQl9CisJCWJyZWFrOworCWNhc2UgNjoKKwkJc3dp dGNoIChjbG9jaykgeworCQljYXNlIFFFX0NMSzE1OgorCQkJY2xvY2tfYml0cyA9IDY7CisJCQli cmVhazsKKwkJY2FzZSBRRV9DTEsyMDoKKwkJCWNsb2NrX2JpdHMgPSA3OworCQkJYnJlYWs7CisJ CWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwljYXNlIDc6CisJCXN3aXRjaCAo Y2xvY2spIHsKKwkJY2FzZSBRRV9DTEsxNzoKKwkJCWNsb2NrX2JpdHMgPSA2OworCQkJYnJlYWs7 CisJCWNhc2UgUUVfQ0xLMjI6CisJCQljbG9ja19iaXRzID0gNzsKKwkJCWJyZWFrOworCQlkZWZh dWx0OgorCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIGNsb2NrX2JpdHM7 Cit9CisKK3N0YXRpYyBpbnQgdWNjX2dldF90ZG1fdHhfY2xrKHUzMiB0ZG1fbnVtLCBlbnVtIHFl X2Nsb2NrIGNsb2NrKQoreworCWludCBjbG9ja19iaXRzID0gLUVJTlZBTDsKKworCXN3aXRjaCAo dGRtX251bSkgeworCWNhc2UgMDoKKwkJc3dpdGNoIChjbG9jaykgeworCQljYXNlIFFFX0NMSzQ6 CisJCQljbG9ja19iaXRzID0gNjsKKwkJCWJyZWFrOworCQljYXNlIFFFX0NMSzk6CisJCQljbG9j a19iaXRzID0gNzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKwkJYnJl YWs7CisJY2FzZSAxOgorCQlzd2l0Y2ggKGNsb2NrKSB7CisJCWNhc2UgUUVfQ0xLNjoKKwkJCWNs b2NrX2JpdHMgPSA2OworCQkJYnJlYWs7CisJCWNhc2UgUUVfQ0xLMTE6CisJCQljbG9ja19iaXRz ID0gNzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJ Y2FzZSAyOgorCQlzd2l0Y2ggKGNsb2NrKSB7CisJCWNhc2UgUUVfQ0xLODoKKwkJCWNsb2NrX2Jp dHMgPSA2OworCQkJYnJlYWs7CisJCWNhc2UgUUVfQ0xLMTM6CisJCQljbG9ja19iaXRzID0gNzsK KwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJY2FzZSAz OgorCQlzd2l0Y2ggKGNsb2NrKSB7CisJCWNhc2UgUUVfQ0xLMTA6CisJCQljbG9ja19iaXRzID0g NjsKKwkJCWJyZWFrOworCQljYXNlIFFFX0NMSzE1OgorCQkJY2xvY2tfYml0cyA9IDc7CisJCQli cmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCQl9CisJCWJyZWFrOworCWNhc2UgNDoKKwkJ c3dpdGNoIChjbG9jaykgeworCQljYXNlIFFFX0NMSzEyOgorCQkJY2xvY2tfYml0cyA9IDY7CisJ CQlicmVhazsKKwkJY2FzZSBRRV9DTEsxNzoKKwkJCWNsb2NrX2JpdHMgPSA3OworCQkJYnJlYWs7 CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCQlicmVhazsKKwljYXNlIDU6CisJCXN3aXRj aCAoY2xvY2spIHsKKwkJY2FzZSBRRV9DTEsxNDoKKwkJCWNsb2NrX2JpdHMgPSA2OworCQkJYnJl YWs7CisJCWNhc2UgUUVfQ0xLMTk6CisJCQljbG9ja19iaXRzID0gNzsKKwkJCWJyZWFrOworCQlk ZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJY2FzZSA2OgorCQlzd2l0Y2ggKGNs b2NrKSB7CisJCWNhc2UgUUVfQ0xLMTY6CisJCQljbG9ja19iaXRzID0gNjsKKwkJCWJyZWFrOwor CQljYXNlIFFFX0NMSzIxOgorCQkJY2xvY2tfYml0cyA9IDc7CisJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJCWJyZWFrOworCQl9CisJCWJyZWFrOworCWNhc2UgNzoKKwkJc3dpdGNoIChjbG9jaykg eworCQljYXNlIFFFX0NMSzE4OgorCQkJY2xvY2tfYml0cyA9IDY7CisJCQlicmVhazsKKwkJY2Fz ZSBRRV9DTEszOgorCQkJY2xvY2tfYml0cyA9IDc7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJ CWJyZWFrOworCQl9CisJCWJyZWFrOworCX0KKworCXJldHVybiBjbG9ja19iaXRzOworfQorCisv KiB0ZG1fbnVtOiBURE0gQS1IIHBvcnQgbnVtIGlzIDAtNyAqLworc3RhdGljIGludCB1Y2NfZ2V0 X3RkbV9yeHR4X2NsayhlbnVtIGNvbW1fZGlyIG1vZGUsIHUzMiB0ZG1fbnVtLAorCQkJCWVudW0g cWVfY2xvY2sgY2xvY2spCit7CisJaW50IGNsb2NrX2JpdHM7CisKKwljbG9ja19iaXRzID0gdWNj X2dldF90ZG1fY29tbW9uX2Nsayh0ZG1fbnVtLCBjbG9jayk7CisJaWYgKGNsb2NrX2JpdHMgPiAw KQorCQlyZXR1cm4gY2xvY2tfYml0czsKKwlpZiAobW9kZSA9PSBDT01NX0RJUl9SWCkKKwkJY2xv Y2tfYml0cyA9IHVjY19nZXRfdGRtX3J4X2Nsayh0ZG1fbnVtLCBjbG9jayk7CisJaWYgKG1vZGUg PT0gQ09NTV9ESVJfVFgpCisJCWNsb2NrX2JpdHMgPSB1Y2NfZ2V0X3RkbV90eF9jbGsodGRtX251 bSwgY2xvY2spOworCXJldHVybiBjbG9ja19iaXRzOworfQorCitzdGF0aWMgdTMyIHVjY19nZXRf dGRtX2Nsa19zaGlmdChlbnVtIGNvbW1fZGlyIG1vZGUsIHUzMiB0ZG1fbnVtKQoreworCXUzMiBz aGlmdDsKKworCXNoaWZ0ID0gKG1vZGUgPT0gQ09NTV9ESVJfUlgpID8gUlhfQ0xLX1NISUZUX0JB U0UgOiBUWF9DTEtfU0hJRlRfQkFTRTsKKwlpZiAodGRtX251bSA8IDQpCisJCXNoaWZ0IC09IHRk bV9udW0gKiA0OworCWVsc2UKKwkJc2hpZnQgLT0gKHRkbV9udW0gLSA0KSAqIDQ7CisKKwlyZXR1 cm4gc2hpZnQ7Cit9CisKK2ludCB1Y2Nfc2V0X3RkbV9yeHR4X2Nsayh1MzIgdGRtX251bSwgZW51 bSBxZV9jbG9jayBjbG9jaywKKwkJCSBlbnVtIGNvbW1fZGlyIG1vZGUpCit7CisJaW50IGNsb2Nr X2JpdHM7CisJdTMyIHNoaWZ0OworCXN0cnVjdCBxZV9tdXggX19pb21lbSAqcWVfbXV4X3JlZzsK KwkgX19iZTMyIF9faW9tZW0gKmNteHMxY3I7CisKKwlxZV9tdXhfcmVnID0gJnFlX2ltbXItPnFt eDsKKworCWlmICh0ZG1fbnVtID4gNyB8fCB0ZG1fbnVtIDwgMCkKKwkJcmV0dXJuIC1FSU5WQUw7 CisKKwkvKiBUaGUgY29tbXVuaWNhdGlvbnMgZGlyZWN0aW9uIG11c3QgYmUgUlggb3IgVFggKi8K KwlpZiAobW9kZSAhPSBDT01NX0RJUl9SWCAmJiBtb2RlICE9IENPTU1fRElSX1RYKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWNsb2NrX2JpdHMgPSB1Y2NfZ2V0X3RkbV9yeHR4X2Nsayhtb2RlLCB0 ZG1fbnVtLCBjbG9jayk7CisJaWYgKGNsb2NrX2JpdHMgPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCXNoaWZ0ID0gdWNjX2dldF90ZG1fY2xrX3NoaWZ0KG1vZGUsIHRkbV9udW0pOworCisJY214 czFjciA9ICh0ZG1fbnVtIDwgNCkgPyAmcWVfbXV4X3JlZy0+Y214c2kxY3JfbCA6CisJCQkJICAm cWVfbXV4X3JlZy0+Y214c2kxY3JfaDsKKworCXFlX2NscnNldGJpdHMzMihjbXhzMWNyLCBRRV9D TVhVQ1JfVFhfQ0xLX1NSQ19NQVNLIDw8IHNoaWZ0LAorCQkJY2xvY2tfYml0cyA8PCBzaGlmdCk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1Y2NfZ2V0X3RkbV9zeW5jX3NvdXJjZSh1 MzIgdGRtX251bSwgZW51bSBxZV9jbG9jayBjbG9jaywKKwkJCQkgICBlbnVtIGNvbW1fZGlyIG1v ZGUpCit7CisJaW50IHNvdXJjZSA9IC1FSU5WQUw7CisKKwlpZiAobW9kZSA9PSBDT01NX0RJUl9S WCAmJiBjbG9jayA9PSBRRV9SU1lOQ19QSU4pIHsKKwkJc291cmNlID0gMDsKKwkJcmV0dXJuIHNv dXJjZTsKKwl9CisJaWYgKG1vZGUgPT0gQ09NTV9ESVJfVFggJiYgY2xvY2sgPT0gUUVfVFNZTkNf UElOKSB7CisJCXNvdXJjZSA9IDA7CisJCXJldHVybiBzb3VyY2U7CisJfQorCisJc3dpdGNoICh0 ZG1fbnVtKSB7CisJY2FzZSAwOgorCWNhc2UgMToKKwkJc3dpdGNoIChjbG9jaykgeworCQljYXNl IFFFX0JSRzk6CisJCQkJc291cmNlID0gMTsKKwkJCQlicmVhazsKKwkJY2FzZSBRRV9CUkcxMDoK KwkJCQlzb3VyY2UgPSAyOworCQkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0K KwkJYnJlYWs7CisJY2FzZSAyOgorCWNhc2UgMzoKKwkJc3dpdGNoIChjbG9jaykgeworCQljYXNl IFFFX0JSRzk6CisJCQkJc291cmNlID0gMTsKKwkJCQlicmVhazsKKwkJY2FzZSBRRV9CUkcxMToK KwkJCQlzb3VyY2UgPSAyOworCQkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0K KwkJYnJlYWs7CisJY2FzZSA0OgorCWNhc2UgNToKKwkJc3dpdGNoIChjbG9jaykgeworCQljYXNl IFFFX0JSRzEzOgorCQkJCXNvdXJjZSA9IDE7CisJCQkJYnJlYWs7CisJCWNhc2UgUUVfQlJHMTQ6 CisJCQkJc291cmNlID0gMjsKKwkJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWJyZWFrOworCQl9 CisJCWJyZWFrOworCWNhc2UgNjoKKwljYXNlIDc6CisJCXN3aXRjaCAoY2xvY2spIHsKKwkJY2Fz ZSBRRV9CUkcxMzoKKwkJCQlzb3VyY2UgPSAxOworCQkJCWJyZWFrOworCQljYXNlIFFFX0JSRzE1 OgorCQkJCXNvdXJjZSA9IDI7CisJCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJ fQorCQlicmVhazsKKwl9CisKKwlyZXR1cm4gc291cmNlOworfQorCitzdGF0aWMgdTMyIHVjY19n ZXRfdGRtX3N5bmNfc2hpZnQoZW51bSBjb21tX2RpciBtb2RlLCB1MzIgdGRtX251bSkKK3sKKwl1 MzIgc2hpZnQ7CisKKwlzaGlmdCA9IChtb2RlID09IENPTU1fRElSX1JYKSA/IFJYX1NZTkNfU0hJ RlRfQkFTRSA6IFJYX1NZTkNfU0hJRlRfQkFTRTsKKwlzaGlmdCAtPSB0ZG1fbnVtICogMjsKKwor CXJldHVybiBzaGlmdDsKK30KKworaW50IHVjY19zZXRfdGRtX3J4dHhfc3luYyh1MzIgdGRtX251 bSwgZW51bSBxZV9jbG9jayBjbG9jaywKKwkJCSAgZW51bSBjb21tX2RpciBtb2RlKQoreworCWlu dCBzb3VyY2U7CisJdTMyIHNoaWZ0OworCXN0cnVjdCBxZV9tdXggKnFlX211eF9yZWc7CisKKwlx ZV9tdXhfcmVnID0gJnFlX2ltbXItPnFteDsKKworCWlmICh0ZG1fbnVtID49IFVDQ19URE1fTlVN KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIFRoZSBjb21tdW5pY2F0aW9ucyBkaXJlY3Rpb24g bXVzdCBiZSBSWCBvciBUWCAqLworCWlmIChtb2RlICE9IENPTU1fRElSX1JYICYmIG1vZGUgIT0g Q09NTV9ESVJfVFgpCisJCXJldHVybiAtRUlOVkFMOworCisJc291cmNlID0gdWNjX2dldF90ZG1f c3luY19zb3VyY2UodGRtX251bSwgY2xvY2ssIG1vZGUpOworCWlmIChzb3VyY2UgPCAwKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCXNoaWZ0ID0gdWNjX2dldF90ZG1fc3luY19zaGlmdChtb2RlLCB0 ZG1fbnVtKTsKKworCXFlX2NscnNldGJpdHMzMigmcWVfbXV4X3JlZy0+Y214c2kxc3lyLAorCQkJ UUVfQ01YVUNSX1RYX0NMS19TUkNfTUFTSyA8PCBzaGlmdCwKKwkJCXNvdXJjZSA8PCBzaGlmdCk7 CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL2ZzbC9xZS91Y2NfZmFz dC5jIGIvZHJpdmVycy9zb2MvZnNsL3FlL3VjY19mYXN0LmMKaW5kZXggYTc2ODkzMS4uODNkOGQx NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zb2MvZnNsL3FlL3VjY19mYXN0LmMKKysrIGIvZHJpdmVy cy9zb2MvZnNsL3FlL3VjY19mYXN0LmMKQEAgLTMyNyw2ICszMjcsNDIgQEAgaW50IHVjY19mYXN0 X2luaXQoc3RydWN0IHVjY19mYXN0X2luZm8gKiB1Zl9pbmZvLCBzdHJ1Y3QgdWNjX2Zhc3RfcHJp dmF0ZSAqKiB1Y2MKIAkJCXVjY19mYXN0X2ZyZWUodWNjZik7CiAJCQlyZXR1cm4gLUVJTlZBTDsK IAkJfQorCX0gZWxzZSB7CisJCS8qIHRkbSBSeCBjbG9jayByb3V0aW5nICovCisJCWlmICgodWZf aW5mby0+cnhfY2xvY2sgIT0gUUVfQ0xLX05PTkUpICYmCisJCSAgICB1Y2Nfc2V0X3RkbV9yeHR4 X2Nsayh1Zl9pbmZvLT50ZG1fbnVtLCB1Zl9pbmZvLT5yeF9jbG9jaywKKwkJCQkJIENPTU1fRElS X1JYKSkgeworCQkJcHJfZXJyKCIlczogaWxsZWdhbCB2YWx1ZSBmb3IgUlggY2xvY2siLCBfX2Z1 bmNfXyk7CisJCQl1Y2NfZmFzdF9mcmVlKHVjY2YpOworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0K KworCQkvKiB0ZG0gVHggY2xvY2sgcm91dGluZyAqLworCQlpZiAoKHVmX2luZm8tPnR4X2Nsb2Nr ICE9IFFFX0NMS19OT05FKSAmJgorCQkgICAgdWNjX3NldF90ZG1fcnh0eF9jbGsodWZfaW5mby0+ dGRtX251bSwgdWZfaW5mby0+dHhfY2xvY2ssCisJCQkJCSBDT01NX0RJUl9UWCkpIHsKKwkJCXBy X2VycigiJXM6IGlsbGVnYWwgdmFsdWUgZm9yIFRYIGNsb2NrIiwgX19mdW5jX18pOworCQkJdWNj X2Zhc3RfZnJlZSh1Y2NmKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJLyogdGRtIFJ4 IHN5bmMgY2xvY2sgcm91dGluZyAqLworCQlpZiAoKHVmX2luZm8tPnJ4X3N5bmMgIT0gUUVfQ0xL X05PTkUpICYmCisJCSAgICB1Y2Nfc2V0X3RkbV9yeHR4X3N5bmModWZfaW5mby0+dGRtX251bSwg dWZfaW5mby0+cnhfc3luYywKKwkJCQkJICBDT01NX0RJUl9SWCkpIHsKKwkJCXByX2VycigiJXM6 IGlsbGVnYWwgdmFsdWUgZm9yIFJYIGNsb2NrIiwgX19mdW5jX18pOworCQkJdWNjX2Zhc3RfZnJl ZSh1Y2NmKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJLyogdGRtIFR4IHN5bmMgY2xv Y2sgcm91dGluZyAqLworCQlpZiAoKHVmX2luZm8tPnR4X3N5bmMgIT0gUUVfQ0xLX05PTkUpICYm CisJCSAgICB1Y2Nfc2V0X3RkbV9yeHR4X3N5bmModWZfaW5mby0+dGRtX251bSwgdWZfaW5mby0+ dHhfc3luYywKKwkJCQkJICBDT01NX0RJUl9UWCkpIHsKKwkJCXByX2VycigiJXM6IGlsbGVnYWwg dmFsdWUgZm9yIFRYIGNsb2NrIiwgX19mdW5jX18pOworCQkJdWNjX2Zhc3RfZnJlZSh1Y2NmKTsK KwkJCXJldHVybiAtRUlOVkFMOworCQl9CiAJfQogCiAJLyogU2V0IGludGVycnVwdCBtYXNrIHJl Z2lzdGVyIGF0IFVDQyBsZXZlbC4gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvc29jL2ZzbC9xZS9x ZS5oIGIvaW5jbHVkZS9zb2MvZnNsL3FlL3FlLmgKaW5kZXggZjkxODc0NS4uYzNiMWRjOCAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9zb2MvZnNsL3FlL3FlLmgKKysrIGIvaW5jbHVkZS9zb2MvZnNsL3Fl L3FlLmgKQEAgLTI0NCw2ICsyNDQsMjIgQEAgc3RhdGljIGlubGluZSBpbnQgcWVfYWxpdmVfZHVy aW5nX3NsZWVwKHZvaWQpCiAjZGVmaW5lIHFlX211cmFtX2FkZHIgY3BtX211cmFtX2FkZHIKICNk ZWZpbmUgcWVfbXVyYW1fb2Zmc2V0IGNwbV9tdXJhbV9vZmZzZXQKIAorI2RlZmluZSBxZV9zZXRi aXRzMzIoX2FkZHIsIF92KSBpb3dyaXRlMzJiZShpb3JlYWQzMmJlKF9hZGRyKSB8ICAoX3YpLCAo X2FkZHIpKQorI2RlZmluZSBxZV9jbHJiaXRzMzIoX2FkZHIsIF92KSBpb3dyaXRlMzJiZShpb3Jl YWQzMmJlKF9hZGRyKSAmIH4oX3YpLCAoX2FkZHIpKQorCisjZGVmaW5lIHFlX3NldGJpdHMxNihf YWRkciwgX3YpIGlvd3JpdGUxNmJlKGlvcmVhZDE2YmUoX2FkZHIpIHwgIChfdiksIChfYWRkcikp CisjZGVmaW5lIHFlX2NscmJpdHMxNihfYWRkciwgX3YpIGlvd3JpdGUxNmJlKGlvcmVhZDE2YmUo X2FkZHIpICYgfihfdiksIChfYWRkcikpCisKKyNkZWZpbmUgcWVfc2V0Yml0czgoX2FkZHIsIF92 KSBpb3dyaXRlOChpb3JlYWQ4KF9hZGRyKSB8ICAoX3YpLCAoX2FkZHIpKQorI2RlZmluZSBxZV9j bHJiaXRzOChfYWRkciwgX3YpIGlvd3JpdGU4KGlvcmVhZDgoX2FkZHIpICYgfihfdiksIChfYWRk cikpCisKKyNkZWZpbmUgcWVfY2xyc2V0Yml0czMyKGFkZHIsIGNsZWFyLCBzZXQpIFwKKwlpb3dy aXRlMzJiZSgoaW9yZWFkMzJiZShhZGRyKSAmIH4oY2xlYXIpKSB8IChzZXQpLCAoYWRkcikpCisj ZGVmaW5lIHFlX2NscnNldGJpdHMxNihhZGRyLCBjbGVhciwgc2V0KSBcCisJaW93cml0ZTE2YmUo KGlvcmVhZDE2YmUoYWRkcikgJiB+KGNsZWFyKSkgfCAoc2V0KSwgKGFkZHIpKQorI2RlZmluZSBx ZV9jbHJzZXRiaXRzOChhZGRyLCBjbGVhciwgc2V0KSBcCisJaW93cml0ZTgoKGlvcmVhZDgoYWRk cikgJiB+KGNsZWFyKSkgfCAoc2V0KSwgKGFkZHIpKQorCiAvKiBTdHJ1Y3R1cmUgdGhhdCBkZWZp bmVzIFFFIGZpcm13YXJlIGJpbmFyeSBmaWxlcy4KICAqCiAgKiBTZWUgRG9jdW1lbnRhdGlvbi9w b3dlcnBjL3FlX2Zpcm13YXJlLnR4dCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVzZQpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9zb2MvZnNsL3FlL3VjYy5oIGIvaW5jbHVkZS9zb2MvZnNsL3FlL3VjYy5o CmluZGV4IDg5NGYxNGMuLjZiYmJiNTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc29jL2ZzbC9xZS91 Y2MuaAorKysgYi9pbmNsdWRlL3NvYy9mc2wvcWUvdWNjLmgKQEAgLTQxLDYgKzQxLDEwIEBAIGlu dCB1Y2Nfc2V0X3FlX211eF9taWlfbW5nKHVuc2lnbmVkIGludCB1Y2NfbnVtKTsKIAogaW50IHVj Y19zZXRfcWVfbXV4X3J4dHgodW5zaWduZWQgaW50IHVjY19udW0sIGVudW0gcWVfY2xvY2sgY2xv Y2ssCiAJZW51bSBjb21tX2RpciBtb2RlKTsKK2ludCB1Y2Nfc2V0X3RkbV9yeHR4X2Nsayh1bnNp Z25lZCBpbnQgdGRtX251bSwgZW51bSBxZV9jbG9jayBjbG9jaywKKwkJCSBlbnVtIGNvbW1fZGly IG1vZGUpOworaW50IHVjY19zZXRfdGRtX3J4dHhfc3luYyh1bnNpZ25lZCBpbnQgdGRtX251bSwg ZW51bSBxZV9jbG9jayBjbG9jaywKKwkJCSAgZW51bSBjb21tX2RpciBtb2RlKTsKIAogaW50IHVj Y19tdXhfc2V0X2dyYW50X3RzYV9ia3B0KHVuc2lnbmVkIGludCB1Y2NfbnVtLCBpbnQgc2V0LCB1 MzIgbWFzayk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc29jL2ZzbC9xZS91Y2NfZmFzdC5oIGIv aW5jbHVkZS9zb2MvZnNsL3FlL3VjY19mYXN0LmgKaW5kZXggMzE1NDhiNy4uYjI2MzNiNyAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9zb2MvZnNsL3FlL3VjY19mYXN0LmgKKysrIGIvaW5jbHVkZS9zb2Mv ZnNsL3FlL3VjY19mYXN0LmgKQEAgLTExOCw2ICsxMTgsNyBAQCBlbnVtIHVjY19mYXN0X3RyYW5z cGFyZW50X3RjcmMgewogLyogRmFzdCBVQ0MgaW5pdGlhbGl6YXRpb24gc3RydWN0dXJlICovCiBz dHJ1Y3QgdWNjX2Zhc3RfaW5mbyB7CiAJaW50IHVjY19udW07CisJaW50IHRkbV9udW07CiAJZW51 bSBxZV9jbG9jayByeF9jbG9jazsKIAllbnVtIHFlX2Nsb2NrIHR4X2Nsb2NrOwogCWVudW0gcWVf Y2xvY2sgcnhfc3luYzsKLS0gCjIuMS4wLjI3Lmc5NmRiMzI0CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eHBwYy1kZXYgbWFpbGluZyBsaXN0Ckxp bnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCmh0dHBzOi8vbGlzdHMub3psYWJzLm9yZy9saXN0 aW5mby9saW51eHBwYy1kZXY=