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,3/3] usb: xhci: tegra: Add support for managing powergates From: Jon Hunter Message-Id: <1524754750-3633-3-git-send-email-jonathanh@nvidia.com> Date: Thu, 26 Apr 2018 15:59:10 +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: VGhlIFRlZ3JhIFhIQ0kgY29udHJvbGxlciByZXF1aXJlcyB0aGF0IHRoZSBYVVNCQSAoZm9yIHN1 cGVyc3BlZWQpIGFuZApYVVNCQyAoZm9yIGhvc3QpIHBvd2VyLWRvbWFpbnMgYXJlIGVuYWJsZWQu IENvbW1pdCA4ZGYxMjc0NTZmMjkKKCJzb2MvdGVncmE6IHBtYzogRW5hYmxlIFhVU0IgcGFydGl0 aW9ucyBvbiBib290Iikgd2FzIGFkZGVkIHRvIGZvcmNlCm9uIHRoZXNlIHBvd2VyLWRvbWFpbnMg aWYgdGhlIFhIQ0kgZHJpdmVyIGlzIGVuYWJsZWQgd2hpbGUgcHJvcGVyCnBvd2VyLWRvbWFpbiBz dXBwb3J0IGlzIGFkZGVkLCB0byBlbnN1cmUgdGhlIGRldmljZSBkaWQgbm90IGhhbmcgb24KYm9v dC4gSG93ZXZlciwgcmF0aGVyIHRoYW4gZm9yY2luZyBvbiB0aGVzZSBwb3dlci1kb21haW5zIGlu IHRoZSBQTUMKZHJpdmVyIHdlIGNhbiB1c2UgdGhlIGxlZ2FjeSBUZWdyYSBwb3dlcmdhdGUgQVBJ cyB0byB0dXJuIG9uIHRoZXNlCnBvd2VyLWRvbWFpbnMgZHVyaW5nIHRoZSBwcm9iZSBvZiB0aGUg VGVncmEgWEhDSSBkcml2ZXIuCgpJbiB0aGUgbmVhciBmdXR1cmUgd2UgcGxhbiB0byBtb3ZlIHRo ZSBUZWdyYSBYSENJIGRyaXZlciB0byB1c2UgdGhlCmdlbmVyaWMgUE0gZG9tYWluIGZyYW1ld29y ayBmb3IgcG93ZXItZG9tYWlucyBhbmQgc28gdG8gcHJlcGFyZSBmb3IKdGhpcyBvbmx5IHVzZSB0 aGUgbGVnYWN5IFRlZ3JhIHBvd2VyZ2F0ZSBBUEkgaWYgdGhlcmUgaXMgbm90IFBNCmRvbWFpbiBh c3NvY2lhdGVkIHdpdGggZGV2aWNlIChpZS4gZGV2LnBtX2RvbWFpbiBpcyBOVUxMKS4gUGxlYXNl Cm5vdGUgdGhhdCBpbiB0aGUgZnV0dXJlIHRoZSBzdXBlcnNwZWVkIGFuZCBob3N0IHJlc2V0cyB3 aWxsIGJlIGhhbmRsZWQKYnkgdGhlIGdlbmVyaWMgUE0gZG9tYWluIHByb3ZpZGVyIGFuZCBzbyB0 aGVzZSBhcmUgb25seSB0aGVzZSBhcmUgb25seQpuZWVkZWQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhl cmUgaXMgbm8gZ2VuZXJpYyBQTSBkb21haW4uCgpTaWduZWQtb2ZmLWJ5OiBKb24gSHVudGVyIDxq b25hdGhhbmhAbnZpZGlhLmNvbT4KLS0tCgpDaGFuZ2VzIHNpbmNlIFYxOgotIE5vbmUKCiBkcml2 ZXJzL3VzYi9ob3N0L3hoY2ktdGVncmEuYyB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCAxOSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktdGVncmEuYyBi L2RyaXZlcnMvdXNiL2hvc3QveGhjaS10ZWdyYS5jCmluZGV4IDg1ZjIzODE4ODNhZC4uODYyZjg1 ZjRjOGJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2ktdGVncmEuYworKysgYi9k cml2ZXJzL3VzYi9ob3N0L3hoY2ktdGVncmEuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUg PGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgogI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+CiAj aW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPHNvYy90ZWdyYS9wbWMuaD4KIAogI2lu Y2x1ZGUgInhoY2kuaCIKIApAQCAtOTc1LDIwICs5NzYsNiBAQCBzdGF0aWMgaW50IHRlZ3JhX3h1 c2JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAoSVNfRVJSKHRlZ3Jh LT5wYWRjdGwpKQogCQlyZXR1cm4gUFRSX0VSUih0ZWdyYS0+cGFkY3RsKTsKIAotCXRlZ3JhLT5o b3N0X3JzdCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXQoJnBkZXYtPmRldiwgInh1c2JfaG9zdCIp OwotCWlmIChJU19FUlIodGVncmEtPmhvc3RfcnN0KSkgewotCQllcnIgPSBQVFJfRVJSKHRlZ3Jh LT5ob3N0X3JzdCk7Ci0JCWRldl9lcnIoJnBkZXYtPmRldiwgImZhaWxlZCB0byBnZXQgeHVzYl9o b3N0IHJlc2V0OiAlZFxuIiwgZXJyKTsKLQkJZ290byBwdXRfcGFkY3RsOwotCX0KLQotCXRlZ3Jh LT5zc19yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0KCZwZGV2LT5kZXYsICJ4dXNiX3NzIik7 Ci0JaWYgKElTX0VSUih0ZWdyYS0+c3NfcnN0KSkgewotCQllcnIgPSBQVFJfRVJSKHRlZ3JhLT5z c19yc3QpOwotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gZ2V0IHh1c2Jfc3MgcmVz ZXQ6ICVkXG4iLCBlcnIpOwotCQlnb3RvIHB1dF9wYWRjdGw7Ci0JfQotCiAJdGVncmEtPmhvc3Rf Y2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJ4dXNiX2hvc3QiKTsKIAlpZiAoSVNfRVJS KHRlZ3JhLT5ob3N0X2NsaykpIHsKIAkJZXJyID0gUFRSX0VSUih0ZWdyYS0+aG9zdF9jbGspOwpA QCAtMTA1MiwxMSArMTAzOSw0OCBAQCBzdGF0aWMgaW50IHRlZ3JhX3h1c2JfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJZ290byBwdXRfcGFkY3RsOwogCX0KIAorCWlmICgh cGRldi0+ZGV2LnBtX2RvbWFpbikgeworCQl0ZWdyYS0+aG9zdF9yc3QgPSBkZXZtX3Jlc2V0X2Nv bnRyb2xfZ2V0KCZwZGV2LT5kZXYsCisJCQkJCQkJICJ4dXNiX2hvc3QiKTsKKwkJaWYgKElTX0VS Uih0ZWdyYS0+aG9zdF9yc3QpKSB7CisJCQllcnIgPSBQVFJfRVJSKHRlZ3JhLT5ob3N0X3JzdCk7 CisJCQlkZXZfZXJyKCZwZGV2LT5kZXYsCisJCQkJImZhaWxlZCB0byBnZXQgeHVzYl9ob3N0IHJl c2V0OiAlZFxuIiwgZXJyKTsKKwkJCWdvdG8gcHV0X3BhZGN0bDsKKwkJfQorCisJCXRlZ3JhLT5z c19yc3QgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0KCZwZGV2LT5kZXYsICJ4dXNiX3NzIik7CisJ CWlmIChJU19FUlIodGVncmEtPnNzX3JzdCkpIHsKKwkJCWVyciA9IFBUUl9FUlIodGVncmEtPnNz X3JzdCk7CisJCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gZ2V0IHh1c2Jfc3MgcmVz ZXQ6ICVkXG4iLAorCQkJCWVycik7CisJCQlnb3RvIHB1dF9wYWRjdGw7CisJCX0KKworCQllcnIg PSB0ZWdyYV9wb3dlcmdhdGVfc2VxdWVuY2VfcG93ZXJfdXAoVEVHUkFfUE9XRVJHQVRFX1hVU0JB LAorCQkJCQkJCXRlZ3JhLT5zc19jbGssCisJCQkJCQkJdGVncmEtPnNzX3JzdCk7CisJCWlmIChl cnIpIHsKKwkJCWRldl9lcnIoJnBkZXYtPmRldiwKKwkJCQkiZmFpbGVkIHRvIGVuYWJsZSBYVVNC QSBkb21haW46ICVkXG4iLCBlcnIpOworCQkJZ290byBwdXRfcGFkY3RsOworCQl9CisKKwkJZXJy ID0gdGVncmFfcG93ZXJnYXRlX3NlcXVlbmNlX3Bvd2VyX3VwKFRFR1JBX1BPV0VSR0FURV9YVVNC QywKKwkJCQkJCQl0ZWdyYS0+aG9zdF9jbGssCisJCQkJCQkJdGVncmEtPmhvc3RfcnN0KTsKKwkJ aWYgKGVycikgeworCQkJZGV2X2VycigmcGRldi0+ZGV2LAorCQkJCSJmYWlsZWQgdG8gZW5hYmxl IFhVU0JDIGRvbWFpbjogJWRcbiIsIGVycik7CisJCQlnb3RvIGRpc2FibGVfeHVzYmE7CisJCX0K Kwl9CisKIAl0ZWdyYS0+c3VwcGxpZXMgPSBkZXZtX2tjYWxsb2MoJnBkZXYtPmRldiwgdGVncmEt PnNvYy0+bnVtX3N1cHBsaWVzLAogCQkJCSAgICAgICBzaXplb2YoKnRlZ3JhLT5zdXBwbGllcyks IEdGUF9LRVJORUwpOwogCWlmICghdGVncmEtPnN1cHBsaWVzKSB7CiAJCWVyciA9IC1FTk9NRU07 Ci0JCWdvdG8gcHV0X3BhZGN0bDsKKwkJZ290byBkaXNhYmxlX3h1c2JjOwogCX0KIAogCWZvciAo aSA9IDA7IGkgPCB0ZWdyYS0+c29jLT5udW1fc3VwcGxpZXM7IGkrKykKQEAgLTEwNjYsNyArMTA5 MCw3IEBAIHN0YXRpYyBpbnQgdGVncmFfeHVzYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQogCQkJCSAgICAgIHRlZ3JhLT5zdXBwbGllcyk7CiAJaWYgKGVycikgewogCQlkZXZf ZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gZ2V0IHJlZ3VsYXRvcnM6ICVkXG4iLCBlcnIpOwot CQlnb3RvIHB1dF9wYWRjdGw7CisJCWdvdG8gZGlzYWJsZV94dXNiYzsKIAl9CiAKIAlmb3IgKGkg PSAwOyBpIDwgdGVncmEtPnNvYy0+bnVtX3R5cGVzOyBpKyspCkBAIC0xMDc2LDcgKzExMDAsNyBA QCBzdGF0aWMgaW50IHRlZ3JhX3h1c2JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKIAkJCQkgICBzaXplb2YoKnRlZ3JhLT5waHlzKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCF0ZWdy YS0+cGh5cykgewogCQllcnIgPSAtRU5PTUVNOwotCQlnb3RvIHB1dF9wYWRjdGw7CisJCWdvdG8g ZGlzYWJsZV94dXNiYzsKIAl9CiAKIAlmb3IgKGkgPSAwLCBrID0gMDsgaSA8IHRlZ3JhLT5zb2Mt Pm51bV90eXBlczsgaSsrKSB7CkBAIC0xMDkyLDcgKzExMTYsNyBAQCBzdGF0aWMgaW50IHRlZ3Jh X3h1c2JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCQkJImZhaWxlZCB0 byBnZXQgUEhZICVzOiAlbGRcbiIsIHByb3AsCiAJCQkJCVBUUl9FUlIocGh5KSk7CiAJCQkJZXJy ID0gUFRSX0VSUihwaHkpOwotCQkJCWdvdG8gcHV0X3BhZGN0bDsKKwkJCQlnb3RvIGRpc2FibGVf eHVzYmM7CiAJCQl9CiAKIAkJCXRlZ3JhLT5waHlzW2srK10gPSBwaHk7CkBAIC0xMTAzLDcgKzEx MjcsNyBAQCBzdGF0aWMgaW50IHRlZ3JhX3h1c2JfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKIAkJCQkgICAgZGV2X25hbWUoJnBkZXYtPmRldikpOwogCWlmICghdGVncmEtPmhj ZCkgewogCQllcnIgPSAtRU5PTUVNOwotCQlnb3RvIHB1dF9wYWRjdGw7CisJCWdvdG8gZGlzYWJs ZV94dXNiYzsKIAl9CiAKIAkvKgpAQCAtMTE5OSw2ICsxMjIzLDEyIEBAIHN0YXRpYyBpbnQgdGVn cmFfeHVzYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogZGlzYWJsZV9ycG06 CiAJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwogCXVzYl9wdXRfaGNkKHRlZ3JhLT5o Y2QpOworZGlzYWJsZV94dXNiYzoKKwlpZiAoISZwZGV2LT5kZXYucG1fZG9tYWluKQorCQl0ZWdy YV9wb3dlcmdhdGVfcG93ZXJfb2ZmKFRFR1JBX1BPV0VSR0FURV9YVVNCQyk7CitkaXNhYmxlX3h1 c2JhOgorCWlmICghJnBkZXYtPmRldi5wbV9kb21haW4pCisJCXRlZ3JhX3Bvd2VyZ2F0ZV9wb3dl cl9vZmYoVEVHUkFfUE9XRVJHQVRFX1hVU0JBKTsKIHB1dF9wYWRjdGw6CiAJdGVncmFfeHVzYl9w YWRjdGxfcHV0KHRlZ3JhLT5wYWRjdGwpOwogCXJldHVybiBlcnI7Cg==