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: [v4,1/5] usb: typec: tcpm: pdo matching optimization From: Hans de Goede Message-Id: Date: Fri, 13 Apr 2018 18:54:20 +0200 To: Guenter Roeck , Li Jun Cc: gregkh@linuxfoundation.org, robh+dt@kernel.org, heikki.krogerus@linux.intel.com, rmfrfs@gmail.com, yueyao.zhu@gmail.com, linux-usb@vger.kernel.org, linux-imx@nxp.com List-ID: SGksCgpPbiAxMy0wNC0xOCAxNzo1OCwgR3VlbnRlciBSb2VjayB3cm90ZToKPiBPbiBGcmksIEFw ciAxMywgMjAxOCBhdCAxMDoxODo0MVBNICswODAwLCBMaSBKdW4gd3JvdGU6Cj4+IFRoaXMgcGF0 Y2ggaXMgYSBjb21iaW5hdGlvbiBvZiBjb21taXQgNTdlNmYwZDdiODA0Cj4+ICgidHlwZWM6IHRj cG06IE9ubHkgcmVxdWVzdCBtYXRjaGluZyBwZG9zIikgYW5kIHNvdXJjZQo+PiBwZG8gc2VsZWN0 aW9uIG9wdGltaXphdGlvbiBiYXNlZCBvbiBpdCwgaW5zdGVhZCBvZiBvbmx5Cj4+IGNvbXBhcmUg YmV0d2VlbiB0aGUgc2FtZSBwZG8gdHlwZSBvZiBzaW5rIGFuZCBzb3VyY2UsCj4+IHdlIHNob3Vs ZCBjaGVjayBzb3VyY2UgcGRvIHZvbHRhZ2UgcmFuZ2UgaXMgd2l0aGluIHRoZQo+PiB2b2x0YWdl IHJhbmdlIG9mIG9uZSBzaW5rIHBkby4KPj4KPj4gUmV2aWV3ZWQtYnk6IEhhbnMgZGUgR29lZGUg PGhkZWdvZWRlQHJlZGhhdC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IExpIEp1biA8anVuLmxpQG54 cC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvdXNiL3R5cGVjL3RjcG0uYyB8IDEwMiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+PiAgIDEgZmlsZSBjaGFu Z2VkLCA2NSBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0uYyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0uYwo+PiBp bmRleCA2NzdkMTIxLi5jMTI3MzM5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3VzYi90eXBlYy90 Y3BtLmMKPj4gKysrIGIvZHJpdmVycy91c2IvdHlwZWMvdGNwbS5jCj4+IEBAIC0xNzcyLDQwICsx NzcyLDY1IEBAIHN0YXRpYyBpbnQgdGNwbV9wZF9jaGVja19yZXF1ZXN0KHN0cnVjdCB0Y3BtX3Bv cnQgKnBvcnQpCj4+ICAgCXJldHVybiAwOwo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyBpbnQgdGNw bV9wZF9zZWxlY3RfcGRvKHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQpCj4+ICsjZGVmaW5lIG1pbl9w b3dlcih4LCB5KSBtaW4ocGRvX21heF9wb3dlcih4KSwgcGRvX21heF9wb3dlcih5KSkKPj4gKyNk ZWZpbmUgbWluX2N1cnJlbnQoeCwgeSkgbWluKHBkb19tYXhfY3VycmVudCh4KSwgcGRvX21heF9j dXJyZW50KHkpKQo+PiArCj4+ICtzdGF0aWMgaW50IHRjcG1fcGRfc2VsZWN0X3BkbyhzdHJ1Y3Qg dGNwbV9wb3J0ICpwb3J0LCBpbnQgKnNpbmtfcGRvLAo+PiArCQkJICAgICAgaW50ICpzcmNfcGRv KQo+PiAgIHsKPj4gLQl1bnNpZ25lZCBpbnQgaSwgbWF4X213ID0gMCwgbWF4X212ID0gMDsKPj4g Kwl1bnNpZ25lZCBpbnQgaSwgaiwgbWF4X3NyY19tdiA9IDAsIG1pbl9zcmNfbXYgPSAwLCBtYXhf bXcgPSAwLAo+PiArCQkgICAgIG1heF9tdiA9IDAsIHNyY19tdyA9IDAsIHNyY19tYSA9IDAsIG1h eF9zbmtfbXYgPSAwLAo+PiArCQkgICAgIG1pbl9zbmtfbXYgPSAwOwo+PiAgIAlpbnQgcmV0ID0g LUVJTlZBTDsKPj4gICAKPj4gICAJLyoKPj4gLQkgKiBTZWxlY3QgdGhlIHNvdXJjZSBQRE8gcHJv dmlkaW5nIHRoZSBtb3N0IHBvd2VyIHdoaWxlIHN0YXlpbmcgd2l0aGluCj4+IC0JICogdGhlIGJv YXJkJ3Mgdm9sdGFnZSBsaW1pdHMuIFByZWZlciBQRE8gcHJvdmlkaW5nIGV4cAo+PiArCSAqIFNl bGVjdCB0aGUgc291cmNlIFBETyBwcm92aWRpbmcgdGhlIG1vc3QgcG93ZXIgd2hpY2ggaGFzIGEK Pj4gKwkgKiBtYXRjaGlnIHNpbmsgY2FwLgo+PiAgIAkgKi8KPj4gICAJZm9yIChpID0gMDsgaSA8 IHBvcnQtPm5yX3NvdXJjZV9jYXBzOyBpKyspIHsKPj4gICAJCXUzMiBwZG8gPSBwb3J0LT5zb3Vy Y2VfY2Fwc1tpXTsKPj4gICAJCWVudW0gcGRfcGRvX3R5cGUgdHlwZSA9IHBkb190eXBlKHBkbyk7 Cj4+IC0JCXVuc2lnbmVkIGludCBtdiwgbWEsIG13Owo+PiAgIAo+PiAtCQlpZiAodHlwZSA9PSBQ RE9fVFlQRV9GSVhFRCkKPj4gLQkJCW12ID0gcGRvX2ZpeGVkX3ZvbHRhZ2UocGRvKTsKPj4gLQkJ ZWxzZQo+PiAtCQkJbXYgPSBwZG9fbWluX3ZvbHRhZ2UocGRvKTsKPj4gKwkJaWYgKHR5cGUgPT0g UERPX1RZUEVfRklYRUQpIHsKPj4gKwkJCW1heF9zcmNfbXYgPSBwZG9fZml4ZWRfdm9sdGFnZShw ZG8pOwo+PiArCQkJbWluX3NyY19tdiA9IG1heF9zcmNfbXY7Cj4+ICsJCX0gZWxzZSB7Cj4+ICsJ CQltYXhfc3JjX212ID0gcGRvX21heF92b2x0YWdlKHBkbyk7Cj4+ICsJCQltaW5fc3JjX212ID0g cGRvX21pbl92b2x0YWdlKHBkbyk7Cj4+ICsJCX0KPj4gICAKPj4gICAJCWlmICh0eXBlID09IFBE T19UWVBFX0JBVFQpIHsKPj4gLQkJCW13ID0gcGRvX21heF9wb3dlcihwZG8pOwo+PiArCQkJc3Jj X213ID0gcGRvX21heF9wb3dlcihwZG8pOwo+PiAgIAkJfSBlbHNlIHsKPj4gLQkJCW1hID0gbWlu KHBkb19tYXhfY3VycmVudChwZG8pLAo+PiAtCQkJCSBwb3J0LT5tYXhfc25rX21hKTsKPj4gLQkJ CW13ID0gbWEgKiBtdiAvIDEwMDA7Cj4+ICsJCQlzcmNfbWEgPSBwZG9fbWF4X2N1cnJlbnQocGRv KTsKPj4gKwkJCXNyY19tdyA9IHNyY19tYSAqIG1pbl9zcmNfbXYgLyAxMDAwOwo+PiAgIAkJfQo+ PiAgIAo+PiAtCQkvKiBQZXJmZXIgaGlnaGVyIHZvbHRhZ2VzIGlmIGF2YWlsYWJsZSAqLwo+PiAt CQlpZiAoKG13ID4gbWF4X213IHx8IChtdyA9PSBtYXhfbXcgJiYgbXYgPiBtYXhfbXYpKSAmJgo+ PiAtCQkgICAgbXYgPD0gcG9ydC0+bWF4X3Nua19tdikgewo+PiAtCQkJcmV0ID0gaTsKPj4gLQkJ CW1heF9tdyA9IG13Owo+PiAtCQkJbWF4X212ID0gbXY7Cj4+ICsJCWZvciAoaiA9IDA7IGogPCBw b3J0LT5ucl9zbmtfcGRvOyBqKyspIHsKPj4gKwkJCXBkbyA9IHBvcnQtPnNua19wZG9bal07Cj4+ ICsKPj4gKwkJCWlmIChwZG9fdHlwZShwZG8pID09IFBET19UWVBFX0ZJWEVEKSB7Cj4+ICsJCQkJ bWluX3Nua19tdiA9IHBkb19maXhlZF92b2x0YWdlKHBkbyk7Cj4+ICsJCQkJbWF4X3Nua19tdiA9 IHBkb19maXhlZF92b2x0YWdlKHBkbyk7Cj4+ICsJCQl9IGVsc2Ugewo+PiArCQkJCW1pbl9zbmtf bXYgPSBwZG9fbWluX3ZvbHRhZ2UocGRvKTsKPj4gKwkJCQltYXhfc25rX212ID0gcGRvX21heF92 b2x0YWdlKHBkbyk7Cj4+ICsJCQl9Cj4+ICsKPj4gKwkJCWlmIChtYXhfc3JjX212IDw9IG1heF9z bmtfbXYgJiYKPj4gKwkJCQltaW5fc3JjX212ID49IG1pbl9zbmtfbXYpIHsKPj4gKwkJCQkvKiBQ cmVmZXIgaGlnaGVyIHZvbHRhZ2VzIGlmIGF2YWlsYWJsZSAqLwo+PiArCQkJCWlmICgoc3JjX213 ID09IG1heF9tdyAmJiBtaW5fc3JjX212ID4gbWF4X212KSB8fAo+PiArCQkJCQkJCXNyY19tdyA+ IG1heF9tdykgewo+PiArCQkJCQkqc3JjX3BkbyA9IGk7Cj4+ICsJCQkJCSpzaW5rX3BkbyA9IGo7 Cj4+ICsJCQkJCW1heF9tdyA9IHNyY19tdzsKPj4gKwkJCQkJbWF4X212ID0gbWluX3NyY19tdjsK Pj4gKwkJCQl9Cj4+ICsJCQkJYnJlYWs7Cj4+ICsJCQl9Cj4+ICAgCQl9Cj4+ICsKPiAKPiBOaXRw aWNrLCBidXQgdGhhdCBhZGRlZCBlbXB0eSBsaW5lIGlzIHVuZWNlZXNzYXJ5Lgo+IAo+PiAgIAl9 Cj4+ICAgCj4+ICAgCXJldHVybiByZXQ7Cj4+IEBAIC0xODE2LDEzICsxODQxLDE0IEBAIHN0YXRp YyBpbnQgdGNwbV9wZF9idWlsZF9yZXF1ZXN0KHN0cnVjdCB0Y3BtX3BvcnQgKnBvcnQsIHUzMiAq cmRvKQo+PiAgIAl1bnNpZ25lZCBpbnQgbXYsIG1hLCBtdywgZmxhZ3M7Cj4+ICAgCXVuc2lnbmVk IGludCBtYXhfbWEsIG1heF9tdzsKPj4gICAJZW51bSBwZF9wZG9fdHlwZSB0eXBlOwo+PiAtCWlu dCBpbmRleDsKPj4gLQl1MzIgcGRvOwo+PiArCWludCBzcmNfcGRvX2luZGV4LCBzbmtfcGRvX2lu ZGV4Owo+PiArCXUzMiBwZG8sIG1hdGNoaW5nX3Nua19wZG87Cj4+ICAgCj4+IC0JaW5kZXggPSB0 Y3BtX3BkX3NlbGVjdF9wZG8ocG9ydCk7Cj4+IC0JaWYgKGluZGV4IDwgMCkKPj4gKwlpZiAodGNw bV9wZF9zZWxlY3RfcGRvKHBvcnQsICZzbmtfcGRvX2luZGV4LCAmc3JjX3Bkb19pbmRleCkgPCAw KQo+PiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gCj4gVGhpcyBtYXkgc2F2ZSB5b3UgYSB2YXJpYWJs ZSwgYnV0IHRjcG1fcGRfc2VsZWN0X3BkbygpIG1heSBhdCBzb21lIHBvaW50IHJldHVybgo+IGEg ZGlmZmVyZW50IGVycm9yLiBFaXRoZXIgY2FzZSwgdGhpcyBtYXkgdHJpZ2dlciBhIHN0YXRpYyBh bmFseXplciB3YXJuaW5nIHRoYXQKPiB5b3UgYXJlIG92ZXJyaWRpbmcgYSByZXR1cm4gdmFsdWUu Cj4gCj4gQmVzaWRlcywgZG9lcyB0aGlzIGV2ZW4gd29yayA/IEkgZG9uJ3Qgc2VlIHdoZXJlIHRo ZSBmdW5jdGlvbiB3b3VsZCByZXR1cm4KPiBhbnl0aGluZyBidXQgLUVJTlZBTC4KCkdvb2QgY2F0 Y2gsIHRoaXMgaW5kZWVkIGxvb2tzIGxpa2UgdGhpcyB3YXMgbm90IHRlc3RlZCA/CgpOZXh0IHRp bWUgcGxlYXNlIGFsd2F5cyB0ZXN0IGlmIHBvc3NpYmxlLgoKd2UgbmVlZCB0byBzZXQgcmV0ID0g MCAgaW4gdGNwbV9wZF9zZWxlY3RfcGRvKCkgd2hlbiB3ZSBhc3NpZ24gYQp2YWx1ZSB0byB0aGUg c3JjIGFuZCBzaW5rIHBkb3MuCgpSZWdhcmRzLAoKSGFucwoKCgoKPiAKPj4gLQlwZG8gPSBwb3J0 LT5zb3VyY2VfY2Fwc1tpbmRleF07Cj4+ICsKPj4gKwlwZG8gPSBwb3J0LT5zb3VyY2VfY2Fwc1tz cmNfcGRvX2luZGV4XTsKPj4gKwltYXRjaGluZ19zbmtfcGRvID0gcG9ydC0+c25rX3Bkb1tzbmtf cGRvX2luZGV4XTsKPj4gICAJdHlwZSA9IHBkb190eXBlKHBkbyk7Cj4+ICAgCj4+ICAgCWlmICh0 eXBlID09IFBET19UWVBFX0ZJWEVEKQo+PiBAQCAtMTgzMCwyNiArMTg1NiwyOCBAQCBzdGF0aWMg aW50IHRjcG1fcGRfYnVpbGRfcmVxdWVzdChzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0LCB1MzIgKnJk bykKPj4gICAJZWxzZQo+PiAgIAkJbXYgPSBwZG9fbWluX3ZvbHRhZ2UocGRvKTsKPj4gICAKPj4g LQkvKiBTZWxlY3QgbWF4aW11bSBhdmFpbGFibGUgY3VycmVudCB3aXRoaW4gdGhlIGJvYXJkJ3Mg cG93ZXIgbGltaXQgKi8KPj4gKwkvKiBTZWxlY3QgbWF4aW11bSBhdmFpbGFibGUgY3VycmVudCB3 aXRoaW4gdGhlIHNpbmsgcGRvJ3MgbGltaXQgKi8KPj4gICAJaWYgKHR5cGUgPT0gUERPX1RZUEVf QkFUVCkgewo+PiAtCQltdyA9IHBkb19tYXhfcG93ZXIocGRvKTsKPj4gLQkJbWEgPSAxMDAwICog bWluKG13LCBwb3J0LT5tYXhfc25rX213KSAvIG12Owo+PiArCQltdyA9IG1pbl9wb3dlcihwZG8s IG1hdGNoaW5nX3Nua19wZG8pOwo+PiArCQltYSA9IDEwMDAgKiBtdyAvIG12Owo+PiAgIAl9IGVs c2Ugewo+PiAtCQltYSA9IG1pbihwZG9fbWF4X2N1cnJlbnQocGRvKSwKPj4gLQkJCSAxMDAwICog cG9ydC0+bWF4X3Nua19tdyAvIG12KTsKPj4gKwkJbWEgPSBtaW5fY3VycmVudChwZG8sIG1hdGNo aW5nX3Nua19wZG8pOwo+PiArCQltdyA9IG1hICogbXYgLyAxMDAwOwo+PiAgIAl9Cj4+IC0JbWEg PSBtaW4obWEsIHBvcnQtPm1heF9zbmtfbWEpOwo+PiAgIAo+PiAgIAlmbGFncyA9IFJET19VU0Jf Q09NTSB8IFJET19OT19TVVNQRU5EOwo+PiAgIAo+PiAgIAkvKiBTZXQgbWlzbWF0Y2ggYml0IGlm IG9mZmVyZWQgcG93ZXIgaXMgbGVzcyB0aGFuIG9wZXJhdGluZyBwb3dlciAqLwo+PiAtCW13ID0g bWEgKiBtdiAvIDEwMDA7Cj4+ICAgCW1heF9tYSA9IG1hOwo+PiAgIAltYXhfbXcgPSBtdzsKPj4g ICAJaWYgKG13IDwgcG9ydC0+b3BlcmF0aW5nX3Nua19tdykgewo+PiAgIAkJZmxhZ3MgfD0gUkRP X0NBUF9NSVNNQVRDSDsKPj4gLQkJbWF4X213ID0gcG9ydC0+b3BlcmF0aW5nX3Nua19tdzsKPj4g LQkJbWF4X21hID0gbWF4X213ICogMTAwMCAvIG12Owo+PiArCQlpZiAodHlwZSA9PSBQRE9fVFlQ RV9CQVRUICYmCj4+ICsJCSAgICAocGRvX21heF9wb3dlcihtYXRjaGluZ19zbmtfcGRvKSA+IHBk b19tYXhfcG93ZXIocGRvKSkpCj4+ICsJCQltYXhfbXcgPSBwZG9fbWF4X3Bvd2VyKG1hdGNoaW5n X3Nua19wZG8pOwo+PiArCQllbHNlIGlmIChwZG9fbWF4X2N1cnJlbnQobWF0Y2hpbmdfc25rX3Bk bykgPgo+PiArCQkJIHBkb19tYXhfY3VycmVudChwZG8pKQo+PiArCQkJbWF4X21hID0gcGRvX21h eF9jdXJyZW50KG1hdGNoaW5nX3Nua19wZG8pOwo+PiAgIAl9Cj4+ICAgCj4+ICAgCXRjcG1fbG9n KHBvcnQsICJjYz0lZCBjYzE9JWQgY2MyPSVkIHZidXM9JWQgdmNvbm49JXMgcG9sYXJpdHk9JWQi LAo+PiBAQCAtMTg1OCwxNiArMTg4NiwxNiBAQCBzdGF0aWMgaW50IHRjcG1fcGRfYnVpbGRfcmVx dWVzdChzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0LCB1MzIgKnJkbykKPj4gICAJCSBwb3J0LT5wb2xh cml0eSk7Cj4+ICAgCj4+ICAgCWlmICh0eXBlID09IFBET19UWVBFX0JBVFQpIHsKPj4gLQkJKnJk byA9IFJET19CQVRUKGluZGV4ICsgMSwgbXcsIG1heF9tdywgZmxhZ3MpOwo+PiArCQkqcmRvID0g UkRPX0JBVFQoc3JjX3Bkb19pbmRleCArIDEsIG13LCBtYXhfbXcsIGZsYWdzKTsKPj4gICAKPj4g ICAJCXRjcG1fbG9nKHBvcnQsICJSZXF1ZXN0aW5nIFBETyAlZDogJXUgbVYsICV1IG1XJXMiLAo+ PiAtCQkJIGluZGV4LCBtdiwgbXcsCj4+ICsJCQkgc3JjX3Bkb19pbmRleCwgbXYsIG13LAo+PiAg IAkJCSBmbGFncyAmIFJET19DQVBfTUlTTUFUQ0ggPyAiIFttaXNtYXRjaF0iIDogIiIpOwo+PiAg IAl9IGVsc2Ugewo+PiAtCQkqcmRvID0gUkRPX0ZJWEVEKGluZGV4ICsgMSwgbWEsIG1heF9tYSwg ZmxhZ3MpOwo+PiArCQkqcmRvID0gUkRPX0ZJWEVEKHNyY19wZG9faW5kZXggKyAxLCBtYSwgbWF4 X21hLCBmbGFncyk7Cj4+ICAgCj4+ICAgCQl0Y3BtX2xvZyhwb3J0LCAiUmVxdWVzdGluZyBQRE8g JWQ6ICV1IG1WLCAldSBtQSVzIiwKPj4gLQkJCSBpbmRleCwgbXYsIG1hLAo+PiArCQkJIHNyY19w ZG9faW5kZXgsIG12LCBtYSwKPj4gICAJCQkgZmxhZ3MgJiBSRE9fQ0FQX01JU01BVENIID8gIiBb bWlzbWF0Y2hdIiA6ICIiKTsKPj4gICAJfQo+PiAgIAo+PiAtLSAKPj4gMi43LjQKPj4KLS0tClRv IHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBsaW5lICJ1bnN1YnNjcmliZSBs aW51eC11c2IiIGluCnRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJu ZWwub3JnCk1vcmUgbWFqb3Jkb21vIGluZm8gYXQgIGh0dHA6Ly92Z2VyLmtlcm5lbC5vcmcvbWFq b3Jkb21vLWluZm8uaHRtbAo=