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: [7/9] xhci: Clear the host side toggle manually when endpoint is soft reset From: Mathias Nyman Message-Id: <1521210786-28347-8-git-send-email-mathias.nyman@linux.intel.com> Date: Fri, 16 Mar 2018 16:33:04 +0200 To: gregkh@linuxfoundation.org Cc: linux-usb@vger.kernel.org, Mathias Nyman List-ID: U29tZSBkZXZpY2VzIHVzZSBhIGNsZWFyIGVuZHBvaW50IGhhbHQgcmVxdWVzdCBhcyBhIHNvZnQg cmVzZXQsIGV2ZW4gaWYKdGhlIGVuZHBvaW50IGlzIG5vdCBoYWx0ZWQuIFRoaXMgd2lsbCBjbGVh ciB0aGUgdG9nZ2xlIGFuZCBzZXF1ZW5jZSBvbiB0aGUKZGV2aWNlIHNpZGUuCgp4SENJIGhvd2V2 ZXIgcmVmdXNlcyB0byByZXNldCBhIG5vbi1oYWx0ZWQgZW5kcG9pbnQsIHNvIGluc3RlYWQKd2Ug bmVlZCB0byBpc3N1ZSBhIGNvbmZpZ3VyZSBlbmRwb2ludCBjb21tYW5kIG9uIHhIQ0kgdG8gY2xl YXIgaXRzIGhvc3QKc2lkZSB0b2dnbGUgYW5kIHNlcXVlbmNlLCBhbmQgZ2V0IGl0IGluIHN5bmMg d2l0aCB0aGUgZGV2aWNlIHNpZGUuCgpUaGlzIGlzIGEgcmVzcGluIG9mIGEgb2xkIHBhdGNoIHRo YXQgd2FzIHJldmVydGVkIGFzIGl0IGhhZCBhIHN0YWxlCmVuZHBvaW50IGNvbnRleHQgZGVxdWV1 ZSB2YWx1ZSB3aGljaCBjYXVzZWQgcmVncmVzc2lvbi4KY29tbWl0IDI3MDgyZTI2NTRkYyAoInho Y2k6IENsZWFyIHRoZSBob3N0IHNpZGUgdG9nZ2xlIG1hbnVhbGx5IHdoZW4KZW5kcG9pbnQgaXMg J3NvZnQgcmVzZXQnIikKClNpZ25lZC1vZmYtYnk6IE1hdGhpYXMgTnltYW4gPG1hdGhpYXMubnlt YW5AbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvdXNiL2hvc3QveGhjaS1yaW5nLmMgfCAg IDUgKystCiBkcml2ZXJzL3VzYi9ob3N0L3hoY2kuYyAgICAgIHwgMTA1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGRyaXZlcnMvdXNiL2hvc3QveGhjaS5oICAg ICAgfCAgIDIgKwogMyBmaWxlcyBjaGFuZ2VkLCA5NSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktcmluZy5jIGIvZHJpdmVy cy91c2IvaG9zdC94aGNpLXJpbmcuYwppbmRleCA4NjQ3NmM2Li45MWExYTgyIDEwMDY0NAotLS0g YS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktcmluZy5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhj aS1yaW5nLmMKQEAgLTE4MjksOSArMTgyOSwxMCBAQCBzdGF0aWMgdm9pZCB4aGNpX2NsZWFudXBf aGFsdGVkX2VuZHBvaW50KHN0cnVjdCB4aGNpX2hjZCAqeGhjaSwKIAogCXhoY2lfcXVldWVfcmVz ZXRfZXAoeGhjaSwgY29tbWFuZCwgc2xvdF9pZCwgZXBfaW5kZXgsIHJlc2V0X3R5cGUpOwogCi0J aWYgKHJlc2V0X3R5cGUgPT0gRVBfSEFSRF9SRVNFVCkKKwlpZiAocmVzZXRfdHlwZSA9PSBFUF9I QVJEX1JFU0VUKSB7CisJCWVwLT5lcF9zdGF0ZSB8PSBFUF9IQVJEX0NMRUFSX1RPR0dMRTsKIAkJ eGhjaV9jbGVhbnVwX3N0YWxsZWRfcmluZyh4aGNpLCBlcF9pbmRleCwgc3RyZWFtX2lkLCB0ZCk7 Ci0KKwl9CiAJeGhjaV9yaW5nX2NtZF9kYih4aGNpKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy91c2IvaG9zdC94aGNpLmMgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYwppbmRleCBmOWQ4YTMy Li4wNWIyMmI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYworKysgYi9kcml2 ZXJzL3VzYi9ob3N0L3hoY2kuYwpAQCAtMTM1Niw2ICsxMzU2LDExIEBAIHN0YXRpYyBpbnQgeGhj aV91cmJfZW5xdWV1ZShzdHJ1Y3QgdXNiX2hjZCAqaGNkLCBzdHJ1Y3QgdXJiICp1cmIsIGdmcF90 IG1lbV9mbGFnCiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gZnJlZV9wcml2OwogCX0KKwlpZiAo KmVwX3N0YXRlICYgRVBfU09GVF9DTEVBUl9UT0dHTEUpIHsKKwkJeGhjaV93YXJuKHhoY2ksICJD YW4ndCBlbnF1ZXVlIFVSQiB3aGlsZSBtYW51YWxseSBjbGVhcmluZyB0b2dnbGVcbiIpOworCQly ZXQgPSAtRUlOVkFMOworCQlnb3RvIGZyZWVfcHJpdjsKKwl9CiAKIAlzd2l0Y2ggKHVzYl9lbmRw b2ludF90eXBlKCZ1cmItPmVwLT5kZXNjKSkgewogCkBAIC0yODY5LDMzICsyODc0LDEwMyBAQCB2 b2lkIHhoY2lfY2xlYW51cF9zdGFsbGVkX3Jpbmcoc3RydWN0IHhoY2lfaGNkICp4aGNpLCB1bnNp Z25lZCBpbnQgZXBfaW5kZXgsCiAJfQogfQogCi0vKiBDYWxsZWQgd2hlbiBjbGVhcmluZyBoYWx0 ZWQgZGV2aWNlLiBUaGUgY29yZSBzaG91bGQgaGF2ZSBzZW50IHRoZSBjb250cm9sCi0gKiBtZXNz YWdlIHRvIGNsZWFyIHRoZSBkZXZpY2UgaGFsdCBjb25kaXRpb24uIFRoZSBob3N0IHNpZGUgb2Yg dGhlIGhhbHQgc2hvdWxkCi0gKiBhbHJlYWR5IGJlIGNsZWFyZWQgd2l0aCBhIHJlc2V0IGVuZHBv aW50IGNvbW1hbmQgaXNzdWVkIHdoZW4gdGhlIFNUQUxMIHR4Ci0gKiBldmVudCB3YXMgcmVjZWl2 ZWQuCisvKgorICogQ2FsbGVkIGFmdGVyIHVzYiBjb3JlIGlzc3VlcyBhIGNsZWFyIGhhbHQgY29u dHJvbCBtZXNzYWdlLgorICogVGhlIGhvc3Qgc2lkZSBvZiB0aGUgaGFsdCBzaG91bGQgYWxyZWFk eSBiZSBjbGVhcmVkIGJ5IGEgcmVzZXQgZW5kcG9pbnQKKyAqIGNvbW1hbmQgaXNzdWVkIHdoZW4g dGhlIFNUQUxMIGV2ZW50IHdhcyByZWNlaXZlZC4KICAqCi0gKiBDb250ZXh0OiBpbl9pbnRlcnJ1 cHQKKyAqIFRoZSByZXNldCBlbmRwb2ludCBjb21tYW5kIG1heSBvbmx5IGJlIGlzc3VlZCB0byBl bmRwb2ludHMgaW4gdGhlIGhhbHRlZAorICogc3RhdGUuIEZvciBzb2Z0d2FyZSB0aGF0IHdpc2hl cyB0byByZXNldCB0aGUgZGF0YSB0b2dnbGUgb3Igc2VxdWVuY2UgbnVtYmVyCisgKiBvZiBhbiBl bmRwb2ludCB0aGF0IGlzbid0IGluIHRoZSBoYWx0ZWQgc3RhdGUgdGhpcyBmdW5jdGlvbiB3aWxs IGlzc3VlIGEKKyAqIGNvbmZpZ3VyZSBlbmRwb2ludCBjb21tYW5kIHdpdGggdGhlIERyb3AgYW5k IEFkZCBiaXRzIHNldCBmb3IgdGhlIHRhcmdldAorICogZW5kcG9pbnQuIFJlZmVyIHRvIHRoZSBh ZGRpdGlvbmFsIG5vdGUgaW4geGhjaSBzcGNpZmljYXRpb24gc2VjdGlvbiA0LjYuOC4KICAqLwog CiBzdGF0aWMgdm9pZCB4aGNpX2VuZHBvaW50X3Jlc2V0KHN0cnVjdCB1c2JfaGNkICpoY2QsCi0J CXN0cnVjdCB1c2JfaG9zdF9lbmRwb2ludCAqZXApCisJCXN0cnVjdCB1c2JfaG9zdF9lbmRwb2lu dCAqaG9zdF9lcCkKIHsKIAlzdHJ1Y3QgeGhjaV9oY2QgKnhoY2k7CisJc3RydWN0IHVzYl9kZXZp Y2UgKnVkZXY7CisJc3RydWN0IHhoY2lfdmlydF9kZXZpY2UgKnZkZXY7CisJc3RydWN0IHhoY2lf dmlydF9lcCAqZXA7CisJc3RydWN0IHhoY2lfaW5wdXRfY29udHJvbF9jdHggKmN0cmxfY3R4Owor CXN0cnVjdCB4aGNpX2NvbW1hbmQgKnN0b3BfY21kLCAqY2ZnX2NtZDsKKwl1bnNpZ25lZCBpbnQg ZXBfaW5kZXg7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1MzIgZXBfZmxhZzsKIAogCXhoY2kg PSBoY2RfdG9feGhjaShoY2QpOworCWlmICghaG9zdF9lcC0+aGNwcml2KQorCQlyZXR1cm47CisJ dWRldiA9IChzdHJ1Y3QgdXNiX2RldmljZSAqKSBob3N0X2VwLT5oY3ByaXY7CisJdmRldiA9IHho Y2ktPmRldnNbdWRldi0+c2xvdF9pZF07CisJZXBfaW5kZXggPSB4aGNpX2dldF9lbmRwb2ludF9p bmRleCgmaG9zdF9lcC0+ZGVzYyk7CisJZXAgPSAmdmRldi0+ZXBzW2VwX2luZGV4XTsKKworCS8q IEJhaWwgb3V0IGlmIHRvZ2dsZSBpcyBhbHJlYWR5IGJlaW5nIGNsZWFyZWQgYnkgYSBlbmRwb2lu dCByZXNldCAqLworCWlmIChlcC0+ZXBfc3RhdGUgJiBFUF9IQVJEX0NMRUFSX1RPR0dMRSkgewor CQllcC0+ZXBfc3RhdGUgJj0gfkVQX0hBUkRfQ0xFQVJfVE9HR0xFOworCQlyZXR1cm47CisJfQor CS8qIE9ubHkgaW50ZXJydXB0IGFuZCBidWxrIGVwJ3MgdXNlIGRhdGEgdG9nZ2xlLCBVU0IyIHNw ZWMgNS41LjQtPiAqLworCWlmICh1c2JfZW5kcG9pbnRfeGZlcl9jb250cm9sKCZob3N0X2VwLT5k ZXNjKSB8fAorCSAgICB1c2JfZW5kcG9pbnRfeGZlcl9pc29jKCZob3N0X2VwLT5kZXNjKSkKKwkJ cmV0dXJuOworCisJZXBfZmxhZyA9IHhoY2lfZ2V0X2VuZHBvaW50X2ZsYWcoJmhvc3RfZXAtPmRl c2MpOworCisJaWYgKGVwX2ZsYWcgPT0gU0xPVF9GTEFHIHx8IGVwX2ZsYWcgPT0gRVAwX0ZMQUcp CisJCXJldHVybjsKKworCXN0b3BfY21kID0geGhjaV9hbGxvY19jb21tYW5kKHhoY2ksIHRydWUs IEdGUF9OT1dBSVQpOworCWlmICghc3RvcF9jbWQpCisJCXJldHVybjsKKworCWNmZ19jbWQgPSB4 aGNpX2FsbG9jX2NvbW1hbmRfd2l0aF9jdHgoeGhjaSwgdHJ1ZSwgR0ZQX05PV0FJVCk7CisJaWYg KCFjZmdfY21kKQorCQlnb3RvIGNsZWFudXA7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmeGhjaS0+ bG9jaywgZmxhZ3MpOworCisJLyogYmxvY2sgcXVldWluZyBuZXcgdHJicyBhbmQgcmluZ2luZyBl cCBkb29yYmVsbCAqLworCWVwLT5lcF9zdGF0ZSB8PSBFUF9TT0ZUX0NMRUFSX1RPR0dMRTsKIAog CS8qCi0JICogV2UgbWlnaHQgbmVlZCB0byBpbXBsZW1lbnQgdGhlIGNvbmZpZyBlcCBjbWQgaW4g eGhjaSA0LjguMSBub3RlOgotCSAqIFRoZSBSZXNldCBFbmRwb2ludCBDb21tYW5kIG1heSBvbmx5 IGJlIGlzc3VlZCB0byBlbmRwb2ludHMgaW4gdGhlCi0JICogSGFsdGVkIHN0YXRlLiBJZiBzb2Z0 d2FyZSB3aXNoZXMgcmVzZXQgdGhlIERhdGEgVG9nZ2xlIG9yIFNlcXVlbmNlCi0JICogTnVtYmVy IG9mIGFuIGVuZHBvaW50IHRoYXQgaXNuJ3QgaW4gdGhlIEhhbHRlZCBzdGF0ZSwgdGhlbiBzb2Z0 d2FyZQotCSAqIG1heSBpc3N1ZSBhIENvbmZpZ3VyZSBFbmRwb2ludCBDb21tYW5kIHdpdGggdGhl IERyb3AgYW5kIEFkZCBiaXRzIHNldAotCSAqIGZvciB0aGUgdGFyZ2V0IGVuZHBvaW50LiB0aGF0 IGlzIGluIHRoZSBTdG9wcGVkIHN0YXRlLgorCSAqIE1ha2Ugc3VyZSBlbmRwb2ludCByaW5nIGlz IGVtcHR5IGJlZm9yZSByZXNldHRpbmcgdGhlIHRvZ2dsZS9zZXEuCisJICogRHJpdmVyIGlzIHJl cXVpcmVkIHRvIHN5bmNocm9ub3VzbHkgY2FuY2VsIGFsbCB0cmFuc2ZlciByZXF1ZXN0LgorCSAq IFN0b3AgdGhlIGVuZHBvaW50IHRvIGZvcmNlIHhIQyB0byB1cGRhdGUgdGhlIG91dHB1dCBjb250 ZXh0CiAJICovCiAKLQkvKiBGb3Igbm93IGp1c3QgcHJpbnQgZGVidWcgdG8gZm9sbG93IHRoZSBz aXR1YXRpb24gKi8KLQl4aGNpX2RiZyh4aGNpLCAiRW5kcG9pbnQgMHgleCBlcCByZXNldCBjYWxs YmFjayBjYWxsZWRcbiIsCi0JCSBlcC0+ZGVzYy5iRW5kcG9pbnRBZGRyZXNzKTsKKwlpZiAoIWxp c3RfZW1wdHkoJmVwLT5yaW5nLT50ZF9saXN0KSkgeworCQlkZXZfZXJyKCZ1ZGV2LT5kZXYsICJF UCBub3QgZW1wdHksIHJlZnVzZSByZXNldFxuIik7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JnhoY2ktPmxvY2ssIGZsYWdzKTsKKwkJZ290byBjbGVhbnVwOworCX0KKwl4aGNpX3F1ZXVlX3N0 b3BfZW5kcG9pbnQoeGhjaSwgc3RvcF9jbWQsIHVkZXYtPnNsb3RfaWQsIGVwX2luZGV4LCAwKTsK Kwl4aGNpX3JpbmdfY21kX2RiKHhoY2kpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnhoY2kt PmxvY2ssIGZsYWdzKTsKKworCXdhaXRfZm9yX2NvbXBsZXRpb24oc3RvcF9jbWQtPmNvbXBsZXRp b24pOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnhoY2ktPmxvY2ssIGZsYWdzKTsKKworCS8qIGNv bmZpZyBlcCBjb21tYW5kIGNsZWFycyB0b2dnbGUgaWYgYWRkIGFuZCBkcm9wIGVwIGZsYWdzIGFy ZSBzZXQgKi8KKwljdHJsX2N0eCA9IHhoY2lfZ2V0X2lucHV0X2NvbnRyb2xfY3R4KGNmZ19jbWQt PmluX2N0eCk7CisJeGhjaV9zZXR1cF9pbnB1dF9jdHhfZm9yX2NvbmZpZ19lcCh4aGNpLCBjZmdf Y21kLT5pbl9jdHgsIHZkZXYtPm91dF9jdHgsCisJCQkJCSAgIGN0cmxfY3R4LCBlcF9mbGFnLCBl cF9mbGFnKTsKKwl4aGNpX2VuZHBvaW50X2NvcHkoeGhjaSwgY2ZnX2NtZC0+aW5fY3R4LCB2ZGV2 LT5vdXRfY3R4LCBlcF9pbmRleCk7CisKKwl4aGNpX3F1ZXVlX2NvbmZpZ3VyZV9lbmRwb2ludCh4 aGNpLCBjZmdfY21kLCBjZmdfY21kLT5pbl9jdHgtPmRtYSwKKwkJCQkgICAgICB1ZGV2LT5zbG90 X2lkLCBmYWxzZSk7CisJeGhjaV9yaW5nX2NtZF9kYih4aGNpKTsKKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZ4aGNpLT5sb2NrLCBmbGFncyk7CisKKwl3YWl0X2Zvcl9jb21wbGV0aW9uKGNmZ19j bWQtPmNvbXBsZXRpb24pOworCisJZXAtPmVwX3N0YXRlICY9IH5FUF9TT0ZUX0NMRUFSX1RPR0dM RTsKKwl4aGNpX2ZyZWVfY29tbWFuZCh4aGNpLCBjZmdfY21kKTsKK2NsZWFudXA6CisJeGhjaV9m cmVlX2NvbW1hbmQoeGhjaSwgc3RvcF9jbWQpOwogfQogCiBzdGF0aWMgaW50IHhoY2lfY2hlY2tf c3RyZWFtc19lbmRwb2ludChzdHJ1Y3QgeGhjaV9oY2QgKnhoY2ksCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3VzYi9ob3N0L3hoY2kuaCBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5oCmluZGV4IGU0ZDdk M2QuLjlmMjM2ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5oCisrKyBiL2Ry aXZlcnMvdXNiL2hvc3QveGhjaS5oCkBAIC05MjEsNiArOTIxLDggQEAgc3RydWN0IHhoY2lfdmly dF9lcCB7CiAjZGVmaW5lIEVQX0hBU19TVFJFQU1TCQkoMSA8PCA0KQogLyogVHJhbnNpdGlvbmlu ZyB0aGUgZW5kcG9pbnQgdG8gbm90IHVzaW5nIHN0cmVhbXMsIGRvbid0IGVucXVldWUgVVJCcyAq LwogI2RlZmluZSBFUF9HRVRUSU5HX05PX1NUUkVBTVMJKDEgPDwgNSkKKyNkZWZpbmUgRVBfSEFS RF9DTEVBUl9UT0dHTEUJKDEgPDwgNikKKyNkZWZpbmUgRVBfU09GVF9DTEVBUl9UT0dHTEUJKDEg PDwgNykKIAkvKiAtLS0tICBSZWxhdGVkIHRvIFVSQiBjYW5jZWxsYXRpb24gLS0tLSAqLwogCXN0 cnVjdCBsaXN0X2hlYWQJY2FuY2VsbGVkX3RkX2xpc3Q7CiAJLyogV2F0Y2hkb2cgdGltZXIgZm9y IHN0b3AgZW5kcG9pbnQgY29tbWFuZCB0byBjYW5jZWwgVVJCcyAqLwo=