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: [v2,2/2] phy: qualcomm: usb: Add Super-Speed PHY driver From: Bjorn Andersson Message-Id: <20190129202726.GA3036@builder> Date: Tue, 29 Jan 2019 12:27:26 -0800 To: Jorge Ramirez-Ortiz Cc: gregkh@linuxfoundation.org, mark.rutland@arm.com, kishon@ti.com, jackp@codeaurora.org, andy.gross@linaro.org, swboyd@chromium.org, shawn.guo@linaro.org, vkoul@kernel.org, khasim.mohammed@linaro.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: T24gVHVlIDI5IEphbiAwMzozNSBQU1QgMjAxOSwgSm9yZ2UgUmFtaXJlei1PcnRpeiB3cm90ZToK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LXFjb20tdXNiLXNzLmMgYi9k cml2ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS11c2Itc3MuYwo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMC4uZTZhZTk2ZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL3BoeS9xdWFsY29tbS9waHktcWNvbS11c2Itc3MuYwo+IEBAIC0wLDAgKzEsMzQ3IEBACj4g Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAqIENvcHlyaWdo dCAoYykgMjAxMi0yMDE0LDIwMTcgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVz ZXJ2ZWQuCj4gKyAqIENvcHlyaWdodCAoYykgMjAxOCwgTGluYXJvIExpbWl0ZWQKPiArICovCj4g Kwo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ ICsjaW5jbHVkZSA8bGludXgvZXJyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ICsjaW5j bHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L29mLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRv ci9jb25zdW1lci5oPgo+ICsjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KPiArI2luY2x1ZGUgPGxp bnV4L3NsYWIuaD4KPiArCj4gKyNkZWZpbmUgUEhZX0NUUkwwCQkJMHg2Qwo+ICsjZGVmaW5lIFBI WV9DVFJMMQkJCTB4NzAKPiArI2RlZmluZSBQSFlfQ1RSTDIJCQkweDc0Cj4gKyNkZWZpbmUgUEhZ X0NUUkw0CQkJMHg3Qwo+ICsKPiArLyogUEhZX0NUUkwgYml0cyAqLwo+ICsjZGVmaW5lIFJFRl9Q SFlfRU4JCQlCSVQoMCkKPiArI2RlZmluZSBMQU5FMF9QV1JfT04JCQlCSVQoMikKPiArI2RlZmlu ZSBTV0lfUENTX0NMS19TRUwJCQlCSVQoNCkKPiArI2RlZmluZSBUU1RfUFdSX0RPV04JCQlCSVQo NCkKPiArI2RlZmluZSBQSFlfUkVTRVQJCQlCSVQoNykKPiArCj4gK2VudW0gcGh5X3ZkZF9jdHJs IHsgRU5BQkxFLCBESVNBQkxFLCB9OwoKVXNlIGJvb2wgdG8gZGVzY3JpYmUgYm9vbGVhbiB2YWx1 ZXMuCgo+ICtlbnVtIHBoeV9yZWd1bGF0b3IgeyBWREQsIFZEREExUDgsIH07CgpJdCBkb2Vzbid0 IGxvb2sgbGlrZSB5b3UgbmVlZCBlaXRoZXIgb2YgdGhlc2UgaWYgeW91IHJlbW92ZSB0aGUKc2V0 X3ZvbHRhZ2UgY2FsbHMuCgo+ICsKPiArc3RydWN0IHNzcGh5X3ByaXYgewo+ICsJdm9pZCBfX2lv bWVtICpiYXNlOwo+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ICsJc3RydWN0IHJlc2V0X2NvbnRy b2wgKnJlc2V0X2NvbTsKPiArCXN0cnVjdCByZXNldF9jb250cm9sICpyZXNldF9waHk7Cj4gKwlz dHJ1Y3QgcmVndWxhdG9yICp2YnVzOwo+ICsJc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEgKnJl Z3M7Cj4gKwlpbnQgbnVtX3JlZ3M7Cj4gKwlzdHJ1Y3QgY2xrX2J1bGtfZGF0YSAqY2xrczsKPiAr CWludCBudW1fY2xrczsKPiArCWVudW0gcGh5X21vZGUgbW9kZTsKPiArfTsKPiArCj4gK3N0YXRp YyBpbmxpbmUgdm9pZCBxY29tX3NzcGh5X3VwZGF0ZWwodm9pZCBfX2lvbWVtICphZGRyLCB1MzIg bWFzaywgdTMyIHZhbCkKPiArewo+ICsJd3JpdGVsKChyZWFkbChhZGRyKSAmIH5tYXNrKSB8IHZh bCwgYWRkcik7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IHFjb21fc3NwaHlfdmJ1c19l bmFibGUoc3RydWN0IHJlZ3VsYXRvciAqdmJ1cykKPiArewo+ICsJcmV0dXJuICFyZWd1bGF0b3Jf aXNfZW5hYmxlZCh2YnVzKSA/IHJlZ3VsYXRvcl9lbmFibGUodmJ1cykgOiAwOwoKcmVndWxhdG9y X2lzX2VuYWJsZWQoKSB3aWxsIGNoZWNrIGlmIHRoZSBhY3R1YWwgcmVndWxhdG9yIGlzIG9uLCBu b3QgaWYKeW91IGFscmVhZHkgdm90ZWQgZm9yIGl0LgoKU28gaWYgc29tZXRoaW5nIGVsc2UgaXMg ZW5hYmxpbmcgdGhlIHZidXMgcmVndWxhdG9yIHlvdSB3aWxsIHNraXAgeW91cgplbmFibGUgYW5k IGJlIGluIHRoZSBtZXJjeSBvZiB0aGVtIG5vdCByZWxlYXNpbmcgaXQuIFByZXN1bWFibHkgdGhl cmUncwpvbmx5IG9uZSBjb25zdW1lciBvZiB0aGlzIHBhcnRpY3VsYXIgcmVndWxhdG9yLCBidXQg aXQncyBhIGJhZCBoYWJpdC4KClBsZWFzZSBrZWVwIHRyYWNrIG9mIHRoaXMgZHJpdmVycyByZXF1 ZXN0ZWQgc3RhdGUgaW4gdGhpcyBkcml2ZXIsIGlmCnFjb21fc3NwaHlfdmJ1c19jdHJsKCkgaXMg Y2FsbGVkIG5vdCBvbmx5IGZvciB0aGUgc3RhdGUgY2hhbmdlcy4KCj4gK30KPiArCj4gK3N0YXRp YyBpbmxpbmUgaW50IHFjb21fc3NwaHlfdmJ1c19kaXNhYmxlKHN0cnVjdCByZWd1bGF0b3IgKnZi dXMpCj4gK3sKPiArCXJldHVybiByZWd1bGF0b3JfaXNfZW5hYmxlZCh2YnVzKSA/IHJlZ3VsYXRv cl9kaXNhYmxlKHZidXMpIDogMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBxY29tX3NzcGh5X3Zk ZF9jdHJsKHN0cnVjdCBzc3BoeV9wcml2ICpwcml2LCBlbnVtIHBoeV92ZGRfY3RybCBjdHJsKQoK QXMgZGlzY3Vzc2VkIG9uIElSQywgSSB0aGluayB5b3Ugc2hvdWxkIGp1c3QgbGVhdmUgdGhlIHZv bHRhZ2UKY29uc3RyYWludHMgdG8gRGV2aWNlVHJlZS4KCj4gK3sKPiArCWNvbnN0IGludCB2ZGRf bWluID0gY3RybCA9PSBFTkFCTEUgPyAxMDUwMDAwIDogMDsKPiArCWNvbnN0IGludCB2ZGRfbWF4 ID0gMTA1MDAwMDsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gcmVndWxhdG9yX3NldF92b2x0 YWdlKHByaXYtPnJlZ3NbVkREXS5jb25zdW1lciwgdmRkX21pbiwgdmRkX21heCk7Cj4gKwlpZiAo cmV0KQo+ICsJCWRldl9lcnIocHJpdi0+ZGV2LCAiRmFpbGVkIHRvIHNldCByZWd1bGF0b3IgdmRk IHRvICVkXG4iLAo+ICsJCQl2ZGRfbWluKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9ClsuLl0K PiArc3RhdGljIGludCBxY29tX3NzcGh5X3Bvd2VyX29uKHN0cnVjdCBwaHkgKnBoeSkKPiArewo+ ICsJc3RydWN0IHNzcGh5X3ByaXYgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPiArCWlu dCByZXQ7Cj4gKwo+ICsJcmV0ID0gcWNvbV9zc3BoeV92ZGRfY3RybChwcml2LCBFTkFCTEUpOwo+ ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IHJlZ3VsYXRvcl9idWxr X2VuYWJsZShwcml2LT5udW1fcmVncywgcHJpdi0+cmVncyk7Cj4gKwlpZiAocmV0KQo+ICsJCWdv dG8gZXJyMTsKPiArCj4gKwlyZXQgPSBjbGtfYnVsa19wcmVwYXJlX2VuYWJsZShwcml2LT5udW1f Y2xrcywgcHJpdi0+Y2xrcyk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyMjsKPiArCj4gKwly ZXQgPSBxY29tX3NzcGh5X3ZidXNfY3RybChwcml2LT52YnVzLCBwcml2LT5tb2RlKTsKPiArCWlm IChyZXQpCj4gKwkJZ290byBlcnIzOwo+ICsKPiArCXJldCA9IHFjb21fc3NwaHlfZG9fcmVzZXQo cHJpdik7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyNDsKPiArCj4gKwl3cml0ZWIoU1dJX1BD U19DTEtfU0VMLCBwcml2LT5iYXNlICsgUEhZX0NUUkwwKTsKPiArCXFjb21fc3NwaHlfdXBkYXRl bChwcml2LT5iYXNlICsgUEhZX0NUUkw0LCBMQU5FMF9QV1JfT04sIExBTkUwX1BXUl9PTik7Cj4g KwlxY29tX3NzcGh5X3VwZGF0ZWwocHJpdi0+YmFzZSArIFBIWV9DVFJMMiwgUkVGX1BIWV9FTiwg UkVGX1BIWV9FTik7Cj4gKwlxY29tX3NzcGh5X3VwZGF0ZWwocHJpdi0+YmFzZSArIFBIWV9DVFJM NCwgVFNUX1BXUl9ET1dOLCAwKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArZXJyNDoKCk5hbWUgeW91 ciBsYWJlbHMgYmFzZWQgb24gd2hhdCB0aGV5IGRvLCBlLmcuIGVycl9kaXNhYmxlX3ZidXMuCgo+ ICsJaWYgKHByaXYtPnZidXMgJiYgcHJpdi0+bW9kZSAhPSBQSFlfTU9ERV9JTlZBTElEKQo+ICsJ CXFjb21fc3NwaHlfdmJ1c19kaXNhYmxlKHByaXYtPnZidXMpOwoKcWNvbV9zc3BoeV92YnVzX2N0 cmwoKSBhYm92ZSB3YXMgZWl0aGVyIGVuYWJsaW5nIG9yIGRpc2FibGluZyB2YnVzLCBidXQKaGVy ZSB5b3UncmUgZGlyZWN0bHkgY2FsbGluZyBkaXNhYmxlIHRvIHVucm9sbCB0aGF0LiBJdCB0aGlu ayB0aGUgcmVzdWx0CmlzIGNvcnJlY3QgKGluIGhvc3QgdGhpcyByZXZlcnRzIHRvIGRpc2FibGVk IGFuZCBpbiBnYWRnZXQgaXQncyBhCm5vLW9wKSwgYnV0IEknbSBub3Qgc3VyZSBJIGxpa2UgdGhl IGRlc2lnbiBvZiBzb21ldGltZXMgY2FsbGluZyBzdHJhaWdodAp0byB0aGUgdmJ1cyBlbmFibGUv ZGlzYWJsZSBhbmQgc29tZXRpbWVzIHRvIHRoZSB3cmFwcGVyIGZ1bmN0aW9uLgoKPiArZXJyMzoK CmVycl9jbGtfZGlzYWJsZQoKPiArCWNsa19idWxrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPm51 bV9jbGtzLCBwcml2LT5jbGtzKTsKPiArZXJyMjoKPiArCXJlZ3VsYXRvcl9idWxrX2Rpc2FibGUo cHJpdi0+bnVtX3JlZ3MsIHByaXYtPnJlZ3MpOwo+ICtlcnIxOgo+ICsJcWNvbV9zc3BoeV92ZGRf Y3RybChwcml2LCBESVNBQkxFKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IHFjb21fc3NwaHlfcG93ZXJfb2ZmKHN0cnVjdCBwaHkgKnBoeSkKPiArewo+ICsJc3Ry dWN0IHNzcGh5X3ByaXYgKnByaXYgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPiArCj4gKwlxY29t X3NzcGh5X3VwZGF0ZWwocHJpdi0+YmFzZSArIFBIWV9DVFJMNCwgTEFORTBfUFdSX09OLCAwKTsK PiArCXFjb21fc3NwaHlfdXBkYXRlbChwcml2LT5iYXNlICsgUEhZX0NUUkwyLCBSRUZfUEhZX0VO LCAwKTsKPiArCXFjb21fc3NwaHlfdXBkYXRlbChwcml2LT5iYXNlICsgUEhZX0NUUkw0LCBUU1Rf UFdSX0RPV04sIFRTVF9QV1JfRE9XTik7Cj4gKwo+ICsJY2xrX2J1bGtfZGlzYWJsZV91bnByZXBh cmUocHJpdi0+bnVtX2Nsa3MsIHByaXYtPmNsa3MpOwo+ICsJcmVndWxhdG9yX2J1bGtfZGlzYWJs ZShwcml2LT5udW1fcmVncywgcHJpdi0+cmVncyk7Cj4gKwo+ICsJaWYgKHByaXYtPnZidXMgJiYg cHJpdi0+bW9kZSAhPSBQSFlfTU9ERV9JTlZBTElEKQo+ICsJCXFjb21fc3NwaHlfdmJ1c19kaXNh YmxlKHByaXYtPnZidXMpOwo+ICsKPiArCXFjb21fc3NwaHlfdmRkX2N0cmwocHJpdiwgRElTQUJM RSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgcWNvbV9zc3BoeV9p bml0X2Nsb2NrKHN0cnVjdCBzc3BoeV9wcml2ICpwcml2KQo+ICt7Cj4gKwljb25zdCBjaGFyICog Y29uc3QgY2xrX2lkW10gPSB7ICJyZWYiLCAicGh5IiwgInBpcGUiLCB9Owo+ICsJaW50IGk7Cj4g Kwo+ICsJcHJpdi0+bnVtX2Nsa3MgPSBBUlJBWV9TSVpFKGNsa19pZCk7Cj4gKwlwcml2LT5jbGtz ID0gZGV2bV9rY2FsbG9jKHByaXYtPmRldiwgcHJpdi0+bnVtX2Nsa3MsCj4gKwkJCQkgIHNpemVv ZigqcHJpdi0+Y2xrcyksIEdGUF9LRVJORUwpOwoKWW91IGtub3cgbnVtX2Nsa3MgaXMgMywgc28g SSB3b3VsZCBzdWdnZXN0IHRoYXQgeW91IGp1c3QgY2hhbmdlIHRoZQpzc2hwaHlfcHJpdiB0byBj bGtzWzNdIGFuZCBza2lwIHRoZSBkeW5hbWljIGFsbG9jYXRpb24uCgoKQWxzbywgYXMgbnVtX2Ns a3MgYWx3YXlzIGlzIEFSUkFZX1NJWkUocHJpdi0+Y2xrcykgSSB3b3VsZCBzdWdnZXN0IHVzaW5n CnRoZSBsYXR0ZXIsIHRvIG1ha2UgdGhhdCBjbGVhciB0aHJvdWdob3V0IHRoZSBkcml2ZXIuCgo+ ICsJaWYgKCFwcml2LT5jbGtzKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWZvciAoaSA9 IDA7IGkgPCBwcml2LT5udW1fY2xrczsgaSsrKQo+ICsJCXByaXYtPmNsa3NbaV0uaWQgPSBjbGtf aWRbaV07CgpUaGVyZSdzIG5vIGhhcm0gaW4ganVzdCB3cml0aW5nIHRoaXMgb24gdGhyZWUgbGlu ZXM6CgoJcHJpdi0+Y2xrc1swXS5pZCA9ICJyZWYiOwoJcHJpdi0+Y2xrc1sxXS5pZCA9ICJwaHki OwoJcHJpdi0+Y2xrc1syXS5pZCA9ICJwaXBlIjsKCj4gKwo+ICsJcmV0dXJuIGRldm1fY2xrX2J1 bGtfZ2V0KHByaXYtPmRldiwgcHJpdi0+bnVtX2Nsa3MsIHByaXYtPmNsa3MpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IHFjb21fc3NwaHlfaW5pdF9yZWd1bGF0b3Ioc3RydWN0IHNzcGh5X3ByaXYg KnByaXYpCj4gK3sKPiArCWNvbnN0IGNoYXIgKiBjb25zdCByZWdfc3VwcGxpZXNbXSA9IHsKPiAr CQlbVkREXSA9ICJ2ZGQiLAo+ICsJCVtWRERBMVA4XSA9ICJ2ZGRhMXA4IiwKPiArCX07Cj4gKwlp bnQgcmV0LCBpOwo+ICsKPiArCXByaXYtPm51bV9yZWdzID0gQVJSQVlfU0laRShyZWdfc3VwcGxp ZXMpOwo+ICsJcHJpdi0+cmVncyA9IGRldm1fa2NhbGxvYyhwcml2LT5kZXYsIHByaXYtPm51bV9y ZWdzLAo+ICsJCQkJICBzaXplb2YoKnByaXYtPnJlZ3MpLCBHRlBfS0VSTkVMKTsKCkFzIHdpdGgg Y2xvY2tzLCB5b3Uga25vdyB0aGVyZSB3aWxsIG9ubHkgYmUgMiBvZiB0aGVzZSwgbWFrZSBpdCBm aXhlZApzaXplIGluIHNzcGh5X3ByaXYuCgpBbmQgYXMgd2l0aCBjbG9ja3MsIEkgd291bGQgc3Vn Z2VzdCB1c2luZyBBUlJBWV9TSVpFKHByaXYtPnJlZ3MpCnRocm91Z2hvdXQgdGhlIGRyaXZlciB0 byBtYWtlIGl0IG9idmlvdXMgdGhhdCdzIGl0J3MgYSBzdGF0aWMgbnVtYmVyLiAKCj4gKwlpZiAo IXByaXYtPnJlZ3MpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8 IHByaXYtPm51bV9yZWdzOyBpKyspCj4gKwkJcHJpdi0+cmVnc1tpXS5zdXBwbHkgPSByZWdfc3Vw cGxpZXNbaV07CgpBcyB3aXRoIGNsb2NrcywganVzdCB1bnJvbGwgdGhpcyBhbmQgZmlsbCBpbiB0 aGUgMiBzdXBwbGllcyBkaXJlY3RseS4KCj4gKwo+ICsJcmV0ID0gZGV2bV9yZWd1bGF0b3JfYnVs a19nZXQocHJpdi0+ZGV2LCBwcml2LT5udW1fcmVncywgcHJpdi0+cmVncyk7Cj4gKwlpZiAocmV0 KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcHJpdi0+dmJ1cyA9IGRldm1fcmVndWxhdG9yX2dl dF9vcHRpb25hbChwcml2LT5kZXYsICJ2YnVzIik7CgpnZXRfb3B0aW9uYWwgbWVhbnMgdGhhdCBp ZiB2YnVzLXN1cHBseSBpcyBub3QgZm91bmQsIHJhdGhlciB0aGFuCnJldHVybmluZyBhIGR1bW15 IHJlZ3VsYXRvciBvYmplY3QgdGhpcyB3aWxsIGZhaWwgd2l0aCAtRU5PREVWLgoKR2l2ZW4gdGhl IHJlc3Qgb2YgdGhlIGxvZ2ljIHJlbGF0ZWQgdG8gdmJ1cyB5b3Ugc2hvdWxkIHNldCB2YnVzIHRv IE5VTEwKaWYgdGhlIHJldHVybmVkIFBUUl9FUlIodmFsdWUpIGlzIC1FTk9ERVYsIGFuZCBmYWls IGZvciBvdGhlciBlcnJvcnMuCgoKT3IganVzdCBkcm9wIHRoZSBfb3B0aW9uYWwsIGFuZCBsZXQg eW91ciB2YnVzIGNvbnRyb2xzIG9wZXJhdGUgb24gdGhlCmR1bW15IHJlZ3VsYXRvciB5b3UgZ2V0 IGJhY2suCgooUmlnaHQgbm93IHZidXMgY2FuJ3QgYmUgTlVMTCwgc28gdGhlc2UgY2hlY2tzIGFy ZSBub3QgdmVyeSB1c2VmdWwpCgo+ICsJaWYgKElTX0VSUihwcml2LT52YnVzKSkKPiArCQlyZXR1 cm4gUFRSX0VSUihwcml2LT52YnVzKTsKPiArCj4gKwlyZXR1cm4gMDsKCnJldHVybiBQVFJfRVJS X09SX1pFUk8ocHJpdi0+dmJ1cykKCihBbHRob3VnaCB0aGF0IG1pZ2h0IGNoYW5nZSBiYXNlZCBv biBhYm92ZSBjb21tZW50KQoKPiArfQoKUmVnYXJkcywKQmpvcm4K