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: [v7,1/3] USB host: Add USB ehci support for nuvoton npcm7xx platform From: Avi Fishman Message-Id: <20180620063306.134820-2-avifishman70@gmail.com> Date: Wed, 20 Jun 2018 09:33:04 +0300 To: gregkh@linuxfoundation.org, stern@rowland.harvard.edu Cc: avifishman70@gmail.com, tmaimon77@gmail.com, venture@google.com, yuenn@google.com, brendanhiggins@google.com, mathias.nyman@linux.intel.com, bjorn.andersson@linaro.org, jhogan@kernel.org, albeu@free.fr, chunfeng.yun@mediatek.com, tony@atomide.com, baolu.lu@linux.intel.com, elder@linaro.org, digetx@gmail.com, kstewart@linuxfoundation.org, hdegoede@redhat.com, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, openbmc@lists.ozlabs.org, robh+dt@kernel.org, mark.rutland@arm.com, devicetree@vger.kernel.org, Avi Fishman List-ID: RnJvbTogQXZpIEZpc2htYW4gPEF2aUZpc2htYW43MEBnbWFpbC5jb20+CgpUaGlzIHBhdGNoIGFk ZHMgc3VwcG9ydCBmb3IgZWhjaSBjb250cm9sbGVyIGZvciB0aGUgTnV2b3RvbgpucGNtN3h4IHBs YXRmb3JtLgpNb3N0IG9mIHRoZSBjb2RlIHdhcyB0YWtlbiBmcm9tIGVoY2ktc3BlYXIuYyArIHNw ZWNpZmljIGluaXRpYWxpemF0aW9uCmNvZGUKClNpZ25lZC1vZmYtYnk6IEF2aSBGaXNobWFuIDxB dmlGaXNobWFuNzBAZ21haWwuY29tPgpBY2tlZC1ieTogQWxhbiBTdGVybiA8c3Rlcm5Acm93bGFu ZC5oYXJ2YXJkLmVkdT4KLS0tCiBkcml2ZXJzL3VzYi9ob3N0L0tjb25maWcgICAgICAgIHwgICA4 ICsrCiBkcml2ZXJzL3VzYi9ob3N0L01ha2VmaWxlICAgICAgIHwgICAxICsKIGRyaXZlcnMvdXNi L2hvc3QvZWhjaS1ucGNtN3h4LmMgfCAyMTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvdXNiL2hvc3QvZWhjaS1ucGNtN3h4LmMKCmRpZmYgLS1naXQgYS9k cml2ZXJzL3VzYi9ob3N0L0tjb25maWcgYi9kcml2ZXJzL3VzYi9ob3N0L0tjb25maWcKaW5kZXgg OWYwYWViMDY4YWNiLi42ZDgxMzM4MDA0MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qv S2NvbmZpZworKysgYi9kcml2ZXJzL3VzYi9ob3N0L0tjb25maWcKQEAgLTE4NSw2ICsxODUsMTQg QEAgY29uZmlnIFVTQl9FSENJX01YQwogCS0tLWhlbHAtLS0KIAkgIFZhcmlhdGlvbiBvZiBBUkMg VVNCIGJsb2NrIHVzZWQgaW4gc29tZSBGcmVlc2NhbGUgY2hpcHMuCiAKK2NvbmZpZyBVU0JfRUhD SV9IQ0RfTlBDTTdYWAorCXRyaXN0YXRlICJTdXBwb3J0IGZvciBOdXZvdG9uIE5QQ003WFggb24t Y2hpcCBFSENJIFVTQiBjb250cm9sbGVyIgorCWRlcGVuZHMgb24gKFVTQl9FSENJX0hDRCAmJiBB UkNIX05QQ003WFgpIHx8IENPTVBJTEVfVEVTVAorCWRlZmF1bHQgeSBpZiAoVVNCX0VIQ0lfSENE ICYmIEFSQ0hfTlBDTTdYWCkKKwloZWxwCisJICBFbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBvbi1j aGlwIEVIQ0kgY29udHJvbGxlciBvbgorCSAgTnV2b3RvbiBOUENNN1hYIGNoaXBzLgorCiBjb25m aWcgVVNCX0VIQ0lfSENEX09NQVAKIAl0cmlzdGF0ZSAiRUhDSSBzdXBwb3J0IGZvciBPTUFQMyBh bmQgbGF0ZXIgY2hpcHMiCiAJZGVwZW5kcyBvbiBBUkNIX09NQVAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdXNiL2hvc3QvTWFrZWZpbGUgYi9kcml2ZXJzL3VzYi9ob3N0L01ha2VmaWxlCmluZGV4IDhh OGNmZmUwYjQ0NS4uZmNmNWRhYjVlZmE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L01h a2VmaWxlCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvTWFrZWZpbGUKQEAgLTQzLDYgKzQzLDcgQEAg b2JqLSQoQ09ORklHX1VTQl9FSENJX0hDRCkJKz0gZWhjaS1oY2Qubwogb2JqLSQoQ09ORklHX1VT Ql9FSENJX1BDSSkJKz0gZWhjaS1wY2kubwogb2JqLSQoQ09ORklHX1VTQl9FSENJX0hDRF9QTEFU Rk9STSkJKz0gZWhjaS1wbGF0Zm9ybS5vCiBvYmotJChDT05GSUdfVVNCX0VIQ0lfTVhDKQkrPSBl aGNpLW14Yy5vCitvYmotJChDT05GSUdfVVNCX0VIQ0lfSENEX05QQ003WFgpCSs9IGVoY2ktbnBj bTd4eC5vCiBvYmotJChDT05GSUdfVVNCX0VIQ0lfSENEX09NQVApCSs9IGVoY2ktb21hcC5vCiBv YmotJChDT05GSUdfVVNCX0VIQ0lfSENEX09SSU9OKQkrPSBlaGNpLW9yaW9uLm8KIG9iai0kKENP TkZJR19VU0JfRUhDSV9IQ0RfU1BFQVIpCSs9IGVoY2ktc3BlYXIubwpkaWZmIC0tZ2l0IGEvZHJp dmVycy91c2IvaG9zdC9laGNpLW5wY203eHguYyBiL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1ucGNt N3h4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jODBhODc5MmQz YjAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktbnBjbTd4eC5jCkBA IC0wLDAgKzEsMjEyIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoK KyAqIE51dm90b24gTlBDTTd4eCBkcml2ZXIgZm9yIEVIQ0kgSENECisgKgorICogQ29weXJpZ2h0 IChDKSAyMDE4IE51dm90b24gVGVjaG5vbG9naWVzLAorICogQXZpIEZpc2htYW4gPGF2aS5maXNo bWFuQG51dm90b24uY29tPiA8YXZpZmlzaG1hbjcwQGdtYWlsLmNvbT4KKyAqIFRvbWVyIE1haW1v biA8dG9tZXIubWFpbW9uQG51dm90b24uY29tPiA8dG1haW1vbjc3QGdtYWlsLmNvbT4KKyAqCisg KiBCYXNlZCBvbiB2YXJpb3VzIGVoY2ktc3BlYXIuYyBkcml2ZXIKKyAqLworCisKKyNpbmNsdWRl IDxsaW51eC9kbWEtbWFwcGluZy5oPgorCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvb2YuaD4KKyNpbmNsdWRlIDxs aW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9wbS5oPgorI2luY2x1ZGUg PGxpbnV4L3VzYi5oPgorI2luY2x1ZGUgPGxpbnV4L3VzYi9oY2QuaD4KKworI2luY2x1ZGUgImVo Y2kuaCIKKworI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgorI2luY2x1ZGUgPGxpbnV4L21mZC9z eXNjb24uaD4KKworI2RlZmluZSBEUklWRVJfREVTQyAiRUhDSSBucGNtN3h4IGRyaXZlciIKKwor c3RhdGljIGNvbnN0IGNoYXIgaGNkX25hbWVbXSA9ICJucGNtN3h4LWVoY2kiOworCisjZGVmaW5l ICBVU0IyUEhZQ1RMX09GRlNFVCAweDE0NAorCisjZGVmaW5lICBJUFNSU1QyX09GRlNFVCAweDI0 CisjZGVmaW5lICBJUFNSU1QzX09GRlNFVCAweDM0CisKKworc3RhdGljIHN0cnVjdCBoY19kcml2 ZXIgX19yZWFkX21vc3RseSBlaGNpX25wY203eHhfaGNfZHJpdmVyOworCisjaWZkZWYgQ09ORklH X1BNX1NMRUVQCitzdGF0aWMgaW50IGVoY2lfbnBjbTd4eF9kcnZfc3VzcGVuZChzdHJ1Y3QgZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IHVzYl9oY2QgKmhjZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYp OworCWJvb2wgZG9fd2FrZXVwID0gZGV2aWNlX21heV93YWtldXAoZGV2KTsKKworCXJldHVybiBl aGNpX3N1c3BlbmQoaGNkLCBkb193YWtldXApOworfQorCitzdGF0aWMgaW50IGVoY2lfbnBjbTd4 eF9kcnZfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdXNiX2hjZCAqaGNk ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwllaGNpX3Jlc3VtZShoY2QsIGZhbHNlKTsKKwly ZXR1cm4gMDsKK30KKyNlbmRpZiAvKiBDT05GSUdfUE1fU0xFRVAgKi8KKworc3RhdGljIFNJTVBM RV9ERVZfUE1fT1BTKGVoY2lfbnBjbTd4eF9wbV9vcHMsIGVoY2lfbnBjbTd4eF9kcnZfc3VzcGVu ZCwKKwkJZWhjaV9ucGNtN3h4X2Rydl9yZXN1bWUpOworCitzdGF0aWMgaW50IG5wY203eHhfZWhj aV9oY2RfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0 IHVzYl9oY2QgKmhjZDsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlzdHJ1Y3QgcmVnbWFwICpn Y3JfcmVnbWFwOworCXN0cnVjdCByZWdtYXAgKnJzdF9yZWdtYXA7CisJY29uc3Qgc3RydWN0IGhj X2RyaXZlciAqZHJpdmVyID0gJmVoY2lfbnBjbTd4eF9oY19kcml2ZXI7CisJaW50IGlycTsKKwlp bnQgcmV0dmFsOworCisJZGV2X2RiZygmcGRldi0+ZGV2LAkiaW5pdGlhbGl6aW5nIG5wY203eHgg ZWhjaSBVU0IgQ29udHJvbGxlclxuIik7CisKKwlnY3JfcmVnbWFwID0gc3lzY29uX3JlZ21hcF9s b29rdXBfYnlfY29tcGF0aWJsZSgibnV2b3RvbixucGNtNzUwLWdjciIpOworCWlmIChJU19FUlIo Z2NyX3JlZ21hcCkpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiJXM6IGZhaWxlZCB0byBmaW5k IG51dm90b24sbnBjbTc1MC1nY3JcbiIsCisJCQlfX2Z1bmNfXyk7CisJCXJldHVybiBJU19FUlIo Z2NyX3JlZ21hcCk7CisJfQorCisJcnN0X3JlZ21hcCA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5 X2NvbXBhdGlibGUoIm51dm90b24sbnBjbTc1MC1yc3QiKTsKKwlpZiAoSVNfRVJSKHJzdF9yZWdt YXApKSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgIiVzOiBmYWlsZWQgdG8gZmluZCBudXZvdG9u LG5wY203NTAtcnN0XG4iLAorCQkJX19mdW5jX18pOworCQlyZXR1cm4gSVNfRVJSKHJzdF9yZWdt YXApOworCX0KKworCS8qKioqKioqKiogcGh5IGluaXQgICoqKioqKi8KKwkvLyByZXNldCB1c2Ig aG9zdAorCXJlZ21hcF91cGRhdGVfYml0cyhyc3RfcmVnbWFwLCBJUFNSU1QyX09GRlNFVCwKKwkJ CSgweDEgPDwgMjYpLCAoMHgxIDw8IDI2KSk7CisJcmVnbWFwX3VwZGF0ZV9iaXRzKHJzdF9yZWdt YXAsIElQU1JTVDNfT0ZGU0VULAorCQkJKDB4MSA8PCAyNSksICgweDEgPDwgMjUpKTsKKwlyZWdt YXBfdXBkYXRlX2JpdHMoZ2NyX3JlZ21hcCwgVVNCMlBIWUNUTF9PRkZTRVQsCisJCQkoMHgxIDw8 IDI4KSwgMCk7CisKKwl1ZGVsYXkoMSk7CisKKwkvLyBlbmFibGUgcGh5CisJcmVnbWFwX3VwZGF0 ZV9iaXRzKHJzdF9yZWdtYXAsIElQU1JTVDNfT0ZGU0VULAorCQkJKDB4MSA8PCAyNSksIDApOwor CisJdWRlbGF5KDUwKTsgLy8gZW5hYmxlIHBoeQorCisJcmVnbWFwX3VwZGF0ZV9iaXRzKGdjcl9y ZWdtYXAsIFVTQjJQSFlDVExfT0ZGU0VULAorCQkJKDB4MSA8PCAyOCksICgweDEgPDwgMjgpKTsK KworCS8vIGVuYWJsZSBob3N0CisJcmVnbWFwX3VwZGF0ZV9iaXRzKHJzdF9yZWdtYXAsIElQU1JT VDJfT0ZGU0VULAorCQkJKDB4MSA8PCAyNiksIDApOworCisJaWYgKHVzYl9kaXNhYmxlZCgpKQor CQlyZXR1cm4gLUVOT0RFVjsKKworCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CisJ aWYgKGlycSA8IDApIHsKKwkJcmV0dmFsID0gaXJxOworCQlnb3RvIGZhaWw7CisJfQorCisJLyoK KwkgKiBSaWdodCBub3cgZGV2aWNlLXRyZWUgcHJvYmVkIGRldmljZXMgZG9uJ3QgZ2V0IGRtYV9t YXNrIHNldC4KKwkgKiBTaW5jZSBzaGFyZWQgdXNiIGNvZGUgcmVsaWVzIG9uIGl0LCBzZXQgaXQg aGVyZSBmb3Igbm93LgorCSAqIE9uY2Ugd2UgaGF2ZSBkbWEgY2FwYWJpbGl0eSBiaW5kaW5ncyB0 aGlzIGNhbiBnbyBhd2F5LgorCSAqLworCXJldHZhbCA9IGRtYV9jb2VyY2VfbWFza19hbmRfY29o ZXJlbnQoJnBkZXYtPmRldiwgRE1BX0JJVF9NQVNLKDMyKSk7CisJaWYgKHJldHZhbCkKKwkJZ290 byBmYWlsOworCisJaGNkID0gdXNiX2NyZWF0ZV9oY2QoZHJpdmVyLCAmcGRldi0+ZGV2LCBkZXZf bmFtZSgmcGRldi0+ZGV2KSk7CisJaWYgKCFoY2QpIHsKKwkJcmV0dmFsID0gLUVOT01FTTsKKwkJ Z290byBmYWlsOworCX0KKworCXJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShwZGV2LCBJT1JF U09VUkNFX01FTSwgMCk7CisJaGNkLT5yZWdzID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2 LT5kZXYsIHJlcyk7CisJaWYgKElTX0VSUihoY2QtPnJlZ3MpKSB7CisJCXJldHZhbCA9IFBUUl9F UlIoaGNkLT5yZWdzKTsKKwkJZ290byBlcnJfcHV0X2hjZDsKKwl9CisJaGNkLT5yc3JjX3N0YXJ0 ID0gcmVzLT5zdGFydDsKKwloY2QtPnJzcmNfbGVuID0gcmVzb3VyY2Vfc2l6ZShyZXMpOworCisJ LyogcmVnaXN0ZXJzIHN0YXJ0IGF0IG9mZnNldCAweDAgKi8KKwloY2RfdG9fZWhjaShoY2QpLT5j YXBzID0gaGNkLT5yZWdzOworCisJcmV0dmFsID0gdXNiX2FkZF9oY2QoaGNkLCBpcnEsIElSUUZf U0hBUkVEKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycl9wdXRfaGNkOworCisJZGV2aWNlX3dh a2V1cF9lbmFibGUoaGNkLT5zZWxmLmNvbnRyb2xsZXIpOworCXJldHVybiByZXR2YWw7CisKK2Vy cl9wdXRfaGNkOgorCXVzYl9wdXRfaGNkKGhjZCk7CitmYWlsOgorCWRldl9lcnIoJnBkZXYtPmRl diwgImluaXQgZmFpbCwgJWRcbiIsIHJldHZhbCk7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitz dGF0aWMgaW50IG5wY203eHhfZWhjaV9oY2RfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwZGV2KQoreworCXN0cnVjdCB1c2JfaGNkICpoY2QgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0 YShwZGV2KTsKKworCXVzYl9yZW1vdmVfaGNkKGhjZCk7CisKKwl1c2JfcHV0X2hjZChoY2QpOwor CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG5wY203 eHhfZWhjaV9pZF90YWJsZVtdID0geworCXsgLmNvbXBhdGlibGUgPSAibnV2b3RvbixucGNtNzUw LWVoY2kiIH0sCisJeyB9LAorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG5wY203eHhfZWhj aV9pZF90YWJsZSk7CisKK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG5wY203eHhfZWhj aV9oY2RfZHJpdmVyID0geworCS5wcm9iZQkJPSBucGNtN3h4X2VoY2lfaGNkX2Rydl9wcm9iZSwK KwkucmVtb3ZlCQk9IG5wY203eHhfZWhjaV9oY2RfZHJ2X3JlbW92ZSwKKwkuc2h1dGRvd24JPSB1 c2JfaGNkX3BsYXRmb3JtX3NodXRkb3duLAorCS5kcml2ZXIJCT0geworCQkubmFtZSA9ICJucGNt N3h4LWVoY2kiLAorCQkuYnVzID0gJnBsYXRmb3JtX2J1c190eXBlLAorCQkucG0gPSAmZWhjaV9u cGNtN3h4X3BtX29wcywKKwkJLm9mX21hdGNoX3RhYmxlID0gbnBjbTd4eF9laGNpX2lkX3RhYmxl LAorCX0KK307CisKK3N0YXRpYyBpbnQgX19pbml0IGVoY2lfbnBjbTd4eF9pbml0KHZvaWQpCit7 CisJaWYgKHVzYl9kaXNhYmxlZCgpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXByX2luZm8oIiVz OiAiIERSSVZFUl9ERVNDICJcbiIsIGhjZF9uYW1lKTsKKworCWVoY2lfaW5pdF9kcml2ZXIoJmVo Y2lfbnBjbTd4eF9oY19kcml2ZXIsIE5VTEwpOworCXJldHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVn aXN0ZXIoJm5wY203eHhfZWhjaV9oY2RfZHJpdmVyKTsKK30KK21vZHVsZV9pbml0KGVoY2lfbnBj bTd4eF9pbml0KTsKKworc3RhdGljIHZvaWQgX19leGl0IGVoY2lfbnBjbTd4eF9jbGVhbnVwKHZv aWQpCit7CisJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJm5wY203eHhfZWhjaV9oY2RfZHJp dmVyKTsKK30KK21vZHVsZV9leGl0KGVoY2lfbnBjbTd4eF9jbGVhbnVwKTsKKworTU9EVUxFX0RF U0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKK01PRFVMRV9BTElBUygicGxhdGZvcm06bnBjbTd4eC1l aGNpIik7CitNT0RVTEVfQVVUSE9SKCJBdmkgRmlzaG1hbiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQ TCB2MiIpOwo=