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/3] usb: xhci: tegra: Add runtime PM support From: Jon Hunter Message-Id: <1524754750-3633-2-git-send-email-jonathanh@nvidia.com> Date: Thu, 26 Apr 2018 15:59:09 +0100 To: Mathias Nyman , Greg Kroah-Hartman , Thierry Reding Cc: linux-usb@vger.kernel.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org, Jon Hunter List-ID: QWRkIHJ1bnRpbWUgUE0gc3VwcG9ydCB0byB0aGUgVGVncmEgWEhDSSBkcml2ZXIgYW5kIG1vdmUg dGhlIGZ1bmN0aW9uCmNhbGxzIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBjbG9ja3MsIHJlZ3VsYXRv cnMgYW5kIFBIWSBpbnRvIHRoZSBydW50aW1lClBNIGNhbGxiYWNrcy4KClNpZ25lZC1vZmYtYnk6 IEpvbiBIdW50ZXIgPGpvbmF0aGFuaEBudmlkaWEuY29tPgotLS0KCkNoYW5nZXMgc2luY2UgVjE6 Ci0gUmUtd29ya2VkIGNoYW5nZSB0byBoYW5kbGUgY2FzZSB3aGVyZSBydW50aW1lIFBNIGlzIGRp c2FibGVkLgoKIGRyaXZlcnMvdXNiL2hvc3QveGhjaS10ZWdyYS5jIHwgODkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYzIGluc2Vy dGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qv eGhjaS10ZWdyYS5jIGIvZHJpdmVycy91c2IvaG9zdC94aGNpLXRlZ3JhLmMKaW5kZXggMDJiMGIy NGZhYTU4Li44NWYyMzgxODgzYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS10 ZWdyYS5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS10ZWdyYS5jCkBAIC0xOCw2ICsxOCw3 IEBACiAjaW5jbHVkZSA8bGludXgvcGh5L3RlZ3JhL3h1c2IuaD4KICNpbmNsdWRlIDxsaW51eC9w bGF0Zm9ybV9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51eC9wbS5oPgorI2luY2x1ZGUgPGxpbnV4 L3BtX3J1bnRpbWUuaD4KICNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KICNp bmNsdWRlIDxsaW51eC9yZXNldC5oPgogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KQEAgLTc2MSw2 ICs3NjIsNTAgQEAgc3RhdGljIHZvaWQgdGVncmFfeHVzYl9waHlfZGlzYWJsZShzdHJ1Y3QgdGVn cmFfeHVzYiAqdGVncmEpCiAJfQogfQogCitzdGF0aWMgaW50IHRlZ3JhX3h1c2JfcnVudGltZV9z dXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgdGVncmFfeHVzYiAqdGVncmEg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCXRlZ3JhX3h1c2JfcGh5X2Rpc2FibGUodGVncmEp OworCXJlZ3VsYXRvcl9idWxrX2Rpc2FibGUodGVncmEtPnNvYy0+bnVtX3N1cHBsaWVzLCB0ZWdy YS0+c3VwcGxpZXMpOworCXRlZ3JhX3h1c2JfY2xrX2Rpc2FibGUodGVncmEpOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgdGVncmFfeHVzYl9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2 aWNlICpkZXYpCit7CisJc3RydWN0IHRlZ3JhX3h1c2IgKnRlZ3JhID0gZGV2X2dldF9kcnZkYXRh KGRldik7CisJaW50IGVycjsKKworCWVyciA9IHRlZ3JhX3h1c2JfY2xrX2VuYWJsZSh0ZWdyYSk7 CisJaWYgKGVycikgeworCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBlbmFibGUgY2xvY2tzOiAl ZFxuIiwgZXJyKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwllcnIgPSByZWd1bGF0b3JfYnVsa19l bmFibGUodGVncmEtPnNvYy0+bnVtX3N1cHBsaWVzLCB0ZWdyYS0+c3VwcGxpZXMpOworCWlmIChl cnIpIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZW5hYmxlIHJlZ3VsYXRvcnM6ICVkXG4i LCBlcnIpOworCQlnb3RvIGRpc2FibGVfY2xrOworCX0KKworCWVyciA9IHRlZ3JhX3h1c2JfcGh5 X2VuYWJsZSh0ZWdyYSk7CisJaWYgKGVyciA8IDApIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQg dG8gZW5hYmxlIFBIWXM6ICVkXG4iLCBlcnIpOworCQlnb3RvIGRpc2FibGVfcmVndWxhdG9yOwor CX0KKworCXJldHVybiAwOworCitkaXNhYmxlX3JlZ3VsYXRvcjoKKwlyZWd1bGF0b3JfYnVsa19k aXNhYmxlKHRlZ3JhLT5zb2MtPm51bV9zdXBwbGllcywgdGVncmEtPnN1cHBsaWVzKTsKK2Rpc2Fi bGVfY2xrOgorCXRlZ3JhX3h1c2JfY2xrX2Rpc2FibGUodGVncmEpOworCXJldHVybiBlcnI7Cit9 CisKKwogc3RhdGljIGludCB0ZWdyYV94dXNiX2xvYWRfZmlybXdhcmUoc3RydWN0IHRlZ3JhX3h1 c2IgKnRlZ3JhKQogewogCXVuc2lnbmVkIGludCBjb2RlX3RhZ19ibG9ja3MsIGNvZGVfc2l6ZV9i bG9ja3MsIGNvZGVfYmxvY2tzOwpAQCAtMTA2NywyMiArMTExMiwxNSBAQCBzdGF0aWMgaW50IHRl Z3JhX3h1c2JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkgKi8KIAlwbGF0 Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB0ZWdyYSk7CiAKLQllcnIgPSB0ZWdyYV94dXNiX2Nsa19l bmFibGUodGVncmEpOwotCWlmIChlcnIpIHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVk IHRvIGVuYWJsZSBjbG9ja3M6ICVkXG4iLCBlcnIpOwotCQlnb3RvIHB1dF91c2IyOwotCX0KKwlw bV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsKKwlpZiAoIXBtX3J1bnRpbWVfZW5hYmxlZCgm cGRldi0+ZGV2KSkKKwkJZXJyID0gcG1fcnVudGltZV9nZXRfc3luYygmcGRldi0+ZGV2KTsKKwll bHNlCisJCWVyciA9IHRlZ3JhX3h1c2JfcnVudGltZV9yZXN1bWUoJnBkZXYtPmRldik7CiAKLQll cnIgPSByZWd1bGF0b3JfYnVsa19lbmFibGUodGVncmEtPnNvYy0+bnVtX3N1cHBsaWVzLCB0ZWdy YS0+c3VwcGxpZXMpOwotCWlmIChlcnIpIHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVk IHRvIGVuYWJsZSByZWd1bGF0b3JzOiAlZFxuIiwgZXJyKTsKLQkJZ290byBkaXNhYmxlX2NsazsK LQl9Ci0KLQllcnIgPSB0ZWdyYV94dXNiX3BoeV9lbmFibGUodGVncmEpOwogCWlmIChlcnIgPCAw KSB7Ci0JCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBlbmFibGUgUEhZczogJWRcbiIs IGVycik7Ci0JCWdvdG8gZGlzYWJsZV9yZWd1bGF0b3I7CisJCWRldl9lcnIoJnBkZXYtPmRldiwg ImZhaWxlZCB0byBlbmFibGUgZGV2aWNlOiAlZFxuIiwgZXJyKTsKKwkJZ290byBkaXNhYmxlX3Jw bTsKIAl9CiAKIAl0ZWdyYV94dXNiX2lwZnNfY29uZmlnKHRlZ3JhLCByZWdzKTsKQEAgLTEwOTAs NyArMTEyOCw3IEBAIHN0YXRpYyBpbnQgdGVncmFfeHVzYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQogCWVyciA9IHRlZ3JhX3h1c2JfbG9hZF9maXJtd2FyZSh0ZWdyYSk7CiAJ aWYgKGVyciA8IDApIHsKIAkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGxvYWQgZmly bXdhcmU6ICVkXG4iLCBlcnIpOwotCQlnb3RvIGRpc2FibGVfcGh5OworCQlnb3RvIHB1dF9ycG07 CiAJfQogCiAJdGVncmEtPmhjZC0+cmVncyA9IHRlZ3JhLT5yZWdzOwpAQCAtMTEwMCw3ICsxMTM4 LDcgQEAgc3RhdGljIGludCB0ZWdyYV94dXNiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiAJZXJyID0gdXNiX2FkZF9oY2QodGVncmEtPmhjZCwgdGVncmEtPnhoY2lfaXJxLCBJ UlFGX1NIQVJFRCk7CiAJaWYgKGVyciA8IDApIHsKIAkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFp bGVkIHRvIGFkZCBVU0IgSENEOiAlZFxuIiwgZXJyKTsKLQkJZ290byBkaXNhYmxlX3BoeTsKKwkJ Z290byBwdXRfcnBtOwogCX0KIAogCWRldmljZV93YWtldXBfZW5hYmxlKHRlZ3JhLT5oY2QtPnNl bGYuY29udHJvbGxlcik7CkBAIC0xMTU1LDEzICsxMTkzLDExIEBAIHN0YXRpYyBpbnQgdGVncmFf eHVzYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXVzYl9wdXRfaGNkKHho Y2ktPnNoYXJlZF9oY2QpOwogcmVtb3ZlX3VzYjI6CiAJdXNiX3JlbW92ZV9oY2QodGVncmEtPmhj ZCk7Ci1kaXNhYmxlX3BoeToKLQl0ZWdyYV94dXNiX3BoeV9kaXNhYmxlKHRlZ3JhKTsKLWRpc2Fi bGVfcmVndWxhdG9yOgotCXJlZ3VsYXRvcl9idWxrX2Rpc2FibGUodGVncmEtPnNvYy0+bnVtX3N1 cHBsaWVzLCB0ZWdyYS0+c3VwcGxpZXMpOwotZGlzYWJsZV9jbGs6Ci0JdGVncmFfeHVzYl9jbGtf ZGlzYWJsZSh0ZWdyYSk7Ci1wdXRfdXNiMjoKK3B1dF9ycG06CisJaWYgKCFwbV9ydW50aW1lX3N0 YXR1c19zdXNwZW5kZWQoJnBkZXYtPmRldikpCisJCXRlZ3JhX3h1c2JfcnVudGltZV9zdXNwZW5k KCZwZGV2LT5kZXYpOworZGlzYWJsZV9ycG06CisJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5k ZXYpOwogCXVzYl9wdXRfaGNkKHRlZ3JhLT5oY2QpOwogcHV0X3BhZGN0bDoKIAl0ZWdyYV94dXNi X3BhZGN0bF9wdXQodGVncmEtPnBhZGN0bCk7CkBAIC0xMTgxLDkgKzEyMTcsOCBAQCBzdGF0aWMg aW50IHRlZ3JhX3h1c2JfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJZG1h X2ZyZWVfY29oZXJlbnQoJnBkZXYtPmRldiwgdGVncmEtPmZ3LnNpemUsIHRlZ3JhLT5mdy52aXJ0 LAogCQkJICB0ZWdyYS0+ZncucGh5cyk7CiAKLQl0ZWdyYV94dXNiX3BoeV9kaXNhYmxlKHRlZ3Jh KTsKLQlyZWd1bGF0b3JfYnVsa19kaXNhYmxlKHRlZ3JhLT5zb2MtPm51bV9zdXBwbGllcywgdGVn cmEtPnN1cHBsaWVzKTsKLQl0ZWdyYV94dXNiX2Nsa19kaXNhYmxlKHRlZ3JhKTsKKwlwbV9ydW50 aW1lX3B1dF9zeW5jKCZwZGV2LT5kZXYpOworCXBtX3J1bnRpbWVfZGlzYWJsZSgmcGRldi0+ZGV2 KTsKIAogCXRlZ3JhX3h1c2JfcGFkY3RsX3B1dCh0ZWdyYS0+cGFkY3RsKTsKIApAQCAtMTIxMSw2 ICsxMjQ2LDggQEAgc3RhdGljIGludCB0ZWdyYV94dXNiX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpk ZXYpCiAjZW5kaWYKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIHRlZ3JhX3h1c2Jf cG1fb3BzID0geworCVNFVF9SVU5USU1FX1BNX09QUyh0ZWdyYV94dXNiX3J1bnRpbWVfc3VzcGVu ZCwKKwkJCSAgIHRlZ3JhX3h1c2JfcnVudGltZV9yZXN1bWUsIE5VTEwpCiAJU0VUX1NZU1RFTV9T TEVFUF9QTV9PUFModGVncmFfeHVzYl9zdXNwZW5kLCB0ZWdyYV94dXNiX3Jlc3VtZSkKIH07CiAK