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,08/10] hikey960: Support usb functionality of Hikey960 From: Yu Chen Message-Id: <20190218112310.17860-9-chenyu56@huawei.com> Date: Mon, 18 Feb 2019 19:23:08 +0800 To: linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: john.stultz@linaro.org, suzhuangluan@hisilicon.com, kongfei@hisilicon.com, liuyu712@hisilicon.com, wanghu17@hisilicon.com, butao@hisilicon.com, chenyao11@huawei.com, fangshengzhou@hisilicon.com, lipengcheng8@huawei.com, songxiaowei@hisilicon.com, xuyiping@hisilicon.com, xuyoujun4@huawei.com, yudongbin@hisilicon.com, zangleigang@hisilicon.com, Yu Chen , Andy Shevchenko , Arnd Bergmann , Greg Kroah-Hartman , Binghui Wang , Heikki Krogerus List-ID: VGhpcyBkcml2ZXIgaGFuZGxlcyB1c2IgaHViIHBvd2VyIG9uIGFuZCB0eXBlQyBwb3J0IGV2ZW50 IG9mIEhpS2V5OTYwIGJvYXJkOgoxKURQJkRNIHN3aXRjaGluZyBiZXR3ZWVuIHVzYiBodWIgYW5k IHR5cGVDIHBvcnQgYmFzZSBvbiB0eXBlQyBwb3J0CnN0YXRlCjIpQ29udHJvbCBwb3dlciBvZiB1 c2IgaHViIG9uIEhpa2V5OTYwCjMpQ29udHJvbCB2YnVzIG9mIHR5cGVDIHBvcnQKCkNjOiBBbmR5 IFNoZXZjaGVua28gPGFuZHkuc2hldmNoZW5rb0BnbWFpbC5jb20+CkNjOiBBcm5kIEJlcmdtYW5u IDxhcm5kQGFybmRiLmRlPgpDYzogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3Vu ZGF0aW9uLm9yZz4KQ2M6IEpvaG4gU3R1bHR6IDxqb2huLnN0dWx0ekBsaW5hcm8ub3JnPgpDYzog QmluZ2h1aSBXYW5nIDx3YW5nYmluZ2h1aUBoaXNpbGljb24uY29tPgpDYzogSGVpa2tpIEtyb2dl cnVzIDxoZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBZdSBD aGVuIDxjaGVueXU1NkBodWF3ZWkuY29tPgotLS0KdjE6CiogVXNpbmcgZ3Bpb2QgQVBJIHdpdGgg dGhlIGdwaW9zLgoqIFJlbW92aW5nIHJlZ2lzdGVyaW5nIHVzYiByb2xlIHN3aXRjaC4KKiBSZWdp c3RlcmluZyB1c2Igcm9sZSBzd2l0Y2ggbm90aWZpZXIuCnYyOgoqIEZpeCBsaWNlbnNlIGRlY2xh cmF0aW9uLgoqIEFkZCBjb25maWd1cmF0aW9uIG9mICBncGlvIGRpcmVjdGlvbi4KKiBSZW1vdmUg c29tZSBsb2cgcHJpbnQuCi0tLQotLS0KIGRyaXZlcnMvbWlzYy9LY29uZmlnICAgICAgICAgIHwg ICA2ICsrCiBkcml2ZXJzL21pc2MvTWFrZWZpbGUgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL21p c2MvaGlzaV9oaWtleV91c2IuYyB8IDE4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTg4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL21pc2MvaGlzaV9oaWtleV91c2IuYwoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWlzYy9LY29uZmlnIGIvZHJpdmVycy9taXNjL0tjb25maWcKaW5kZXggZjQxN2IwNmUx MWM1Li44ZDhiNzE3NzU5ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9LY29uZmlnCisrKyBi L2RyaXZlcnMvbWlzYy9LY29uZmlnCkBAIC01MjEsNiArNTIxLDEyIEBAIGNvbmZpZyBQVlBBTklD CiAJICBhIHBhcmF2aXJ0dWFsaXplZCBkZXZpY2UgcHJvdmlkZWQgYnkgUUVNVTsgaXQgbGV0cyBh IHZpcnR1YWwgbWFjaGluZQogCSAgKGd1ZXN0KSBjb21tdW5pY2F0ZSBwYW5pYyBldmVudHMgdG8g dGhlIGhvc3QuCiAKK2NvbmZpZyBISVNJX0hJS0VZX1VTQgorCXRyaXN0YXRlICJVU0IgZnVuY3Rp b25hbGl0eSBvZiBIaVNpbGljb24gSGlrZXkgUGxhdGZvcm0iCisJZGVwZW5kcyBvbiBPRiAmJiBH UElPTElCCisJaGVscAorCSAgSWYgeW91IHNheSB5ZXMgaGVyZSB5b3UgZ2V0IHN1cHBvcnQgZm9y IHVzYiBmdW5jdGlvbmFsaXR5IG9mIEhpU2lsaWNvbiBIaWtleSBQbGF0Zm9ybS4KKwogc291cmNl ICJkcml2ZXJzL21pc2MvYzJwb3J0L0tjb25maWciCiBzb3VyY2UgImRyaXZlcnMvbWlzYy9lZXBy b20vS2NvbmZpZyIKIHNvdXJjZSAiZHJpdmVycy9taXNjL2NiNzEwL0tjb25maWciCmRpZmYgLS1n aXQgYS9kcml2ZXJzL21pc2MvTWFrZWZpbGUgYi9kcml2ZXJzL21pc2MvTWFrZWZpbGUKaW5kZXgg ZTM5Y2NiYmMxYjNhLi5kYzg4OTJiMTNhMWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9NYWtl ZmlsZQorKysgYi9kcml2ZXJzL21pc2MvTWFrZWZpbGUKQEAgLTU5LDMgKzU5LDQgQEAgb2JqLSQo Q09ORklHX1BDSV9FTkRQT0lOVF9URVNUKQkrPSBwY2lfZW5kcG9pbnRfdGVzdC5vCiBvYmotJChD T05GSUdfT0NYTCkJCSs9IG9jeGwvCiBvYmoteQkJCQkrPSBjYXJkcmVhZGVyLwogb2JqLSQoQ09O RklHX1BWUEFOSUMpICAgCSs9IHB2cGFuaWMubworb2JqLSQoQ09ORklHX0hJU0lfSElLRVlfVVNC KQkrPSBoaXNpX2hpa2V5X3VzYi5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvaGlzaV9oaWtl eV91c2IuYyBiL2RyaXZlcnMvbWlzYy9oaXNpX2hpa2V5X3VzYi5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzAwMTNmOGU3NmYwCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9taXNjL2hpc2lfaGlrZXlfdXNiLmMKQEAgLTAsMCArMSwxODEgQEAKKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogU3VwcG9ydCBmb3IgdXNiIGZ1bmN0 aW9uYWxpdHkgb2YgSGlrZXkgc2VyaWVzIGJvYXJkcworICogYmFzZWQgb24gSGlzaWxpY29uIEtp cmluIFNvYy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBIaWxpc2ljb24gRWxlY3Ry b25pY3MgQ28uLCBMdGQuCisgKgkJaHR0cDovL3d3dy5odWF3ZWkuY29tCisgKgorICogQXV0aG9y czogWXUgQ2hlbiA8Y2hlbnl1NTZAaHVhd2VpLmNvbT4KKyAqLworCisjaW5jbHVkZSA8bGludXgv Z3Bpby9jb25zdW1lci5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L25vdGlmaWVyLmg+CisjaW5jbHVkZSA8bGlu dXgvb2YuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxs aW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvdXNiL3JvbGUuaD4KKworI2RlZmluZSBERVZJ Q0VfRFJJVkVSX05BTUUgImhpc2lfaGlrZXlfdXNiIgorCisjZGVmaW5lIEhVQl9WQlVTX1BPV0VS X09OIDEKKyNkZWZpbmUgSFVCX1ZCVVNfUE9XRVJfT0ZGIDAKKyNkZWZpbmUgVVNCX1NXSVRDSF9U T19IVUIgMQorI2RlZmluZSBVU0JfU1dJVENIX1RPX1RZUEVDIDAKKworc3RydWN0IGhpc2lfaGlr ZXlfdXNiIHsKKwlzdHJ1Y3QgZ3Bpb19kZXNjICpvdGdfc3dpdGNoOworCXN0cnVjdCBncGlvX2Rl c2MgKnR5cGVjX3ZidXM7CisJc3RydWN0IGdwaW9fZGVzYyAqaHViX3ZidXM7CisJaW50IHR5cGVj X3ZidXNfZW5hYmxlX3ZhbDsKKworCXN0cnVjdCB1c2Jfcm9sZV9zd2l0Y2ggKnJvbGVfc3c7CisJ c3RydWN0IG5vdGlmaWVyX2Jsb2NrIG5iOworfTsKKworc3RhdGljIHZvaWQgaHViX3Bvd2VyX2N0 cmwoc3RydWN0IGhpc2lfaGlrZXlfdXNiICpoaXNpX2hpa2V5X3VzYiwgaW50IHZhbHVlKQorewor CWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChoaXNpX2hpa2V5X3VzYi0+aHViX3ZidXMsIHZhbHVl KTsKK30KKworc3RhdGljIHZvaWQgdXNiX3N3aXRjaF9jdHJsKHN0cnVjdCBoaXNpX2hpa2V5X3Vz YiAqaGlzaV9oaWtleV91c2IsCisJCWludCBzd2l0Y2hfdG8pCit7CisJZ3Bpb2Rfc2V0X3ZhbHVl X2NhbnNsZWVwKGhpc2lfaGlrZXlfdXNiLT5vdGdfc3dpdGNoLCBzd2l0Y2hfdG8pOworfQorCitz dGF0aWMgdm9pZCB1c2JfdHlwZWNfcG93ZXJfY3RybChzdHJ1Y3QgaGlzaV9oaWtleV91c2IgKmhp c2lfaGlrZXlfdXNiLAorCQlpbnQgdmFsdWUpCit7CisJZ3Bpb2Rfc2V0X3ZhbHVlX2NhbnNsZWVw KGhpc2lfaGlrZXlfdXNiLT50eXBlY192YnVzLCB2YWx1ZSk7Cit9CisKK3N0YXRpYyBpbnQgaGlz aV9oaWtleV9yb2xlX3N3aXRjaChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAorCQkJdW5zaWdu ZWQgbG9uZyBzdGF0ZSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgaGlzaV9oaWtleV91c2IgKmhp c2lfaGlrZXlfdXNiOworCisJaGlzaV9oaWtleV91c2IgPSBjb250YWluZXJfb2YobmIsIHN0cnVj dCBoaXNpX2hpa2V5X3VzYiwgbmIpOworCisJc3dpdGNoIChzdGF0ZSkgeworCWNhc2UgVVNCX1JP TEVfTk9ORToKKwkJdXNiX3R5cGVjX3Bvd2VyX2N0cmwoaGlzaV9oaWtleV91c2IsCisJCQkJIWhp c2lfaGlrZXlfdXNiLT50eXBlY192YnVzX2VuYWJsZV92YWwpOworCQl1c2Jfc3dpdGNoX2N0cmwo aGlzaV9oaWtleV91c2IsIFVTQl9TV0lUQ0hfVE9fSFVCKTsKKwkJaHViX3Bvd2VyX2N0cmwoaGlz aV9oaWtleV91c2IsIEhVQl9WQlVTX1BPV0VSX09OKTsKKwkJYnJlYWs7CisJY2FzZSBVU0JfUk9M RV9IT1NUOgorCQl1c2Jfc3dpdGNoX2N0cmwoaGlzaV9oaWtleV91c2IsIFVTQl9TV0lUQ0hfVE9f VFlQRUMpOworCQl1c2JfdHlwZWNfcG93ZXJfY3RybChoaXNpX2hpa2V5X3VzYiwKKwkJCQloaXNp X2hpa2V5X3VzYi0+dHlwZWNfdmJ1c19lbmFibGVfdmFsKTsKKwkJYnJlYWs7CisJY2FzZSBVU0Jf Uk9MRV9ERVZJQ0U6CisJCWh1Yl9wb3dlcl9jdHJsKGhpc2lfaGlrZXlfdXNiLCBIVUJfVkJVU19Q T1dFUl9PRkYpOworCQl1c2JfdHlwZWNfcG93ZXJfY3RybChoaXNpX2hpa2V5X3VzYiwKKwkJCQkh aGlzaV9oaWtleV91c2ItPnR5cGVjX3ZidXNfZW5hYmxlX3ZhbCk7CisJCXVzYl9zd2l0Y2hfY3Ry bChoaXNpX2hpa2V5X3VzYiwgVVNCX1NXSVRDSF9UT19UWVBFQyk7CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCWJyZWFrOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGhpc2lfaGlr ZXlfdXNiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRl dmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnJvb3QgPSBkZXYt Pm9mX25vZGU7CisJc3RydWN0IGhpc2lfaGlrZXlfdXNiICpoaXNpX2hpa2V5X3VzYjsKKwlpbnQg cmV0OworCisJaGlzaV9oaWtleV91c2IgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmhpc2lf aGlrZXlfdXNiKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFoaXNpX2hpa2V5X3VzYikKKwkJcmV0dXJu IC1FTk9NRU07CisKKwloaXNpX2hpa2V5X3VzYi0+bmIubm90aWZpZXJfY2FsbCA9IGhpc2lfaGlr ZXlfcm9sZV9zd2l0Y2g7CisKKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihyb290LCAidHlw ZWMtdmJ1cy1lbmFibGUtdmFsIiwKKwkJCQkgICAmaGlzaV9oaWtleV91c2ItPnR5cGVjX3ZidXNf ZW5hYmxlX3ZhbCk7CisJaWYgKHJldCkKKwkJaGlzaV9oaWtleV91c2ItPnR5cGVjX3ZidXNfZW5h YmxlX3ZhbCA9IDE7CisKKwloaXNpX2hpa2V5X3VzYi0+dHlwZWNfdmJ1cyA9IGRldm1fZ3Bpb2Rf Z2V0KGRldiwgInR5cGVjLXZidXMiLAorCQkJaGlzaV9oaWtleV91c2ItPnR5cGVjX3ZidXNfZW5h YmxlX3ZhbCA/CisJCQlHUElPRF9PVVRfTE9XIDogR1BJT0RfT1VUX0hJR0gpOworCWlmICghaGlz aV9oaWtleV91c2ItPnR5cGVjX3ZidXMpCisJCXJldHVybiAtRU5PRU5UOworCWVsc2UgaWYgKElT X0VSUihoaXNpX2hpa2V5X3VzYi0+dHlwZWNfdmJ1cykpCisJCXJldHVybiBQVFJfRVJSKGhpc2lf aGlrZXlfdXNiLT50eXBlY192YnVzKTsKKworCWdwaW9kX2RpcmVjdGlvbl9vdXRwdXQoaGlzaV9o aWtleV91c2ItPnR5cGVjX3ZidXMsCisJCQkhaGlzaV9oaWtleV91c2ItPnR5cGVjX3ZidXNfZW5h YmxlX3ZhbCk7CisKKwloaXNpX2hpa2V5X3VzYi0+b3RnX3N3aXRjaCA9IGRldm1fZ3Bpb2RfZ2V0 KGRldiwgIm90Zy1zd2l0Y2giLCBHUElPRF9JTik7CisJaWYgKCFoaXNpX2hpa2V5X3VzYi0+b3Rn X3N3aXRjaCkKKwkJcmV0dXJuIC1FTk9FTlQ7CisJZWxzZSBpZiAoSVNfRVJSKGhpc2lfaGlrZXlf dXNiLT5vdGdfc3dpdGNoKSkKKwkJcmV0dXJuIFBUUl9FUlIoaGlzaV9oaWtleV91c2ItPm90Z19z d2l0Y2gpOworCisJZ3Bpb2RfZGlyZWN0aW9uX291dHB1dChoaXNpX2hpa2V5X3VzYi0+b3RnX3N3 aXRjaCwgVVNCX1NXSVRDSF9UT19IVUIpOworCisJLyogaHViLXZkZDMzLWVuIGlzIG9wdGlvbmFs ICovCisJaGlzaV9oaWtleV91c2ItPmh1Yl92YnVzID0gZGV2bV9ncGlvZF9nZXQoZGV2LCAiaHVi LXZkZDMzLWVuIiwKKwkJCUdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIoaGlzaV9oaWtleV91 c2ItPmh1Yl92YnVzKSkKKwkJcmV0dXJuIFBUUl9FUlIoaGlzaV9oaWtleV91c2ItPmh1Yl92YnVz KTsKKworCWdwaW9kX2RpcmVjdGlvbl9vdXRwdXQoaGlzaV9oaWtleV91c2ItPmh1Yl92YnVzLCBI VUJfVkJVU19QT1dFUl9PTik7CisKKwloaXNpX2hpa2V5X3VzYi0+cm9sZV9zdyA9IHVzYl9yb2xl X3N3aXRjaF9nZXQoZGV2KTsKKwlpZiAoIWhpc2lfaGlrZXlfdXNiLT5yb2xlX3N3KQorCQlyZXR1 cm4gLUVQUk9CRV9ERUZFUjsKKwllbHNlIGlmIChJU19FUlIoaGlzaV9oaWtleV91c2ItPnJvbGVf c3cpKQorCQlyZXR1cm4gUFRSX0VSUihoaXNpX2hpa2V5X3VzYi0+cm9sZV9zdyk7CisKKwlyZXQg PSB1c2Jfcm9sZV9zd2l0Y2hfcmVnaXN0ZXJfbm90aWZpZXIoaGlzaV9oaWtleV91c2ItPnJvbGVf c3csCisJCQkmaGlzaV9oaWtleV91c2ItPm5iKTsKKwlpZiAocmV0KSB7CisJCXVzYl9yb2xlX3N3 aXRjaF9wdXQoaGlzaV9oaWtleV91c2ItPnJvbGVfc3cpOworCQlyZXR1cm4gcmV0OworCX0KKwor CXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGhpc2lfaGlrZXlfdXNiKTsKKworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50ICBoaXNpX2hpa2V5X3VzYl9yZW1vdmUoc3RydWN0IHBsYXRmb3Jt X2RldmljZSAqcGRldikKK3sKKwlzdHJ1Y3QgaGlzaV9oaWtleV91c2IgKmhpc2lfaGlrZXlfdXNi ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7CisKKwl1c2Jfcm9sZV9zd2l0Y2hfdW5yZWdp c3Rlcl9ub3RpZmllcihoaXNpX2hpa2V5X3VzYi0+cm9sZV9zdywKKwkJCSZoaXNpX2hpa2V5X3Vz Yi0+bmIpOworCisJdXNiX3JvbGVfc3dpdGNoX3B1dChoaXNpX2hpa2V5X3VzYi0+cm9sZV9zdyk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaWRf dGFibGVfaGlzaV9oaWtleV91c2JbXSA9IHsKKwl7LmNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGdw aW9faHVidjEifSwKKwl7LmNvbXBhdGlibGUgPSAiaGlzaWxpY29uLGhpa2V5OTYwX3VzYiJ9LAor CXt9Cit9OworCitzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBoaXNpX2hpa2V5X3VzYl9k cml2ZXIgPSB7CisJLnByb2JlID0gaGlzaV9oaWtleV91c2JfcHJvYmUsCisJLnJlbW92ZSA9IGhp c2lfaGlrZXlfdXNiX3JlbW92ZSwKKwkuZHJpdmVyID0geworCQkubmFtZSA9IERFVklDRV9EUklW RVJfTkFNRSwKKwkJLm9mX21hdGNoX3RhYmxlID0gaWRfdGFibGVfaGlzaV9oaWtleV91c2IsCisJ fSwKK307CisKK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoaGlzaV9oaWtleV91c2JfZHJpdmVyKTsK KworTU9EVUxFX0FVVEhPUigiWXUgQ2hlbiA8Y2hlbnl1NTZAaHVhd2VpLmNvbT4iKTsKK01PRFVM RV9ERVNDUklQVElPTigiRHJpdmVyIFN1cHBvcnQgZm9yIFVTQiBmdW5jdGlvbmFsaXR5IG9mIEhp a2V5Iik7CitNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cg==