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: [2/3] usb: xhci: tegra: Add runtime PM support From: Jon Hunter Message-Id: <1518626085-29102-2-git-send-email-jonathanh@nvidia.com> Date: Wed, 14 Feb 2018 16:34:44 +0000 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 IEpvbiBIdW50ZXIgPGpvbmF0aGFuaEBudmlkaWEuY29tPgotLS0KIGRyaXZlcnMvdXNiL2hvc3Qv eGhjaS10ZWdyYS5jIHwgODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS10ZWdyYS5jIGIvZHJpdmVycy91c2Iv aG9zdC94aGNpLXRlZ3JhLmMKaW5kZXggMDJiMGIyNGZhYTU4Li40MmFhNjc4NThiNTMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS10ZWdyYS5jCisrKyBiL2RyaXZlcnMvdXNiL2hv c3QveGhjaS10ZWdyYS5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSA8bGludXgvcGh5L3Rl Z3JhL3h1c2IuaD4KICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KICNpbmNsdWRl IDxsaW51eC9wbS5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KICNpbmNsdWRlIDxs aW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KICNpbmNsdWRlIDxsaW51eC9yZXNldC5oPgogI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4KQEAgLTEwNjcsMjIgKzEwNjgsMTIgQEAgc3RhdGljIGludCB0 ZWdyYV94dXNiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJICovCiAJcGxh dGZvcm1fc2V0X2RydmRhdGEocGRldiwgdGVncmEpOwogCi0JZXJyID0gdGVncmFfeHVzYl9jbGtf ZW5hYmxlKHRlZ3JhKTsKLQlpZiAoZXJyKSB7Ci0JCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxl ZCB0byBlbmFibGUgY2xvY2tzOiAlZFxuIiwgZXJyKTsKLQkJZ290byBwdXRfdXNiMjsKLQl9Ci0K LQllcnIgPSByZWd1bGF0b3JfYnVsa19lbmFibGUodGVncmEtPnNvYy0+bnVtX3N1cHBsaWVzLCB0 ZWdyYS0+c3VwcGxpZXMpOwotCWlmIChlcnIpIHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFp bGVkIHRvIGVuYWJsZSByZWd1bGF0b3JzOiAlZFxuIiwgZXJyKTsKLQkJZ290byBkaXNhYmxlX2Ns azsKLQl9CisJcG1fcnVudGltZV9lbmFibGUoJnBkZXYtPmRldik7CiAKLQllcnIgPSB0ZWdyYV94 dXNiX3BoeV9lbmFibGUodGVncmEpOworCWVyciA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoJnBkZXYt PmRldik7CiAJaWYgKGVyciA8IDApIHsKLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRv IGVuYWJsZSBQSFlzOiAlZFxuIiwgZXJyKTsKLQkJZ290byBkaXNhYmxlX3JlZ3VsYXRvcjsKKwkJ ZGV2X2VycigmcGRldi0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBkZXZpY2U6ICVkXG4iLCBlcnIp OworCQlnb3RvIGRpc2FibGVfcnBtOwogCX0KIAogCXRlZ3JhX3h1c2JfaXBmc19jb25maWcodGVn cmEsIHJlZ3MpOwpAQCAtMTA5MCw3ICsxMDgxLDcgQEAgc3RhdGljIGludCB0ZWdyYV94dXNiX3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJZXJyID0gdGVncmFfeHVzYl9sb2Fk X2Zpcm13YXJlKHRlZ3JhKTsKIAlpZiAoZXJyIDwgMCkgewogCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJmYWlsZWQgdG8gbG9hZCBmaXJtd2FyZTogJWRcbiIsIGVycik7Ci0JCWdvdG8gZGlzYWJsZV9w aHk7CisJCWdvdG8gcHV0X3JwbTsKIAl9CiAKIAl0ZWdyYS0+aGNkLT5yZWdzID0gdGVncmEtPnJl Z3M7CkBAIC0xMTAwLDcgKzEwOTEsNyBAQCBzdGF0aWMgaW50IHRlZ3JhX3h1c2JfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAllcnIgPSB1c2JfYWRkX2hjZCh0ZWdyYS0+aGNk LCB0ZWdyYS0+eGhjaV9pcnEsIElSUUZfU0hBUkVEKTsKIAlpZiAoZXJyIDwgMCkgewogCQlkZXZf ZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gYWRkIFVTQiBIQ0Q6ICVkXG4iLCBlcnIpOwotCQln b3RvIGRpc2FibGVfcGh5OworCQlnb3RvIHB1dF9ycG07CiAJfQogCiAJZGV2aWNlX3dha2V1cF9l bmFibGUodGVncmEtPmhjZC0+c2VsZi5jb250cm9sbGVyKTsKQEAgLTExNTUsMTMgKzExNDYsMTAg QEAgc3RhdGljIGludCB0ZWdyYV94dXNiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpCiAJdXNiX3B1dF9oY2QoeGhjaS0+c2hhcmVkX2hjZCk7CiByZW1vdmVfdXNiMjoKIAl1c2Jf cmVtb3ZlX2hjZCh0ZWdyYS0+aGNkKTsKLWRpc2FibGVfcGh5OgotCXRlZ3JhX3h1c2JfcGh5X2Rp c2FibGUodGVncmEpOwotZGlzYWJsZV9yZWd1bGF0b3I6Ci0JcmVndWxhdG9yX2J1bGtfZGlzYWJs ZSh0ZWdyYS0+c29jLT5udW1fc3VwcGxpZXMsIHRlZ3JhLT5zdXBwbGllcyk7Ci1kaXNhYmxlX2Ns azoKLQl0ZWdyYV94dXNiX2Nsa19kaXNhYmxlKHRlZ3JhKTsKLXB1dF91c2IyOgorcHV0X3JwbToK KwlwbV9ydW50aW1lX3B1dF9zeW5jKCZwZGV2LT5kZXYpOworZGlzYWJsZV9ycG06CisJcG1fcnVu dGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwogCXVzYl9wdXRfaGNkKHRlZ3JhLT5oY2QpOwogcHV0 X3BhZGN0bDoKIAl0ZWdyYV94dXNiX3BhZGN0bF9wdXQodGVncmEtPnBhZGN0bCk7CkBAIC0xMTgx LDEzICsxMTY5LDU1IEBAIHN0YXRpYyBpbnQgdGVncmFfeHVzYl9yZW1vdmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikKIAlkbWFfZnJlZV9jb2hlcmVudCgmcGRldi0+ZGV2LCB0ZWdyYS0+ Zncuc2l6ZSwgdGVncmEtPmZ3LnZpcnQsCiAJCQkgIHRlZ3JhLT5mdy5waHlzKTsKIAorCXBtX3J1 bnRpbWVfcHV0X3N5bmMoJnBkZXYtPmRldik7CisJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5k ZXYpOworCisJdGVncmFfeHVzYl9wYWRjdGxfcHV0KHRlZ3JhLT5wYWRjdGwpOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgdGVncmFfeHVzYl9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRl dmljZSAqZGV2KQoreworCXN0cnVjdCB0ZWdyYV94dXNiICp0ZWdyYSA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOworCiAJdGVncmFfeHVzYl9waHlfZGlzYWJsZSh0ZWdyYSk7CiAJcmVndWxhdG9yX2J1 bGtfZGlzYWJsZSh0ZWdyYS0+c29jLT5udW1fc3VwcGxpZXMsIHRlZ3JhLT5zdXBwbGllcyk7CiAJ dGVncmFfeHVzYl9jbGtfZGlzYWJsZSh0ZWdyYSk7CiAKLQl0ZWdyYV94dXNiX3BhZGN0bF9wdXQo dGVncmEtPnBhZGN0bCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdGVncmFfeHVzYl9y dW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IHRlZ3JhX3h1c2Ig KnRlZ3JhID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJaW50IGVycjsKKworCWVyciA9IHRlZ3Jh X3h1c2JfY2xrX2VuYWJsZSh0ZWdyYSk7CisJaWYgKGVycikgeworCQlkZXZfZXJyKGRldiwgImZh aWxlZCB0byBlbmFibGUgY2xvY2tzOiAlZFxuIiwgZXJyKTsKKwkJcmV0dXJuIGVycjsKKwl9CisK KwllcnIgPSByZWd1bGF0b3JfYnVsa19lbmFibGUodGVncmEtPnNvYy0+bnVtX3N1cHBsaWVzLCB0 ZWdyYS0+c3VwcGxpZXMpOworCWlmIChlcnIpIHsKKwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8g ZW5hYmxlIHJlZ3VsYXRvcnM6ICVkXG4iLCBlcnIpOworCQlnb3RvIGRpc2FibGVfY2xrOworCX0K KworCWVyciA9IHRlZ3JhX3h1c2JfcGh5X2VuYWJsZSh0ZWdyYSk7CisJaWYgKGVyciA8IDApIHsK KwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZW5hYmxlIFBIWXM6ICVkXG4iLCBlcnIpOworCQln b3RvIGRpc2FibGVfcmVndWxhdG9yOworCX0KIAogCXJldHVybiAwOworCitkaXNhYmxlX3JlZ3Vs YXRvcjoKKwlyZWd1bGF0b3JfYnVsa19kaXNhYmxlKHRlZ3JhLT5zb2MtPm51bV9zdXBwbGllcywg dGVncmEtPnN1cHBsaWVzKTsKK2Rpc2FibGVfY2xrOgorCXRlZ3JhX3h1c2JfY2xrX2Rpc2FibGUo dGVncmEpOworCXJldHVybiBlcnI7CiB9CiAKICNpZmRlZiBDT05GSUdfUE1fU0xFRVAKQEAgLTEy MTEsNiArMTI0MSw4IEBAIHN0YXRpYyBpbnQgdGVncmFfeHVzYl9yZXN1bWUoc3RydWN0IGRldmlj ZSAqZGV2KQogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyB0ZWdyYV94 dXNiX3BtX29wcyA9IHsKKwlTRVRfUlVOVElNRV9QTV9PUFModGVncmFfeHVzYl9ydW50aW1lX3N1 c3BlbmQsCisJCQkgICB0ZWdyYV94dXNiX3J1bnRpbWVfcmVzdW1lLCBOVUxMKQogCVNFVF9TWVNU RU1fU0xFRVBfUE1fT1BTKHRlZ3JhX3h1c2Jfc3VzcGVuZCwgdGVncmFfeHVzYl9yZXN1bWUpCiB9 OwogCg==