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: [RFC] usb: typec: tcpm: match source fixed pdo with sink variable pdo From: Hans de Goede Message-Id: <708d9714-5152-86ea-3d6e-6f8e4706d0b8@redhat.com> Date: Tue, 13 Mar 2018 12:36:10 +0100 To: Li Jun , gregkh@linuxfoundation.org, linux@roeck-us.net, heikki.krogerus@linux.intel.com, Adam.Thomson.Opensource@diasemi.com, Badhri@google.com Cc: linux-usb@vger.kernel.org, linux-imx@nxp.com List-ID: SGksCgpPbiAxMy0wMy0xOCAwMTowMiwgTGkgSnVuIHdyb3RlOgo+IFRoaXMgcGF0Y2ggdHJpZXMg dG8gZml4IHRoZSBwcm9ibGVtIGRlc2NyaWJsZWQgb24gcmV2ZXJ0IHBhdGNoIGNvbW1pdFsxXSwK PiBzdXBwb3NlIGFueSBzdXBwb3J0ZWQgdm9sdGFnZSByYW5nZXMgb2Ygc2luayBzaG91bGQgYmUg ZGVzY3JpYmxlZCBieQo+IHZhcmlhYmxlIHBkbywgc28gaW5zdGVhZCBvZiByZXZlcnQgdGhlIHBh dGNoIG9mIG9ubHkgY29tcGFyaW5nIHNvdXJjZSBhbmQKPiBzaW5rIHBkbyB0byBzZWxlY3Qgb25l IHNvdXJjZSBwZG8sIHRoaXMgcGF0Y2ggYWRkcyB0aGUgbWF0Y2ggYmV0d2VlbiBzb3VyY2UKPiBm aXhlZCBwZG8gYW5kIHNpbmsgdmFyaWFibGUgcGRvLgo+IAo+IFsxXSBodHRwczovL3d3dy5zcGlu aWNzLm5ldC9saXN0cy9saW51eC11c2IvbXNnMTY2MzY2Lmh0bWwKPiAKPiBDQzogSGFucyBkZSBH b2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KPiBDQzogR3VlbnRlciBSb2VjayA8bGludXhAcm9l Y2stdXMubmV0Pgo+IENDOiBIZWlra2kgS3JvZ2VydXMgPGhlaWtraS5rcm9nZXJ1c0BsaW51eC5p bnRlbC5jb20+Cj4gQ0M6IEFkYW0gVGhvbXNvbiA8QWRhbS5UaG9tc29uLk9wZW5zb3VyY2VAZGlh c2VtaS5jb20+Cj4gQ0M6IEJhZGhyaSBKYWdhbiBTcmlkaGFyYW4gPEJhZGhyaUBnb29nbGUuY29t Pgo+IFNpZ25lZC1vZmYtYnk6IExpIEp1biA8anVuLmxpQG54cC5jb20+Cj4gLS0tCj4gICBkcml2 ZXJzL3VzYi90eXBlYy90Y3BtLmMgfCAzMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gICAxIGZpbGUgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi90eXBlYy90Y3BtLmMgYi9kcml2ZXJzL3VzYi90eXBlYy90Y3BtLmMKPiBpbmRl eCBlZjNhNjBkLi44YTc0YTQzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0u Ywo+ICsrKyBiL2RyaXZlcnMvdXNiL3R5cGVjL3RjcG0uYwo+IEBAIC0xODE1LDYgKzE4MTUsMzcg QEAgc3RhdGljIGludCB0Y3BtX3BkX3NlbGVjdF9wZG8oc3RydWN0IHRjcG1fcG9ydCAqcG9ydCwg aW50ICpzaW5rX3BkbywKPiAgIAkJCQkJYnJlYWs7Cj4gICAJCQkJfQo+ICAgCQkJfQo+ICsKPiAr CQkJLyoKPiArCQkJICogSWYgdGhlIHNvdXJjZSBwZG8gaGFzIHRoZSBzYW1lIHZvbHRhZ2Ugd2l0 aCBvbmUKPiArCQkJICogZml4ZWQgcGRvLCBubyBuZWVkIGNoZWNrIHZhcmlhYmxlIHBkbyBmb3Ig aXQuCj4gKwkJCSAqLwo+ICsJCQlpZiAoaiA8IHBvcnQtPm5yX2ZpeGVkKQo+ICsJCQkJY29udGlu dWU7Cj4gKwo+ICsJCQlmb3IgKGogPSBwb3J0LT5ucl9maXhlZCArCj4gKwkJCQkgcG9ydC0+bnJf YmF0dDsKPiArCQkJICAgICBqIDwgcG9ydC0+bnJfZml4ZWQgKwo+ICsJCQkJIHBvcnQtPm5yX2Jh dHQgKwo+ICsJCQkJIHBvcnQtPm5yX3ZhcjsKPiArCQkJICAgICBqKyspIHsKPiArCQkJCWlmIChw ZG9fZml4ZWRfdm9sdGFnZShwZG8pID49Cj4gKwkJCQkgICAgIHBkb19taW5fdm9sdGFnZShwb3J0 LT5zbmtfcGRvW2pdKSAmJgo+ICsJCQkJICAgICBwZG9fZml4ZWRfdm9sdGFnZShwZG8pIDw9Cj4g KwkJCQkgICAgIHBkb19tYXhfdm9sdGFnZShwb3J0LT5zbmtfcGRvW2pdKSkgewo+ICsJCQkJCW1h ID0gbWluX2N1cnJlbnQocGRvLCBwb3J0LT5zbmtfcGRvW2pdKTsKPiArCQkJCQltdiA9IHBkb19m aXhlZF92b2x0YWdlKHBkbyk7Cj4gKwkJCQkJbXcgPSBtYSAqIG12IC8gMTAwMDsKPiArCQkJCQlp ZiAobXcgPiBtYXhfbXcgfHwKPiArCQkJCQkgICAgKG13ID09IG1heF9tdyAmJiBtdiA+IG1heF9t dikpIHsKPiArCQkJCQkJcmV0ID0gMDsKPiArCQkJCQkJKnNyY19wZG8gPSBpOwo+ICsJCQkJCQkq c2lua19wZG8gPSBqOwo+ICsJCQkJCQltYXhfbXcgPSBtdzsKPiArCQkJCQkJbWF4X212ID0gbXY7 Cj4gKwkJCQkJfQo+ICsJCQkJfQo+ICsJCQl9Cj4gICAJCX0gZWxzZSBpZiAodHlwZSA9PSBQRE9f VFlQRV9CQVRUKSB7Cj4gICAJCQlmb3IgKGogPSBwb3J0LT5ucl9maXhlZDsKPiAgIAkJCSAgICAg aiA8IHBvcnQtPm5yX2ZpeGVkICsKPiAKCkZpcnN0IG9mIGFsbCwgdGhpcyBzZWVtcyB0byBiZSBh IGZpeCBvbiB0b3Agb2YgeW91ciBwcmV2aW91cywKcmV2ZXJ0ZWQgcGF0Y2guCgpTaW5jZSB5b3Vy IHBhdGNoIGhhcyBiZWVuIHJldmVydGVkLCBwbGVhc2Ugc2VuZCBhIG5ldyBmaXhlZCBwYXRjaApy ZXBsYWNpbmcgaXQuCgpBcyBmb3IgdGhlIHByb3Bvc2VkIGZpeCwgeW91IGFyZSBqdXN0IGZpeGlu ZyB0aGUgZml4ZWQgc291cmNlLAp2YXJpYWJsZSBzbmsgY2FwIGNhc2UgaGVyZS4gV2hhdCBpZiB0 aGluZ3MgYXJlIHRoZSBvdGhlciB3YXkKYXJvdW5kLCBzbyBmaXhlZCBzbmssIHZhcmlhYmxlIHNv dXJjZT8KCllvdSByZWFsbHkgbmVlZCB0byBzdG9wIGNvbXBhcmluZyBmaXhlZCB0byBmaXhlZCBh bmQgdmFyaWFibGUKdG8gdmFyaWFibGUsIGV0Yy4KCkluc3RlYWQgZG8gc29tZXRoaW5nIGxpa2Ug dGhpcwoKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBvcnQtPm5yX3NvdXJjZV9jYXBzOyBpKysp IHsKICAgICAgICAgICAgICAgICB1MzIgcGRvID0gcG9ydC0+c291cmNlX2NhcHNbaV07CiAgICAg ICAgICAgICAgICAgZW51bSBwZF9wZG9fdHlwZSB0eXBlID0gcGRvX3R5cGUocGRvKTsKICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbXYsIG1hLCBtdzsKCiAgICAgICAgICAgICAgICAgaWYg KHR5cGUgPT0gUERPX1RZUEVfRklYRUQpCiAgICAgICAgICAgICAgICAgICAgICAgICBtdiA9IHBk b19maXhlZF92b2x0YWdlKHBkbyk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg ICAgICAgICAgICAgbXYgPSBwZG9fbWluX3ZvbHRhZ2UocGRvKTsKCiAgICAgICAgICAgICAgICAg aWYgKHR5cGUgPT0gUERPX1RZUEVfQkFUVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbXcg PSBwZG9fbWF4X3Bvd2VyKHBkbyk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKCQkJLyogRklY TUUgc2hvdWxkIG5vdCB1c2UgbWF4X3Nua19tYSBoZXJlICovCiAgICAgICAgICAgICAgICAgICAg ICAgICBtYSA9IG1pbihwZG9fbWF4X2N1cnJlbnQocGRvKSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBvcnQtPm1heF9zbmtfbWEpOwogICAgICAgICAgICAgICAgICAgICAgICAg bXcgPSBtYSAqIG12IC8gMTAwMDsKICAgICAgICAgICAgICAgICB9CgoJCWZvciAoaiA9IDA7IGog PCBwb3J0LT5ucl9zbmtfcGRvOyBqKyspIHsKCQkJaWYgKHBkb190eXBlKHBvcnQtPnNua19wZG9b al0pID09IFBET19UWVBFX0ZJWEVEKQoJCQkJbWF4X3Nua19tdiA9IHBkb19maXhlZF92b2x0YWdl KHBvcnQtPnNua19wZG9bal0pOwoJCQkJLyogRklYTUUgYWxzbyBnZXQgbWEgLyBtdyBzZXR0aW5n cyAqLwoJCQl9IGVsc2UgewoJCQkJbWF4X3Nua19tdiA9IHBkb19tYXhfdm9sdGFnZShwb3J0LT5z bmtfcGRvW2pdKTsKCQkJCS8qIEZJWE1FIGFsc28gZ2V0IG1hIC8gbXcgc2V0dGluZ3MgKi8KCQkJ fQoKCQkJLyogUHJlZmVyIGhpZ2hlciB2b2x0YWdlcyBpZiBhdmFpbGFibGUgKi8KCSAgICAgICAg ICAgICAgICBpZiAoKG13ID4gbWF4X213IHx8IChtdyA9PSBtYXhfbXcgJiYgbXYgPiBtYXhfbXYp KSAmJgoJICAgICAgICAgICAgICAgICAgICBtdiA8PSBtYXhfc25rX212KSB7CgkgICAgICAgICAg ICAgICAgICAgICAgICByZXQgPSBpOwogICAgICAgICAJICAgICAgICAgICAgICAgIG1heF9tdyA9 IG13OwogICAgICAgICAgICAgICAgIAkgICAgICAgIG1heF9tdiA9IG12OwoJICAgICAgICAgICAg ICAgIH0KCQl9Cgl9CgpOb3RlIHRoZSBhYm92ZSBleGFtcGxlIGNvZGUgb25seSBoYXMgYmVlbiBh ZGp1c3RlZCB0byBjb21wYXJlIHRoZSB2b2x0YWdlcwpmcm9tIHRoZSBzbmsgcGRvLXMgaXQgbmVl ZHMgdG8gYmUgZml4ZWQgdG8gYWxzbyBkZWFsIHdpdGggbWEvbXcKClJlZ2FyZHMsCgpIYW5zCi0t LQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3Jp YmUgbGludXgtdXNiIiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIu a2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJuZWwub3Jn L21ham9yZG9tby1pbmZvLmh0bWwK