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: [v3,1/3] USB host: Add USB ehci support for nuvoton npcm7xx platform From: Avi Fishman Message-Id: <1527788430-12494-2-git-send-email-avifishman70@gmail.com> Date: Thu, 31 May 2018 20:40:28 +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 dmlGaXNobWFuNzBAZ21haWwuY29tPgotLS0KIGRyaXZlcnMvdXNiL2hvc3QvS2NvbmZpZyAgICAg ICAgfCAgIDggKysKIGRyaXZlcnMvdXNiL2hvc3QvTWFrZWZpbGUgICAgICAgfCAgIDEgKwogZHJp dmVycy91c2IvaG9zdC9laGNpLW5wY203eHguYyB8IDIxMiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDIyMSBpbnNlcnRpb25zKCspCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy91c2IvaG9zdC9laGNpLW5wY203eHguYwoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvS2NvbmZpZyBiL2RyaXZlcnMvdXNiL2hvc3QvS2NvbmZp ZwppbmRleCA5ZjBhZWIwNjhhY2IuLmUzMTAwYjI0OWYwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91 c2IvaG9zdC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvS2NvbmZpZwpAQCAtMTg1LDYg KzE4NSwxNCBAQCBjb25maWcgVVNCX0VIQ0lfTVhDCiAJLS0taGVscC0tLQogCSAgVmFyaWF0aW9u IG9mIEFSQyBVU0IgYmxvY2sgdXNlZCBpbiBzb21lIEZyZWVzY2FsZSBjaGlwcy4KIAorY29uZmln IFVTQl9FSENJX0hDRF9OUENNN1hYCisJdHJpc3RhdGUgIlN1cHBvcnQgZm9yIE51dm90b24gTlBD TTdYWCBvbi1jaGlwIEVIQ0kgVVNCIGNvbnRyb2xsZXIiCisJZGVwZW5kcyBvbiAoVVNCX0VIQ0lf SENEICYmIEFSQ0hfTlBDTTdYWCkgfHwgQ09NUElMRV9URVNUCisJZGVmYXVsdCB5CisJaGVscAor CSAgRW5hYmxlcyBzdXBwb3J0IGZvciB0aGUgb24tY2hpcCBFSENJIGNvbnRyb2xsZXIgb24KKwkg IE51dm90b24gTlBDTTdYWCBjaGlwcy4KKwogY29uZmlnIFVTQl9FSENJX0hDRF9PTUFQCiAJdHJp c3RhdGUgIkVIQ0kgc3VwcG9ydCBmb3IgT01BUDMgYW5kIGxhdGVyIGNoaXBzIgogCWRlcGVuZHMg b24gQVJDSF9PTUFQCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L01ha2VmaWxlIGIvZHJp dmVycy91c2IvaG9zdC9NYWtlZmlsZQppbmRleCA4YThjZmZlMGI0NDUuLmZjZjVkYWI1ZWZhNCAx MDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3VzYi9o b3N0L01ha2VmaWxlCkBAIC00Myw2ICs0Myw3IEBAIG9iai0kKENPTkZJR19VU0JfRUhDSV9IQ0Qp CSs9IGVoY2ktaGNkLm8KIG9iai0kKENPTkZJR19VU0JfRUhDSV9QQ0kpCSs9IGVoY2ktcGNpLm8K IG9iai0kKENPTkZJR19VU0JfRUhDSV9IQ0RfUExBVEZPUk0pCSs9IGVoY2ktcGxhdGZvcm0ubwog b2JqLSQoQ09ORklHX1VTQl9FSENJX01YQykJKz0gZWhjaS1teGMubworb2JqLSQoQ09ORklHX1VT Ql9FSENJX0hDRF9OUENNN1hYKQkrPSBlaGNpLW5wY203eHgubwogb2JqLSQoQ09ORklHX1VTQl9F SENJX0hDRF9PTUFQKQkrPSBlaGNpLW9tYXAubwogb2JqLSQoQ09ORklHX1VTQl9FSENJX0hDRF9P UklPTikJKz0gZWhjaS1vcmlvbi5vCiBvYmotJChDT05GSUdfVVNCX0VIQ0lfSENEX1NQRUFSKQkr PSBlaGNpLXNwZWFyLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvZWhjaS1ucGNtN3h4 LmMgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2ktbnBjbTd4eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uYzgwYTg3OTJkM2IwCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy91c2IvaG9zdC9laGNpLW5wY203eHguYwpAQCAtMCwwICsxLDIxMiBAQAorLy8gU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiBOdXZvdG9uIE5QQ003eHggZHJpdmVy IGZvciBFSENJIEhDRAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBOdXZvdG9uIFRlY2hub2xv Z2llcywKKyAqIEF2aSBGaXNobWFuIDxhdmkuZmlzaG1hbkBudXZvdG9uLmNvbT4gPGF2aWZpc2ht YW43MEBnbWFpbC5jb20+CisgKiBUb21lciBNYWltb24gPHRvbWVyLm1haW1vbkBudXZvdG9uLmNv bT4gPHRtYWltb243N0BnbWFpbC5jb20+CisgKgorICogQmFzZWQgb24gdmFyaW91cyBlaGNpLXNw ZWFyLmMgZHJpdmVyCisgKi8KKworCisjaW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KKwor I2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorI2lu Y2x1ZGUgPGxpbnV4L29mLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cisj aW5jbHVkZSA8bGludXgvcG0uaD4KKyNpbmNsdWRlIDxsaW51eC91c2IuaD4KKyNpbmNsdWRlIDxs aW51eC91c2IvaGNkLmg+CisKKyNpbmNsdWRlICJlaGNpLmgiCisKKyNpbmNsdWRlIDxsaW51eC9y ZWdtYXAuaD4KKyNpbmNsdWRlIDxsaW51eC9tZmQvc3lzY29uLmg+CisKKyNkZWZpbmUgRFJJVkVS X0RFU0MgIkVIQ0kgbnBjbTd4eCBkcml2ZXIiCisKK3N0YXRpYyBjb25zdCBjaGFyIGhjZF9uYW1l W10gPSAibnBjbTd4eC1laGNpIjsKKworI2RlZmluZSAgVVNCMlBIWUNUTF9PRkZTRVQgMHgxNDQK KworI2RlZmluZSAgSVBTUlNUMl9PRkZTRVQgMHgyNAorI2RlZmluZSAgSVBTUlNUM19PRkZTRVQg MHgzNAorCisKK3N0YXRpYyBzdHJ1Y3QgaGNfZHJpdmVyIF9fcmVhZF9tb3N0bHkgZWhjaV9ucGNt N3h4X2hjX2RyaXZlcjsKKworI2lmZGVmIENPTkZJR19QTV9TTEVFUAorc3RhdGljIGludCBlaGNp X25wY203eHhfZHJ2X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCB1c2Jf aGNkICpoY2QgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlib29sIGRvX3dha2V1cCA9IGRldmlj ZV9tYXlfd2FrZXVwKGRldik7CisKKwlyZXR1cm4gZWhjaV9zdXNwZW5kKGhjZCwgZG9fd2FrZXVw KTsKK30KKworc3RhdGljIGludCBlaGNpX25wY203eHhfZHJ2X3Jlc3VtZShzdHJ1Y3QgZGV2aWNl ICpkZXYpCit7CisJc3RydWN0IHVzYl9oY2QgKmhjZCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwor CisJZWhjaV9yZXN1bWUoaGNkLCBmYWxzZSk7CisJcmV0dXJuIDA7Cit9CisjZW5kaWYgLyogQ09O RklHX1BNX1NMRUVQICovCisKK3N0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhlaGNpX25wY203eHhf cG1fb3BzLCBlaGNpX25wY203eHhfZHJ2X3N1c3BlbmQsCisJCWVoY2lfbnBjbTd4eF9kcnZfcmVz dW1lKTsKKworc3RhdGljIGludCBucGNtN3h4X2VoY2lfaGNkX2Rydl9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQoreworCXN0cnVjdCB1c2JfaGNkICpoY2Q7CisJc3RydWN0IHJl c291cmNlICpyZXM7CisJc3RydWN0IHJlZ21hcCAqZ2NyX3JlZ21hcDsKKwlzdHJ1Y3QgcmVnbWFw ICpyc3RfcmVnbWFwOworCWNvbnN0IHN0cnVjdCBoY19kcml2ZXIgKmRyaXZlciA9ICZlaGNpX25w Y203eHhfaGNfZHJpdmVyOworCWludCBpcnE7CisJaW50IHJldHZhbDsKKworCWRldl9kYmcoJnBk ZXYtPmRldiwJImluaXRpYWxpemluZyBucGNtN3h4IGVoY2kgVVNCIENvbnRyb2xsZXJcbiIpOwor CisJZ2NyX3JlZ21hcCA9IHN5c2Nvbl9yZWdtYXBfbG9va3VwX2J5X2NvbXBhdGlibGUoIm51dm90 b24sbnBjbTc1MC1nY3IiKTsKKwlpZiAoSVNfRVJSKGdjcl9yZWdtYXApKSB7CisJCWRldl9lcnIo JnBkZXYtPmRldiwgIiVzOiBmYWlsZWQgdG8gZmluZCBudXZvdG9uLG5wY203NTAtZ2NyXG4iLAor CQkJX19mdW5jX18pOworCQlyZXR1cm4gSVNfRVJSKGdjcl9yZWdtYXApOworCX0KKworCXJzdF9y ZWdtYXAgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9jb21wYXRpYmxlKCJudXZvdG9uLG5wY203 NTAtcnN0Iik7CisJaWYgKElTX0VSUihyc3RfcmVnbWFwKSkgeworCQlkZXZfZXJyKCZwZGV2LT5k ZXYsICIlczogZmFpbGVkIHRvIGZpbmQgbnV2b3RvbixucGNtNzUwLXJzdFxuIiwKKwkJCV9fZnVu Y19fKTsKKwkJcmV0dXJuIElTX0VSUihyc3RfcmVnbWFwKTsKKwl9CisKKwkvKioqKioqKioqIHBo eSBpbml0ICAqKioqKiovCisJLy8gcmVzZXQgdXNiIGhvc3QKKwlyZWdtYXBfdXBkYXRlX2JpdHMo cnN0X3JlZ21hcCwgSVBTUlNUMl9PRkZTRVQsCisJCQkoMHgxIDw8IDI2KSwgKDB4MSA8PCAyNikp OworCXJlZ21hcF91cGRhdGVfYml0cyhyc3RfcmVnbWFwLCBJUFNSU1QzX09GRlNFVCwKKwkJCSgw eDEgPDwgMjUpLCAoMHgxIDw8IDI1KSk7CisJcmVnbWFwX3VwZGF0ZV9iaXRzKGdjcl9yZWdtYXAs IFVTQjJQSFlDVExfT0ZGU0VULAorCQkJKDB4MSA8PCAyOCksIDApOworCisJdWRlbGF5KDEpOwor CisJLy8gZW5hYmxlIHBoeQorCXJlZ21hcF91cGRhdGVfYml0cyhyc3RfcmVnbWFwLCBJUFNSU1Qz X09GRlNFVCwKKwkJCSgweDEgPDwgMjUpLCAwKTsKKworCXVkZWxheSg1MCk7IC8vIGVuYWJsZSBw aHkKKworCXJlZ21hcF91cGRhdGVfYml0cyhnY3JfcmVnbWFwLCBVU0IyUEhZQ1RMX09GRlNFVCwK KwkJCSgweDEgPDwgMjgpLCAoMHgxIDw8IDI4KSk7CisKKwkvLyBlbmFibGUgaG9zdAorCXJlZ21h cF91cGRhdGVfYml0cyhyc3RfcmVnbWFwLCBJUFNSU1QyX09GRlNFVCwKKwkJCSgweDEgPDwgMjYp LCAwKTsKKworCWlmICh1c2JfZGlzYWJsZWQoKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpcnEg PSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOworCWlmIChpcnEgPCAwKSB7CisJCXJldHZhbCA9 IGlycTsKKwkJZ290byBmYWlsOworCX0KKworCS8qCisJICogUmlnaHQgbm93IGRldmljZS10cmVl IHByb2JlZCBkZXZpY2VzIGRvbid0IGdldCBkbWFfbWFzayBzZXQuCisJICogU2luY2Ugc2hhcmVk IHVzYiBjb2RlIHJlbGllcyBvbiBpdCwgc2V0IGl0IGhlcmUgZm9yIG5vdy4KKwkgKiBPbmNlIHdl IGhhdmUgZG1hIGNhcGFiaWxpdHkgYmluZGluZ3MgdGhpcyBjYW4gZ28gYXdheS4KKwkgKi8KKwly ZXR2YWwgPSBkbWFfY29lcmNlX21hc2tfYW5kX2NvaGVyZW50KCZwZGV2LT5kZXYsIERNQV9CSVRf TUFTSygzMikpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZmFpbDsKKworCWhjZCA9IHVzYl9jcmVh dGVfaGNkKGRyaXZlciwgJnBkZXYtPmRldiwgZGV2X25hbWUoJnBkZXYtPmRldikpOworCWlmICgh aGNkKSB7CisJCXJldHZhbCA9IC1FTk9NRU07CisJCWdvdG8gZmFpbDsKKwl9CisKKwlyZXMgPSBw bGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWhjZC0+cmVn cyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZSgmcGRldi0+ZGV2LCByZXMpOworCWlmIChJU19FUlIo aGNkLT5yZWdzKSkgeworCQlyZXR2YWwgPSBQVFJfRVJSKGhjZC0+cmVncyk7CisJCWdvdG8gZXJy X3B1dF9oY2Q7CisJfQorCWhjZC0+cnNyY19zdGFydCA9IHJlcy0+c3RhcnQ7CisJaGNkLT5yc3Jj X2xlbiA9IHJlc291cmNlX3NpemUocmVzKTsKKworCS8qIHJlZ2lzdGVycyBzdGFydCBhdCBvZmZz ZXQgMHgwICovCisJaGNkX3RvX2VoY2koaGNkKS0+Y2FwcyA9IGhjZC0+cmVnczsKKworCXJldHZh bCA9IHVzYl9hZGRfaGNkKGhjZCwgaXJxLCBJUlFGX1NIQVJFRCk7CisJaWYgKHJldHZhbCkKKwkJ Z290byBlcnJfcHV0X2hjZDsKKworCWRldmljZV93YWtldXBfZW5hYmxlKGhjZC0+c2VsZi5jb250 cm9sbGVyKTsKKwlyZXR1cm4gcmV0dmFsOworCitlcnJfcHV0X2hjZDoKKwl1c2JfcHV0X2hjZCho Y2QpOworZmFpbDoKKwlkZXZfZXJyKCZwZGV2LT5kZXYsICJpbml0IGZhaWwsICVkXG4iLCByZXR2 YWwpOworCisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGludCBucGNtN3h4X2VoY2lfaGNk X2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgdXNi X2hjZCAqaGNkID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisKKwl1c2JfcmVtb3ZlX2hj ZChoY2QpOworCisJdXNiX3B1dF9oY2QoaGNkKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMg Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBucGNtN3h4X2VoY2lfaWRfdGFibGVbXSA9IHsKKwl7 IC5jb21wYXRpYmxlID0gIm51dm90b24sbnBjbTc1MC1laGNpIiB9LAorCXsgfSwKK307CitNT0RV TEVfREVWSUNFX1RBQkxFKG9mLCBucGNtN3h4X2VoY2lfaWRfdGFibGUpOworCitzdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciBucGNtN3h4X2VoY2lfaGNkX2RyaXZlciA9IHsKKwkucHJvYmUJ CT0gbnBjbTd4eF9laGNpX2hjZF9kcnZfcHJvYmUsCisJLnJlbW92ZQkJPSBucGNtN3h4X2VoY2lf aGNkX2Rydl9yZW1vdmUsCisJLnNodXRkb3duCT0gdXNiX2hjZF9wbGF0Zm9ybV9zaHV0ZG93biwK KwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUgPSAibnBjbTd4eC1laGNpIiwKKwkJLmJ1cyA9ICZwbGF0 Zm9ybV9idXNfdHlwZSwKKwkJLnBtID0gJmVoY2lfbnBjbTd4eF9wbV9vcHMsCisJCS5vZl9tYXRj aF90YWJsZSA9IG5wY203eHhfZWhjaV9pZF90YWJsZSwKKwl9Cit9OworCitzdGF0aWMgaW50IF9f aW5pdCBlaGNpX25wY203eHhfaW5pdCh2b2lkKQoreworCWlmICh1c2JfZGlzYWJsZWQoKSkKKwkJ cmV0dXJuIC1FTk9ERVY7CisKKwlwcl9pbmZvKCIlczogIiBEUklWRVJfREVTQyAiXG4iLCBoY2Rf bmFtZSk7CisKKwllaGNpX2luaXRfZHJpdmVyKCZlaGNpX25wY203eHhfaGNfZHJpdmVyLCBOVUxM KTsKKwlyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZucGNtN3h4X2VoY2lfaGNkX2Ry aXZlcik7Cit9Cittb2R1bGVfaW5pdChlaGNpX25wY203eHhfaW5pdCk7CisKK3N0YXRpYyB2b2lk IF9fZXhpdCBlaGNpX25wY203eHhfY2xlYW51cCh2b2lkKQoreworCXBsYXRmb3JtX2RyaXZlcl91 bnJlZ2lzdGVyKCZucGNtN3h4X2VoY2lfaGNkX2RyaXZlcik7Cit9Cittb2R1bGVfZXhpdChlaGNp X25wY203eHhfY2xlYW51cCk7CisKK01PRFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7CitN T0RVTEVfQUxJQVMoInBsYXRmb3JtOm5wY203eHgtZWhjaSIpOworTU9EVUxFX0FVVEhPUigiQXZp IEZpc2htYW4iKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsK