From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [2/7] usb: typec: ucsi: add ccg command framework From: Ajay Gupta Message-Id: <20190118010909.16161-3-ajayg@nvidia.com> Date: Thu, 17 Jan 2019 17:09:04 -0800 To: heikki.krogerus@linux.intel.com Cc: linux-usb@vger.kernel.org, Ajay Gupta List-ID: VXNlZCB0byBzZW5kIGNvbW1hbmQgdG8gY2NnIGNvbnRyb2xsZXIKClNpZ25lZC1vZmYtYnk6IEFq YXkgR3VwdGEgPGFqYXlnQG52aWRpYS5jb20+Ci0tLQogZHJpdmVycy91c2IvdHlwZWMvdWNzaS91 Y3NpX2NjZy5jIHwgMjUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMSBmaWxlIGNo YW5nZWQsIDI0MyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdXNiL3R5cGVjL3Vjc2kvdWNzaV9jY2cuYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3Vjc2kv dWNzaV9jY2cuYwppbmRleCA0ZDM1Mjc5YWI4NTMuLmRjZTkxMjZiNmEzNyAxMDA2NDQKLS0tIGEv ZHJpdmVycy91c2IvdHlwZWMvdWNzaS91Y3NpX2NjZy5jCisrKyBiL2RyaXZlcnMvdXNiL3R5cGVj L3Vjc2kvdWNzaV9jY2cuYwpAQCAtMTcsNiArMTcsMjkgQEAKICNpbmNsdWRlIDxhc20vdW5hbGln bmVkLmg+CiAjaW5jbHVkZSAidWNzaS5oIgogCisjZGVmaW5lIENDR1hfUkFCX0RFVklDRV9NT0RF CQkJMHgwMDAwCisjZGVmaW5lIENDR1hfUkFCX0lOVFJfUkVHCQkJMHgwMDA2CisjZGVmaW5lICBE RVZfSU5UCQkJCUJJVCgwKQorI2RlZmluZSAgUE9SVDBfSU5UCQkJCUJJVCgxKQorI2RlZmluZSAg UE9SVDFfSU5UCQkJCUJJVCgyKQorI2RlZmluZSAgVUNTSV9SRUFEX0lOVAkJCQlCSVQoNykKKyNk ZWZpbmUgQ0NHWF9SQUJfUkVBRF9BTExfVkVSCQkJMHgwMDEwCisjZGVmaW5lIENDR1hfUkFCX1JF QURfRlcyX1ZFUgkJCTB4MDAyMAorI2RlZmluZSBDQ0dYX1JBQl9VQ1NJX0NPTlRST0wJCQkweDAw MzkKKyNkZWZpbmUgQ0NHWF9SQUJfVUNTSV9DT05UUk9MX1NUQVJUCQlCSVQoMCkKKyNkZWZpbmUg Q0NHWF9SQUJfVUNTSV9DT05UUk9MX1NUT1AJCUJJVCgxKQorI2RlZmluZSBDQ0dYX1JBQl9VQ1NJ X0RBVEFfQkxPQ0sob2Zmc2V0KQkoMHhmMDAwIHwgKChvZmZzZXQpICYgMHhmZikpCisjZGVmaW5l IERFVl9SRUdfSURYCQkJCUNDR1hfUkFCX0RFVklDRV9NT0RFCisjZGVmaW5lIENDR1hfUkFCX1JF U1BPTlNFCQkJMHgwMDdFCisjZGVmaW5lICBBU1lOQ19FVkVOVAkJCQlCSVQoNykKKworLyogQ0NH eCBldmVudHMgJiBhc3luYyBtc2cgY29kZXMgKi8KKyNkZWZpbmUgUkVTRVRfQ09NUExFVEUJCTB4 ODAKKyNkZWZpbmUgRVZFTlRfSU5ERVgJCVJFU0VUX0NPTVBMRVRFCisjZGVmaW5lIFBPUlRfQ09O TkVDVF9ERVQJMHg4NAorI2RlZmluZSBQT1JUX0RJU0NPTk5FQ1RfREVUCTB4ODUKKyNkZWZpbmUg Uk9MRV9TV0FQX0NPTVBFTEVURQkweDg3CisKIHN0cnVjdCBjY2dfZGV2X2luZm8gewogCXU4IGZ3 X21vZGU6MjsKIAl1OCB0d29fcGRfcG9ydHM6MjsKQEAgLTQ0LDIzICs2NywxMTMgQEAgc3RydWN0 IHZlcnNpb25faW5mbyB7CiAJc3RydWN0IHZlcnNpb25fZm9ybWF0IGFwcDsKIH07CiAKKy8qIEND R3ggcmVzcG9uc2UgY29kZXMgKi8KK2VudW0gY2NnX3Jlc3BfY29kZSB7CisJQ01EX05PX1JFU1Ag ICAgICAgICAgICAgPSAweDAwLAorCUNNRF9TVUNDRVNTICAgICAgICAgICAgID0gMHgwMiwKKwlG TEFTSF9EQVRBX0FWQUlMQUJMRSAgICA9IDB4MDMsCisJQ01EX0lOVkFMSUQgICAgICAgICAgICAg PSAweDA1LAorCUZMQVNIX1VQREFURV9GQUlMICAgICAgID0gMHgwNywKKwlJTlZBTElEX0ZXICAg ICAgICAgICAgICA9IDB4MDgsCisJSU5WQUxJRF9BUkcgICAgICAgICAgICAgPSAweDA5LAorCUNN RF9OT1RfU1VQUE9SVCAgICAgICAgID0gMHgwQSwKKwlUUkFOU0FDVElPTl9GQUlMICAgICAgICA9 IDB4MEMsCisJUERfQ01EX0ZBSUwgICAgICAgICAgICAgPSAweDBELAorCVVOREVGX0VSUk9SICAg ICAgICAgICAgID0gMHgwRiwKKwlJTlZBTElEX1JFU1AJCT0gMHgxMCwKK307CisKK3N0YXRpYyBj b25zdCBjaGFyICogY29uc3QgY2NnX3Jlc3Bfc3Ryc1tdID0geworCS8qIDB4MDAgKi8gIk5vIFJl c3BvbnNlLiIsCisJLyogMHgwMSAqLyAiMHgwMSIsCisJLyogMHgwMiAqLyAiSFBJIENvbW1hbmQg U3VjY2Vzcy4iLAorCS8qIDB4MDMgKi8gIkZsYXNoIERhdGEgQXZhaWxhYmxlIGluIGRhdGEgbWVt b3J5LiIsCisJLyogMHgwNCAqLyAiMHgwNCIsCisJLyogMHgwNSAqLyAiSW52YWxpZCBDb21tYW5k LiIsCisJLyogMHgwNiAqLyAiMHgwNiIsCisJLyogMHgwNyAqLyAiRmxhc2ggd3JpdGUgb3BlcmF0 aW9uIGZhaWxlZC4iLAorCS8qIDB4MDggKi8gIkZpcm13YXJlIHZhbGlkaXR5IGNoZWNrIGZhaWxl ZC4iLAorCS8qIDB4MDkgKi8gIkNvbW1hbmQgZmFpbGVkIGR1ZSB0byBpbnZhbGlkIGFyZ3VtZW50 cy4iLAorCS8qIDB4MEEgKi8gIkNvbW1hbmQgbm90IHN1cHBvcnRlZCBpbiB0aGUgY3VycmVudCBt b2RlLiIsCisJLyogMHgwQiAqLyAiMHgwQiIsCisJLyogMHgwQyAqLyAiVHJhbnNhY3Rpb24gRmFp bGVkLiBHT09EX0NSQyB3YXMgbm90IHJlY2VpdmVkLiIsCisJLyogMHgwRCAqLyAiUEQgQ29tbWFu ZCBGYWlsZWQuIiwKKwkvKiAweDBFICovICIweDBFIiwKKwkvKiAweDBGICovICJVbmRlZmluZWQg RXJyb3IiLAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjY2dfZXZ0X3N0cnNbXSA9 IHsKKwkvKiAweDgwICovICJSZXNldCBDb21wbGV0ZS4iLAorCS8qIDB4ODEgKi8gIk1lc3NhZ2Ug cXVldWUgb3ZlcmZsb3cgZGV0ZWN0ZWQuIiwKKwkvKiAweDgyICovICJPdmVyY3VycmVudCBEZXRl Y3RlZCIsCisJLyogMHg4MyAqLyAiT3ZlcnZvbHRhZ2UgRGV0ZWN0ZWQiLAorCS8qIDB4ODQgKi8g IlR5cGUtQyBQb3J0IENvbm5lY3QgRGV0ZWN0ZWQiLAorCS8qIDB4ODUgKi8gIlR5cGUtQyBQb3J0 IERpc2Nvbm5lY3QgRGV0ZWN0ZWQiLAorCS8qIDB4ODYgKi8gIlBEIENvbnRyYWN0IE5lZ290aWF0 aW9uIENvbXBsZXRlIiwKKwkvKiAweDg3ICovICJTV0FQIENvbXBsZXRlIiwKKwkvKiAweDg4ICov ICIweDg4IiwKKwkvKiAweDg5ICovICIweDg5IiwKKwkvKiAweDhBICovICJQU19SRFkgTWVzc2Fn ZSBSZWNlaXZlZCIsCisJLyogMHg4QiAqLyAiR290b01pbiBNZXNzYWdlIFJlY2VpdmVkLiIsCisJ LyogMHg4QyAqLyAiQWNjZXB0IE1lc3NhZ2UgUmVjZWl2ZWQiLAorCS8qIDB4OEQgKi8gIlJlamVj dCBNZXNzYWdlIFJlY2VpdmVkIiwKKwkvKiAweDhFICovICJXYWl0IE1lc3NhZ2UgUmVjZWl2ZWQi LAorCS8qIDB4OEYgKi8gIkhhcmQgUmVzZXQgUmVjZWl2ZWQiLAorCS8qIDB4OTAgKi8gIlZETSBS ZWNlaXZlZCIsCisJLyogMHg5MSAqLyAiU291cmNlIENhcGFiaWxpdGllcyBNZXNzYWdlIFJlY2Vp dmVkIiwKKwkvKiAweDkyICovICJTaW5rIENhcGFiaWxpdGllcyBNZXNzYWdlIFJlY2VpdmVkIiwK KwkvKiAweDkzICovICJEaXNwbGF5IFBvcnQgQWx0ZXJuYXRlIE1vZGUgZW50ZXJlZCIsCisJLyog MHg5NCAqLyAiRGlzcGxheSBQb3J0IGRldmljZSBjb25uZWN0ZWQgYXQgVUZQX1UiLAorCS8qIDB4 OTUgKi8gIkRpc3BsYXkgcG9ydCBkZXZpY2Ugbm90IGNvbm5lY3RlZCBhdCBVRlBfVSIsCisJLyog MHg5NiAqLyAiRGlzcGxheSBwb3J0IFNJRCBub3QgZm91bmQgaW4gRGlzY292ZXIgU0lEIHByb2Nl c3MiLAorCS8qIDB4OTcgKi8gIk11bHRpcGxlIFNWSURzIGRpc2NvdmVyZWQgYWxvbmcgd2l0aCBE aXNwbGF5UG9ydCBTSUQiLAorCS8qIDB4OTggKi8gIkRQIEZ1bmN0aW9uYWxpdHkgbm90IHN1cHBv cnRlZCBieSBDYWJsZSIsCisJLyogMHg5OSAqLyAiRGlzcGxheSBQb3J0IENvbmZpZ3VyYXRpb24g bm90IHN1cHBvcnRlZCBieSBVRlAiLAorCS8qIDB4OUEgKi8gIkhhcmQgUmVzZXQgU2VudCB0byBQ b3J0IFBhcnRuZXIiLAorCS8qIDB4OUIgKi8gIlNvZnQgUmVzZXQgU2VudCB0byBQb3J0IFBhcnRu ZXIiLAorCS8qIDB4OUMgKi8gIkNhYmxlIFJlc2V0IFNlbnQgdG8gRU1DQSIsCisJLyogMHg5RCAq LyAiU291cmNlIERpc2FibGVkIFN0YXRlIEVudGVyZWQiLAorCS8qIDB4OUUgKi8gIlNlbmRlciBS ZXNwb25zZSBUaW1lciBUaW1lb3V0IiwKKwkvKiAweDlGICovICJObyBWRE0gUmVzcG9uc2UgUmVj ZWl2ZWQiLAorCS8qIDB4QTAgKi8gIlVuZXhwZWN0ZWQgVm9sdGFnZSBvbiBWYnVzIiwKKwkvKiAw eEExICovICJUeXBlLUMgRXJyb3IgUmVjb3ZlcnkiLAorCS8qIDB4QTIgKi8gIjB4QTIiLAorCS8q IDB4QTMgKi8gIjB4QTMiLAorCS8qIDB4QTQgKi8gIjB4QTQiLAorCS8qIDB4QTUgKi8gIjB4QTUi LAorCS8qIDB4QTYgKi8gIkVNQ0EgRGV0ZWN0ZWQiLAorCS8qIDB4QTcgKi8gIjB4QTciLAorCS8q IDB4QTggKi8gIjB4QTgiLAorCS8qIDB4QTkgKi8gIjB4QTkiLAorCS8qIDB4QUEgKi8gIlJwIENo YW5nZSBEZXRlY3RlZCIsCit9OworCitzdHJ1Y3QgY2NnX2NtZCB7CisJdTE2IHJlZzsKKwl1MzIg ZGF0YTsKKwlpbnQgbGVuOworCWludCBkZWxheTsgLyogbXMgZGVsYXkgZm9yIGNtZCB0aW1lb3V0 ICAqLworfTsKKworc3RydWN0IGNjZ19yZXNwIHsKKwl1OCBjb2RlOworCXU4IGxlbmd0aDsKK307 CisKIHN0cnVjdCB1Y3NpX2NjZyB7CiAJc3RydWN0IGRldmljZSAqZGV2OwogCXN0cnVjdCB1Y3Np ICp1Y3NpOwogCXN0cnVjdCB1Y3NpX3BwbSBwcG07CiAJc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dDsKIAlzdHJ1Y3QgY2NnX2Rldl9pbmZvIGluZm87CisJLyogQ0NHIEhQSSBjb21tdW5pY2F0aW9u IGZsYWdzICovCisJdW5zaWduZWQgbG9uZyBmbGFnczsKKyNkZWZpbmUgUkVTRVRfUEVORElORwkw CisjZGVmaW5lIERFVl9DTURfUEVORElORwkxCisJc3RydWN0IGNjZ19yZXNwIGRldl9yZXNwOwor CXU4IGNtZF9yZXNwOwogfTsKIAotI2RlZmluZSBDQ0dYX1JBQl9ERVZJQ0VfTU9ERQkJCTB4MDAw MAotI2RlZmluZSBDQ0dYX1JBQl9JTlRSX1JFRwkJCTB4MDAwNgotI2RlZmluZSBDQ0dYX1JBQl9S RUFEX0FMTF9WRVIJCQkweDAwMTAKLSNkZWZpbmUgQ0NHWF9SQUJfUkVBRF9GVzJfVkVSCQkJMHgw MDIwCi0jZGVmaW5lIENDR1hfUkFCX1VDU0lfQ09OVFJPTAkJCTB4MDAzOQotI2RlZmluZSBDQ0dY X1JBQl9VQ1NJX0NPTlRST0xfU1RBUlQJCUJJVCgwKQotI2RlZmluZSBDQ0dYX1JBQl9VQ1NJX0NP TlRST0xfU1RPUAkJQklUKDEpCi0jZGVmaW5lIENDR1hfUkFCX1VDU0lfREFUQV9CTE9DSyhvZmZz ZXQpCSgweGYwMDAgfCAoKG9mZnNldCkgJiAweGZmKSkKLQogc3RhdGljIGludCBjY2dfcmVhZChz dHJ1Y3QgdWNzaV9jY2cgKnVjLCB1MTYgcmFiLCB1OCAqZGF0YSwgdTMyIGxlbikKIHsKIAlzdHJ1 Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gdWMtPmNsaWVudDsKQEAgLTI4Niw2ICszOTksMTI3IEBA IHN0YXRpYyBpbnQgZ2V0X2Z3X2luZm8oc3RydWN0IHVjc2lfY2NnICp1YykKIAlyZXR1cm4gMDsK IH0KIAorc3RhdGljIGlubGluZSBib29sIGludmFsaWRfcmVzcChpbnQgY29kZSkKK3sKKwlyZXR1 cm4gKGNvZGUgPj0gSU5WQUxJRF9SRVNQKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGludmFs aWRfZXZ0KGludCBjb2RlKQoreworCXVuc2lnbmVkIGxvbmcgbnVtX29mX2V2ZW50cyA9IEFSUkFZ X1NJWkUoY2NnX2V2dF9zdHJzKTsKKworCXJldHVybiAoY29kZSA+PSAoRVZFTlRfSU5ERVggKyBu dW1fb2ZfZXZlbnRzKSkgfHwgKGNvZGUgPCBFVkVOVF9JTkRFWCk7Cit9CisKK3N0YXRpYyB2b2lk IGNjZ19wcm9jZXNzX3Jlc3BvbnNlKHN0cnVjdCB1Y3NpX2NjZyAqdWMpCit7CisJc3RydWN0IGRl dmljZSAqZGV2ID0gdWMtPmRldjsKKworCWlmICh1Yy0+ZGV2X3Jlc3AuY29kZSAmIEFTWU5DX0VW RU5UKSB7CisJCWlmICh1Yy0+ZGV2X3Jlc3AuY29kZSA9PSBSRVNFVF9DT01QTEVURSkgeworCQkJ aWYgKHRlc3RfYml0KFJFU0VUX1BFTkRJTkcsICZ1Yy0+ZmxhZ3MpKQorCQkJCXVjLT5jbWRfcmVz cCA9IHVjLT5kZXZfcmVzcC5jb2RlOworCQkJZGV2X2luZm8oZGV2LCAiQ0NHIHJlc2V0IGNvbXBs ZXRlXG4iKTsKKwkJCWdldF9md19pbmZvKHVjKTsKKwkJfQorCisJCWlmICghaW52YWxpZF9ldnQo dWMtPmRldl9yZXNwLmNvZGUpKQorCQkJZGV2X2RiZyhkZXYsICIlc1xuIiwKKwkJCQljY2dfZXZ0 X3N0cnNbdWMtPmRldl9yZXNwLmNvZGUgLSBFVkVOVF9JTkRFWF0pOworCQllbHNlCisJCQlkZXZf ZXJyKGRldiwgImludmFsaWQgZXZ0ICVkXG4iLCB1Yy0+ZGV2X3Jlc3AuY29kZSk7CisJfSBlbHNl IHsKKwkJaWYgKHRlc3RfYml0KERFVl9DTURfUEVORElORywgJnVjLT5mbGFncykpIHsKKwkJCXVj LT5jbWRfcmVzcCA9IHVjLT5kZXZfcmVzcC5jb2RlOworCQkJY2xlYXJfYml0KERFVl9DTURfUEVO RElORywgJnVjLT5mbGFncyk7CisJCX0gZWxzZSB7CisJCQlkZXZfZXJyKGRldiwgImRldiByZXNw IDB4JTA0eCBidXQgbm8gY21kIHBlbmRpbmdcbiIsCisJCQkJdWMtPmRldl9yZXNwLmNvZGUpOwor CQl9CisJfQorfQorCitzdGF0aWMgaW50IGNjZ19yZWFkX3Jlc3BvbnNlKHN0cnVjdCB1Y3NpX2Nj ZyAqdWMpCit7CisJdW5zaWduZWQgbG9uZyB0YXJnZXQgPSBqaWZmaWVzICsgbXNlY3NfdG9famlm ZmllcygxMDAwKTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSB1Yy0+ZGV2OworCXU4IGludHZhbDsK KwlpbnQgc3RhdHVzOworCisJLyogd2FpdCBmb3IgaW50ZXJydXB0IHN0YXR1cyB0byBnZXQgdXBk YXRlZCAqLworCWRvIHsKKwkJc3RhdHVzID0gY2NnX3JlYWQodWMsIENDR1hfUkFCX0lOVFJfUkVH LCAmaW50dmFsLAorCQkJCSAgc2l6ZW9mKGludHZhbCkpOworCQlpZiAoc3RhdHVzIDwgMCkKKwkJ CXJldHVybiBzdGF0dXM7CisKKwkJaWYgKGludHZhbCAmIERFVl9JTlQpCisJCQlicmVhazsKKwkJ dXNsZWVwX3JhbmdlKDUwMCwgNjAwKTsKKwl9IHdoaWxlICh0aW1lX2lzX2FmdGVyX2ppZmZpZXMo dGFyZ2V0KSk7CisKKwlpZiAodGltZV9pc19iZWZvcmVfamlmZmllcyh0YXJnZXQpKSB7CisJCWRl dl9lcnIoZGV2LCAicmVzcG9uc2UgdGltZW91dCBlcnJvclxuIik7CisJCXJldHVybiAtRVRJTUU7 CisJfQorCisJc3RhdHVzID0gY2NnX3JlYWQodWMsIENDR1hfUkFCX1JFU1BPTlNFLCAodTggKikm dWMtPmRldl9yZXNwLAorCQkJICBzaXplb2YodWMtPmRldl9yZXNwKSk7CisJaWYgKHN0YXR1cyA8 IDApCisJCXJldHVybiBzdGF0dXM7CisKKwlkZXZfZGJnKGRldiwgImRldiBldmVudCBjb2RlOiAw eCUwMngsIGRhdGEgbGVuOiAlZFxuIiwKKwkJdWMtPmRldl9yZXNwLmNvZGUsIHVjLT5kZXZfcmVz cC5sZW5ndGgpOworCisJc3RhdHVzID0gY2NnX3dyaXRlKHVjLCBDQ0dYX1JBQl9JTlRSX1JFRywg JmludHZhbCwgc2l6ZW9mKGludHZhbCkpOworCWlmIChzdGF0dXMgPCAwKQorCQlyZXR1cm4gc3Rh dHVzOworCisJcmV0dXJuIDA7Cit9CisKKy8qIENhbGxlciBtdXN0IGhvbGQgdWMtPmxvY2sgKi8K K3N0YXRpYyBpbnQgY2NnX3NlbmRfY29tbWFuZChzdHJ1Y3QgdWNzaV9jY2cgKnVjLCBzdHJ1Y3Qg Y2NnX2NtZCAqY21kKQoreworCXN0cnVjdCBkZXZpY2UgKmRldiA9IHVjLT5kZXY7CisJaW50IHJl dDsKKworCXN3aXRjaCAoY21kLT5yZWcgJiAweEYwMDApIHsKKwljYXNlIERFVl9SRUdfSURYOgor CQlzZXRfYml0KERFVl9DTURfUEVORElORywgJnVjLT5mbGFncyk7CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCWRldl9lcnIoZGV2LCAiaW52YWxpZCBjbWQgcmVnaXN0ZXJcbiIpOworCQlicmVhazsK Kwl9CisKKwlyZXQgPSBjY2dfd3JpdGUodWMsIGNtZC0+cmVnLCAodTggKikmY21kLT5kYXRhLCBj bWQtPmxlbik7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlkZXZfZGJnKGRldiwg InJlZz0weCUwNHggZGF0YT0weCUwOHggZGVsYXk9JWRcbiIsCisJCWNtZC0+cmVnLCBjbWQtPmRh dGEsIGNtZC0+ZGVsYXkpOworCisJbXNsZWVwKGNtZC0+ZGVsYXkpOworCisJcmV0ID0gY2NnX3Jl YWRfcmVzcG9uc2UodWMpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAicmVzcG9u c2UgcmVhZCBlcnJvclxuIik7CisJCXN3aXRjaCAoY21kLT5yZWcgJiAweEYwMDApIHsKKwkJY2Fz ZSBERVZfUkVHX0lEWDoKKwkJCWNsZWFyX2JpdChERVZfQ01EX1BFTkRJTkcsICZ1Yy0+ZmxhZ3Mp OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlkZXZfZXJyKGRldiwgImludmFsaWQgY21kIHJl Z2lzdGVyXG4iKTsKKwkJCWJyZWFrOworCQl9CisJCXJldHVybiAtRUlPOworCX0KKwljY2dfcHJv Y2Vzc19yZXNwb25zZSh1Yyk7CisKKwlyZXR1cm4gdWMtPmNtZF9yZXNwOworfQorCiBzdGF0aWMg aW50IHVjc2lfY2NnX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsCiAJCQkgIGNvbnN0 IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkKIHsK